본문 바로가기
수업(국비지원)/JSP

[JSP] MVC MODEL2 방식 - 게시판(board, boardController, BoardDao)

by byeolsub 2023. 4. 20.

📌 boardController.java

package contrller;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import kic.mskim.MskimRequestMapping;
import kic.mskim.RequestMapping;

@WebServlet("/board/*")
public class boardController extends MskimRequestMapping {
private BoardDao dao = new BoardDao();

//http://localhost:8088/jsp3/board/writeForm
 @RequestMapping("writeForm")
 public String writeForm (HttpServletRequest request, HttpServletResponse response) {
	 String boardid = (String)request.getSession().getAttribute("boardid");
	 return "/view/board/writeForm.jsp";
 }

}

 


📌 board.java 생성

package model;

import java.util.Date;

public class Board {
	private int num;
	private String writer;
	private String pass;
	private String subject;
	private String content;
	private String file1;
	private String boardid;
	private Date regdate;
	private String ip;
	private int grp;
	private int grplevel;
	private int grpstep;
	//getter,setter, toString
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public String getWriter() {
		return writer;
	}
	public void setWriter(String writer) {
		this.writer = writer;
	}
	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 String getFile1() {
		return file1;
	}
	public void setFile1(String file1) {
		this.file1 = file1;
	}
	public String getBoardid() {
		return boardid;
	}
	public void setBoardid(String boardid) {
		this.boardid = boardid;
	}
	public Date getRegdate() {
		return regdate;
	}
	public void setRegdate(Date regdate) {
		this.regdate = regdate;
	}
	public String getIp() {
		return ip;
	}
	public void setIp(String ip) {
		this.ip = ip;
	}
	public int getGrp() {
		return grp;
	}
	public void setGrp(int grp) {
		this.grp = grp;
	}
	public int getGrplevel() {
		return grplevel;
	}
	public void setGrplevel(int grplevel) {
		this.grplevel = grplevel;
	}
	public int getGrpstep() {
		return grpstep;
	}
	public void setGrpstep(int grpstep) {
		this.grpstep = grpstep;
	}
@Override
	public String toString() {
		return "Board [num=" + num + ", writer=" + writer + ", pass=" + pass + ", subject=" + subject + ", content="
				+ content + ", file1=" + file1 + ", boardid=" + boardid + ", regdate=" + regdate + ", ip=" + ip
				+ ", grp=" + grp + ", grplevel=" + grplevel + ", grpstep=" + grpstep + "]";
	}
}

 

 

📌 boardController.java 추가

@RequestMapping("write")
	public String write(HttpServletRequest request, HttpServletResponse response) {
		String path = getServletContext().getRealPath("/") + "/upload/"; //파일 업로드 위치
		String ip = request.getRemoteAddr(); 
		File f = new File(path);
		if (!f.exists()) f.mkdirs();
		int size = 10 * 1024 * 1024;
		MultipartRequest multi = null;
		try {
			multi = new MultipartRequest(request, path, size, "UTF-8");
		} catch (IOException e) {
			e.printStackTrace();
		}
		Board board = new Board();
		board.setWriter(multi.getParameter("writer"));
		board.setPass(multi.getParameter("pass"));
		board.setSubject(multi.getParameter("subject"));
		board.setContent(multi.getParameter("content"));
		board.setFile1(multi.getFilesystemName("file1"));
		board.setIp(request.getLocalAddr());
		String boardid = (String)request.getSession().getAttribute("boardid");
		if(boardid == null) boardid="1";
		board.setBoardid(boardid);
		if(board.getFile1() == null) board.setFile1("");
		int num = dao.maxnum();
		board.setNum(++num);
		board.setGrp(num); //답변글 때문에 기입
		
		String msg = "게시물 등록 실패";
		String url = request.getContextPath() + "/board/writeForm";
		if(dao.insert(board)) { //true
			msg = "게시물이 등록되었습니다.";
			url = request.getContextPath() + "/board/list?boardid=" + boardid + "&pageNum=1";
		} 
		request.setAttribute("msg",msg);
		request.setAttribute("url", url);
		return "/view/alert.jsp";

	}

 


📌 BoardDao.java

package model;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class BoardDao {
	public int maxnum() {
		Connection conn = DBConnection.getConnection();
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		try {
			pstmt = conn.prepareStatement("select nvl(max(num),0) from board");
			rs = pstmt.executeQuery();
			if(rs.next()) {
				return rs.getInt(1);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			DBConnection.close(conn,pstmt,rs);
		}
		return 0;
	}
	public boolean insert(Board board) {
		Connection conn = DBConnection.getConnection();
		PreparedStatement pstmt = null;
		String sql = "insert into board (num,writer,pass,subject," 
		       + "content,file1,regdate,readcnt,grp,grplevel," 
			   + "grpstep,boardid,ip) "
			   + " values (?,?,?,?,?,?,sysdate,0,?,?,?,?,?)";
				try {
					pstmt = conn.prepareStatement(sql);
					pstmt.setInt(1,board.getNum());
					pstmt.setString(2,board.getWriter());
					pstmt.setString(3,board.getPass());
					pstmt.setString(4,board.getSubject());
					pstmt.setString(5,board.getContent());
					pstmt.setString(6,board.getFile1());
					pstmt.setInt(7,board.getGrp());
					pstmt.setInt(8,board.getGrplevel());
					pstmt.setInt(9,board.getGrpstep());
					pstmt.setString(10,board.getBoardid());
					pstmt.setString(11,board.getIp());
					return pstmt.executeUpdate() > 0;
				} catch (SQLException e) {
					e.printStackTrace();
				} finally {
					DBConnection.close(conn,pstmt, null);
				}
		return false;
	}
}