package controller;
import java.io.IOException;
import java.time.LocalDate;
import dao.BoardRepository;
import dto.BoardDTO;
import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@WebServlet("/create")
public class create_Controller extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("create get");
RequestDispatcher ds = req.getRequestDispatcher("form.jsp");
ds.forward(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("create form");
// id="admin" name="kim"
String id = "admin";
String name = req.getParameter("name");
String subject = req.getParameter("subject");
String content = req.getParameter("content");
String regist_day = LocalDate.now().toString();
int hit = 0;
String ip = req.getRemoteAddr();
BoardDTO dto = new BoardDTO();
dto.setId(id);
dto.setName(name);
dto.setSubject(subject);
dto.setContent(content);
dto.setRegist_day(regist_day);
dto.setHit(hit);
dto.setIp(ip);
BoardRepository repository = BoardRepository.getInstance();
repository.create(dto);
resp.sendRedirect("readall?pageNum=1");
}
}
create_Controller.java
package controller;
import java.io.IOException;
import java.util.ArrayList;
import dao.BoardRepository;
import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@WebServlet("/readall")
public class readall extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
int pageNum = Integer.parseInt(req.getParameter("pageNum"));
BoardRepository repository = BoardRepository.getInstance();
ArrayList arr = repository.readall(pageNum);
int total_record = repository.getListCount();
req.setAttribute("arr", arr);
req.setAttribute("total_record", total_record);
req.setAttribute("pageNum", pageNum);
RequestDispatcher ds = req.getRequestDispatcher("boardview.jsp");
ds.forward(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
readall.java
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import dto.BoardDTO;
public class BoardRepository {
//싱글턴
private static BoardRepository repository = new BoardRepository();
private BoardRepository() {}
public static BoardRepository getInstance() {
return repository;
}
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs=null;
int limit = 5;
// create
//글의 총갯수 알아오는 함수
public int getListCount(){
int result = 0;
String sql = "select count(*) from board";
try {
conn = DBConnection.getConnection();
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
if (rs.next())
result = rs.getInt(1);
} catch (Exception ex) {
System.out.println("getListCount() 에러: " + ex);
}
return result;
}
public void create(BoardDTO board) {
try {
conn = DBConnection.getConnection();
String sql = "insert into board(id,name,subject,content,regist_day,hit,ip) values( ?, ?, ?, ?, ?, ?, ?)";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, board.getId());
pstmt.setString(2, board.getName());
pstmt.setString(3, board.getSubject());
pstmt.setString(4, board.getContent());
pstmt.setString(5, board.getRegist_day());
pstmt.setInt(6, board.getHit());
pstmt.setString(7, board.getIp());
pstmt.executeUpdate();
} catch (Exception ex) {
System.out.println("insertBoard() 에러 : " + ex);
}
}
// read
public ArrayList readall(int pageNum) {
int start = (pageNum - 1) * limit;
int index = start + 1;
int total_record = getListCount();
ArrayList allboard = new ArrayList();
String sql = "select * from board ORDER BY num DESC";
try {
conn = DBConnection.getConnection();
pstmt = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
rs = pstmt.executeQuery();
//
while (rs.absolute(index)) {
BoardDTO board = new BoardDTO();
board.setNum(rs.getInt("num"));
board.setId(rs.getString("id"));
board.setName(rs.getString("name"));
board.setSubject(rs.getString("subject"));
board.setContent(rs.getString("content"));
board.setRegist_day(rs.getString("regist_day"));
board.setHit(rs.getInt("hit"));
board.setIp(rs.getString("ip"));
allboard.add(board);
if (index < (start + limit) && index < total_record)
index++;
else
break;
}
} catch (Exception ex) {
System.out.println("getBoardList() 에러 : " + ex);
}
return allboard;
}
// update
// delete
}
dao.BoardRepository.java
package dao;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.DriverManager;
public class DBConnection {
public static Connection getConnection() throws SQLException, ClassNotFoundException {
Connection conn = null;
String url = "jdbc:mysql://localhost:3306/BookMarketDB";
String user = "root";
String password = "1234";
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, user, password);
return conn;
}
}
dao.DBConnection.java
package dto;
public class BoardDTO {
private int num;
private String id;
private String name;
private String subject;
private String content;
private String regist_day;
private int hit;
private String ip;
public BoardDTO() {
super();
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
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 getRegist_day() {
return regist_day;
}
public void setRegist_day(String regist_day) {
this.regist_day = regist_day;
}
public int getHit() {
return hit;
}
public void setHit(int hit) {
this.hit = hit;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
}
dto.BoardDTO.java