728x90
반응형
데이터를 전송할 객체 만들기
BoardDTO.java
package com.itwillbs.board;
import java.sql.Date;
public class boardDTO {
// DTO (Data Transfer Object) 데이터 DB 전송 객체
private int bno; // 게시판 글번호 (PK)
private String name; // 글쓴이
private String pass; // 글 비밀번호
private String subject; // 글 제목
private String content; // 글 내용
private int readcount; // 조회수
private int re_ref; // 답글 - 글 그룹번호
private int re_lev; // 답글 - 글 들여쓰기
private int re_seq; // 답글 - 글 순서
private Date date; // 글 작성일
private String ip; // 글 작성자 ip 주소
private String file; // 첨부파일
}
alt + shift + s + r 로 getter setter 만들어준다.
alt + shift + s + s 로 generate to String 해줌
=> 한번에 해당 객체의 정보를 출력해 준다.
=> 한번에 BoardDTO 객체에 저장된 정보 확인용
package com.itwillbs.board;
import java.sql.Date;
public class BoardDTO {
// DTO (Data Transfer Object) 데이터 DB 전송 객체
private int bno; // 게시판 글번호 (PK)
private String name; // 글쓴이
@Override
public String toString() {
//한번에 해당 객체의 정보를 출력
return "boardDTO [bno=" + bno + ", name=" + name + ", pass=" + pass + ", subject=" + subject + ", content="
+ content + ", readcount=" + readcount + ", re_ref=" + re_ref + ", re_lev=" + re_lev + ", re_seq="
+ re_seq + ", date=" + date + ", ip=" + ip + ", file=" + file + "]";
}
public int getBno() {
return bno;
}
public void setBno(int bno) {
this.bno = bno;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public int getReadcount() {
return readcount;
}
public void setReadcount(int readcount) {
this.readcount = readcount;
}
public int getRe_ref() {
return re_ref;
}
public void setRe_ref(int re_ref) {
this.re_ref = re_ref;
}
public int getRe_lev() {
return re_lev;
}
public void setRe_lev(int re_lev) {
this.re_lev = re_lev;
}
public int getRe_seq() {
return re_seq;
}
public void setRe_seq(int re_seq) {
this.re_seq = re_seq;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public String getFile() {
return file;
}
public void setFile(String file) {
this.file = file;
}
private String pass; // 글 비밀번호
private String subject; // 글 제목
private String content; // 글 내용
private int readcount; // 조회수
private int re_ref; // 답글 - 글 그룹번호
private int re_lev; // 답글 - 글 들여쓰기
private int re_seq; // 답글 - 글 순서
private Date date; // 글 작성일
private String ip; // 글 작성자 ip 주소
private String file; // 첨부파일
}
<writePro.jsp>
<body>
<h1>writePro.jsp</h1>
<%
//한글처리
request.setCharacterEncoding("UTF-8");
//자바빈 객체 => BoardDTO(Data Transfer Object) (=BoardBean)
//전달된 파라메터를 저장 (액션태그로 -> 자바빈 객체 필요!)
%>
<jsp:useBean id="dto" class="com.itwillbs.board.BoardDTO" />
<jsp:setProperty property="*" name = "dto" />
</body>
dto 객체에 IP추가 추가 저장
dto.setIp(request.getRemoteAddr());
글쓰기 정보를 입력 받아 온 것.
데이터(DB) 처리 객체 하나 생성
BoardDAOjava
package com.itwillbs.board;
public class BoardDAO {
// DAO (Data Access Object)
}
public class BoardDAO {
// DAO (Data Access Object) : 데이터(DB) 처리 객체
//공통 변수 선언
private Connection con = null;
private PreparedStatement pstmt = null;
private ResultSet rs = null;
private String sql = " ";
//생성자
public BoardDAO() {
System.out.println("DAO : 생성자 호출(객체 생성)");
System.out.println("DAO : DB연결에 대한 모든 처리 준비 완료");
}
//디비 연결 메서드 ()
private Connection getConnection() throws Exception {
final String DRIVER = "com.mysql.cj.jdbc.Driver";
final String DBURL = "jdbc:mysql://localhost:3306/jspdb";
final String DBID = "root";
final String DBPW = "1234";
Class.forName(DRIVER);
//2.디비 연결
con = DriverManager.getConnection(DBURL, DBID, DBPW);
System.out.println(" DAO : 디비 연결 성공");
System.out.println(" DAO : " + con);
//연결정보를 위의 con에 저장하겠다
return con;
}
// 글쓰기 메서드 - insertBoard()
public void insertBoard() {
System.out.println(" DAO : insertBoard() 호출");
}
// 글쓰기 메서드 - insertBoard()
} //class
Mysql 내장함수 max(bno)
(= 글 번호 계산 하는 것 => 번호 최대값 + 1)
use jspdb;
select max(bno) from itwill_board;
max(bno)
[Oracle] 오라클 INSERT 1씩 증가시키는 방법 (MAX+1, 시퀀스)
오라클에서는 칼럼의 값을 자동으로 증가시키는 기능이 없기 때문에 INSERT 작업 시 직접 일련번호를 매번 후 데이터를 입력해야 한다. 가장 많이 사용하는 방법은 일련번호 칼럼의 마지막 값을
gent.tistory.com
BoardDAO.java
package com.itwillbs.board;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class BoardDAO {
// DAO (Data Access Object) : 데이터(DB) 처리 객체
//공통 변수 선언
private Connection con = null;
private PreparedStatement pstmt = null;
private ResultSet rs = null;
private String sql = " ";
//생성자
public BoardDAO() {
System.out.println("DAO : 생성자 호출(객체 생성)");
System.out.println("DAO : DB연결에 대한 모든 처리 준비 완료");
}
//디비 연결 메서드 ()
private Connection getConnection() throws Exception {
final String DRIVER = "com.mysql.cj.jdbc.Driver";
final String DBURL = "jdbc:mysql://localhost:3306/jspdb";
final String DBID = "root";
final String DBPW = "1234";
Class.forName(DRIVER);
//2.디비 연결
con = DriverManager.getConnection(DBURL, DBID, DBPW);
System.out.println(" DAO : 디비 연결 성공");
System.out.println(" DAO : " + con);
//연결정보를 위의 con에 저장하겠다
return con;
}
// 글쓰기 메서드 - insertBoard() - try catch
public void insertBoard(BoardDTO dto) {
System.out.println(" DAO : insertBoard() 호출");
int bno = 0; //글번호 저장
try {
//1.2 디비 연결
con = getConnection();
//3. sql 작성(글번호 계산) & psmtm 객체
sql = "select max(bno) from itwill_board";
pstmt = con.prepareStatement(sql);
//4. sql 실행
rs = pstmt.executeQuery();
//5. 데이터 처리 (= 글 번호 계산 하는 것 => 번호 최대값 + 1)
//* rs.next() - true/false 구분
// => 워크벤치에 실행 (select)
// 결과 | > (삼각형 커서) : true (커서 이동 가능, sql, null 상관없음)
// 결과 * , 커서 x : false (커서 이동이 불가능)
if(rs.next()) {
// bno = rs.getInt("max(bno)")+1; // 컬럼명
bno = rs.getInt(1)+1; //컬럼인덱스
// => rs.getInt() : 리턴데이터의 값이 sql-null 일 경우 0을 리턴
}
System.out.println("DAO : 글번호 = " + bno);
//3.sql 작성 (insert) & pstmt 객체
sql = "insert into itwill_board(bno,name,pass,subject,content,"
+ "readcount,re_ref,re_lev,re_seq,date,ip,file) " //줄 바꿀 때 공백 하나 넣어라
+ "values(?,?,?,?,?,?,?,?,?,now(),?,?)";
pstmt = con.prepareStatement(sql);
//???
pstmt.setInt(1, bno);
pstmt.setString(2, dto.getName());
pstmt.setString(3, dto.getPass());
pstmt.setString(4, dto.getSubject());
pstmt.setString(5, dto.getContent());
pstmt.setInt(6, 0); // 조회수 0 초기화
pstmt.setInt(7, bno); // ref 그룹번호 (bno 초기화)
pstmt.setInt(8, 0); // lev 들여쓰기 (0 초기화)
pstmt.setInt(9, 0); // seq 순서 (0 초기화)
pstmt.setString(10, dto.getIp());
pstmt.setString(11, dto.getFile());
//4.sql 실행
pstmt.executeUpdate();
System.out.println("DAO : 게시판 글쓰기 완료 !");
} catch (Exception e) {
e.printStackTrace();
}
}
//글쓰기 메서드 - insertBoard()
} //class
boardList 만들기
<writePro.jsp>
저장된 글정보 (DTO)를 DB에 저장
BoardDAO 객체 생성
BoardDAO dao = new BoardDAO();
글쓰기 메서드 호출
dao.insertBoard(dto);
리스트 페이지 이동
response.sendRedirect("boardList.jsp");
BoardDAO.java 에서 글정보 가져오는 객체 만들기
<BoardDAO.java>
글 정보 가져오기 - getBoardList()
public ArrayList getBoardList() {
// 글정보를 모두 저장하는 배열 만들기
ArrayList boardList = new ArrayList();
return boardList;
}
글정보를 모두 저장하는 배열 만들기
public ArrayList getBoardList() {
System.out.println("DAO : getBoardList() 호출");
// 글정보를 모두 저장하는 배열 만들기
ArrayList boardList = new ArrayList();
// 1.2. 디비 연결
try {
con = getConnection();
// 3. sql 작성(select) & pstmt 객체
sql = "select * from itwill_board";
pstmt = con.prepareStatement(sql);
// 4. sql 실행
rs = pstmt.executeQuery();
// 5. 데이터 처리(DB->DTO에 저장->list에 전달 & 저장)
while(rs.next()) {
BoardDTO dto = new BoardDTO();
dto.setBno(rs.getInt("bno"));
dto.setContent(rs.getString("content"));
dto.setDate(rs.getDate("date"));
dto.setFile(rs.getString("file"));
dto.setName(rs.getString("name"));
dto.setPass(rs.getString("pass"));
dto.setRe_lev(rs.getInt("re_lev"));
dto.setRe_ref(rs.getInt("re_ref"));
dto.setRe_seq(rs.getInt("re_seq"));
dto.setReadcount(rs.getInt("readcount"));
dto.setSubject(rs.getString("subject"));
dto.setIp(rs.getString("ip"));
// DTO -> List
boardList.add(dto);
}//while
System.out.println("DTO : 게시판 목록 저장 완료!");
} catch (Exception e) {
e.printStackTrace();
}
return boardList;
}
// 글 정보 가져오기 - getBoardList()
} //class
방금 만든 게시판 정보를 가져오는 메서드
<boardList.jsp>
ArrayList boardList = dao.getBoardList();
게시판 정보 출력
%>
<h3><a href = "writeForm.jsp">글쓰기</a></h3>
<table border ="1">
<tr>
<td>번호</td>
<td>제목</td>
<td>작성자</td>
<td>조회수</td>
<td>작성일</td>
<td>ip</td>
</tr>
<% for(int i = 0;i<boardList.size();i++){
BoardDTO dto = (BoardDTO) boardList.get(i);
%>
<tr>
<td><%=dto.getBno() %></td>
<td><%=dto.getSubject() %></td>
<td><%=dto.getName() %></td>
<td><%=dto.getReadcount() %></td>
<td><%=dto.getDate() %></td>
<td><%=dto.getIp() %></td>
</tr>
<% }%>
</table>
글쓰기 누르면 이렇게 목록이 늘어남
게시판 글쓰기
%>
<h3><a href = "writeForm.jsp">글쓰기</a></h3>
%>
728x90
반응형
'Spring > Model1 _2(MVC)' 카테고리의 다른 글
0915 JSP - 페이징 처리 (3) - 삭제 , 답글 (0) | 2022.09.15 |
---|---|
0915 JSP - 페이징 처리(2) - 조회수 증가, 글 수정하기 (0) | 2022.09.15 |
0901 JSP - 게시판 만들기 (0) | 2022.09.01 |
0901 JSP - admin 관리자 창 ~ 컬렉션 (0) | 2022.09.01 |
0830 JSP - 회원 정보 삭제 (0) | 2022.08.30 |