-
(국비교육) 25 - 게시판 꾸미기개발/국비교육 2023. 7. 5. 16:59
■ 게시판 꾸미기
a 태그로 제목이 묶여 있다.
tr: hover 는 마우스를 선택 시 나오는 효과이다.
tr: hover 만 했을 경우 제목 효과는 적용되지 않는 것을 볼 수 있다.
제목도 동일한 효과를 주기 위해 a 태그로 묶인 tr: hover a 도 함께 묶어줘서 효과를 동시에 준다.
, 를 사용하여 반복없이 효과 주는 것이 가능하다.
오류 뜨는 이유는 list 를 만들지 않고 불렀기 때문이다.
따라서 list 를 통해 DTO 정보를 가져와야 함으로 이에 해당하는 DAO 를 생성해줘야 한다.
■ DBConnection 만들기
데이터 베이스에 있는 정보를 가져오기 위해
DB를 연결해줄 수 있는 DB Connection 클래스가 필요하다.
먼저 다운받은 mariadb jar 파일을 lib 안에 넣어줘 연결할 수 있는 환경을 만들어준다.
연결을 도와줄 DBConnection 클래스 생성해주기
싱글턴으로 만들어준다. 우선 getConnection() 메소드를 만든다.
getConnection() 은 커넥션을 가져오는 역할을 한다.
연결에 필요한 url, id, pw 를 선언하고 초기화해준다.
class.forname 을 통해 마리아 db 에 있는 드라이버를 가져와 쓴다.
여기서 drivermanager 에 있는 getConnection 메소드를 통해 url, id, pw 가져와서 연결한다.
참고로 이곳의 getConnetion 은 우리가 만들어준 메소드가 아닌 drivemanager 에 있는 static 메소드이다.
그렇기 때문에 객체 생성없이 사용이 가능하다.
dbConn 변수 선언해준다.
생성자는 private 으로 설정해준다.
왜냐하면 외부에서 함부로 객체를 생성하지 못하게 만들 것이다.
해당 메소드를 부르면 반환하는 메소드는 만들어준다.
메소드는 모두가 볼 수 있도록 public 으로 설정하고 객체 생성 없이 사용할 수 있도록 static 설정해준다.
만약 선언한 변수가 없다면 새로운 객체를 만들어준다.
그리고 메소드가 불리면 이를 리턴해준다.
그리고 동시에 작업이 수행되지 않도록 synchronized 를 붙여준다.
package com.poseidon.db; import java.sql.Connection; import java.sql.DriverManager; //static 싱글턴 public class DBConnection { private static DBConnection dbConn = null; //생성자 private DBConnection() {} //싱글턴 인스턴스를 반환하는 메소드 public synchronized static DBConnection getInstance() { if (dbConn == null) { dbConn = new DBConnection(); } return dbConn; } //getConn 접속 정보를 내보내줌 public Connection getConnection() { Connection conn = null; // jdbc:mariadb://localhost:3306/choongang; // jdbc:mariadb://127.0.0.1:3306/choongang; String url = "jdbc:mariadb://localhost:3306/choongang"; String id = "hjsong96"; String pw = "0614"; try { Class.forName("org.mariadb.jdbc.Driver"); //마리아db에 있는 드라이버 가져와 쓸거다. conn = DriverManager.getConnection(url, id, pw); } catch (Exception e) { e.printStackTrace(); } return conn; } }
■ AQuery ERD 만들기
AQuery ERD 를 통해 테이블을 만드는 쿼리를 간단하게 만들어본다.
테이블을 내용에 맞게 생성한 후 해당 내용을 복사한 후 mariadb 에서 붙여넣기 후 테이블 생성한다.
다음과 같이 생성된 것을 볼 수 있다.
테스트 데이터 생성해서 간단하게 100개 데이터 생성도 가능하다.
■ DAO 만들기
클래스 DAO 에서 게시글을 읽어오는 메소드를 만들어준다.
List<BoardDTO> 타입으로 list 객체를 만들어준다.
sql, conn, stmt, rs 값 선언해준다.
conn =
DBConnection.getInstance(). getConnection();
객체 가져오기(=new DBConnection()) 메소드 호출
stmt 를 통해 stmt 에 객체를 생성하고
쿼리 문장 실행한 값을 rs 에 저장
위에 가져올 sql 적어준다.
while 문으로 뽑아준다.
rs.next : rs 안에 동작(뽑을 데이터) 있으면 참/ 아니면 거짓
rs 한줄 값 뽑아준다.
dto에는 값을 한줄씩 저장해줘야 하는데 이를 rs 에서 가져온 값으로 get 메소드로 가져온다.
마지막으로 list.add(dto); 를 통해
finally 를 통해 뒤에서부터 닫아주기
* 에러해결
나의 경우 최종적으로 서버 실행 시 다음과 같이 뜨며 게시판이 뜨지 않았다.
알고보니 이전에 list 에 해당 내용을 담아주지 않아서 뜨지 않았다.
게시판 10개씩 나오게 하기 위해서 조건을 걸어준다.
게시판은 최신이 가장 앞에 나오므로 다음과 같이 역순으로 지정한다.
DESC : 역순
LIMIT : 10개씩
bno 의 이름으로 bno 숫자를 가져가요.
해당 내용이 string 이므로 int 타입으로 바꿔주는
아래 detail 오류는 자동으로 생성해준다.
detail 메소드를 실행하면 dto 가 나오게 만들어준다.
내용에 해당하는 속성을 추가해 준다.
게시판 내용은 필요 없으니 나열해서 써준다.
■ 뷰 사용하기
뷰를 사용하면 긴 sul 문장을 보다 짧고 간결하게 사용 가능하다.
위에 긴 sql 문장이 짧아진 것을 볼 수 있다.
CREATE VIEW 원하는view명 as
SELECT 가져올 컬럼명
FROM 테이블명 ORDER BY bno DESC LIMIT 10
100번째 글을 삭제하면 view 도 영향을 받아 99 ~ 90까지 표시된다.
누락되었던 bcontent 추가 되었으니 DTO 에 getter setter 메소드도 추가해준다.
DAO bcontent 추가해주기
detail.jsp 에 해당 내용도 추가해주기.
■ css 만들기
css 폴더 생성
폴더 생성 후 아래 css 파일 detail 만들어준다.
'개발 > 국비교육' 카테고리의 다른 글
(국비교육) 27 - 게시판 꾸미기 3 + summernote + 위지위그 + 자바스크립트 (0) 2023.07.07 (국비교육) 26 - 게시판 꾸미기 2 + executeUpdate + 자바스크립트 + 호이스팅 + var + let (0) 2023.07.06 (국비교육) 24 - 네트워크 + 아이피 주소 찍기 + 소켓 통신 + 채팅 만들기 + 서블릿으로 게시판 만들 (0) 2023.07.04 (국비교육) 23 - vs code 및 확장팩 설치 + 이미지/영상 연결 + 리스트 + 애플 홈페이지 만들기 + vs code 단축키 (0) 2023.07.03 (국비교육) 22 - 메모리 + UTF-8설정 + input type + (0) 2023.06.30