KDT/WEB

231228 WEB - JSP17(MVC)

001cloudid 2023. 12. 28. 12:50
728x90

MVC

<%@page import="board.BoardDTO"%>
<%@page import="board.BoardDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>board/03content.jsp</title>
</head>
<body>
<%
//요청 주소 : content.jsp?num=1
//서버에 request에 "num"요청 파라미터값을 저장 → 가져와서 변수 int num에 저장
int num = Integer.parseInt(request.getParameter("num"));

//BoardDAO 객체생성
BoardDAO boardDAO = new BoardDAO();

//조회수 증가
//리턴할형 없음. updateReadcount(int num) 메소드 정의
//BoardDTO boardDTO = boardDTO.updateReadcount(num) 메소드 호출
boardDAO.updateReadcount(num);

//BoardDTO 리턴할 형, getBoard()(int num) 메소드 정의
//BoardDTO boardDTO = BoardDTO getBoard(num값) 메소드 호출
BoardDTO getBoard = boardDAO.getBoard(num);

//로그인 표시값 세션에서 가져오기
String id = (String)session.getAttribute("id");
%>


<h1>board/content.jsp</h1>
<h1>글 내용 보기[아이디 : <%=id %>]</h1>
<table border="1">
<tr><td>글번호</td><td><%=getBoard.getNum() %></td></tr>
<tr><td>작성자</td><td><%=getBoard.getName() %></td></tr>
<tr><td>조회수</td><td><%=getBoard.getReadcount() %></td></tr>
<tr><td>작성날짜</td><td><%=getBoard.getDate() %></td></tr>
<tr><td>제목</td><td><%=getBoard.getContent() %></td></tr>
<tr><td>내용</td><td><%=getBoard.getContent() %></td></tr>
<tr><td colspan="2">
<%
//로그인 표시값이 있으면
if(id!=null){
//로그인 표시값, 글쓴이가 일치하면 글 수정, 글 삭제
if(id.equals(getBoard.getName()) || id.equals("admin")){
%>
<a href="update.jsp?num=<%=getBoard.getNum()%>">글수정</a>
<a href="delete.jsp?num=<%=getBoard.getNum()%>">글삭제</a>
<%}
}%>
<a href="list.jsp">목록</a></td></tr>
</table>
</body>
</html>

 

 

BoardDAO

public void updateReadcount(int num) {
System.out.println("BoardDAO updateReadcount()");
BoardDTO boardDTO = new BoardDTO();

try {
Connection con = getConnection();

String sql = "update board set readcount = readcount+1 where num = ?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setInt(1, num);
ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}

 

<%@page import="board.BoardDTO"%>
<%@page import="board.BoardDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>board/04update.jsp</title>
</head>
<body>
<h1>board/update.jsp</h1>
<h1>게시판 글 수정</h1>
<%
//update.jsp?num=1
// 서버에 request에 "num" 요청 파라미터값을 저장가져와서 변수 int num에 저장
int num = Integer.parseInt(request.getParameter("num"));
//BoardDAO 객체생성
BoardDAO boardDAO = new BoardDAO();
//BoardDTO getBoard = getBoard(num) 메소드 호출
BoardDTO getBoard = boardDAO.getBoard(num);

%>
<form action="updatePro.jsp" method="post">
<input type="hidden" name="num" value="<%=num %>">
<table border="1">
<tr><td>작성자</td><td><input type="text" name="name" value="<%=getBoard.getName() %>" readonly></td></tr>
<tr><td>제목</td><td><input type="text" name="subject" value="<%=getBoard.getSubject()%>"></td></tr>
<tr><td>내용</td><td><textarea name="content" rows="10" cols="20"><%=getBoard.getContent()%></textarea></td></tr>
<tr><td colspan="2"><input type="submit" value="글수정"></td></tr>
</table>
</form>
</body>
</html>

 

<%@page import="board.BoardDAO"%>
<%@page import="board.BoardDTO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>board/04updatePro.jsp</title>
</head>
<body>
<h1>board/updatePro.jsp</h1>
<h1>글 수정 처리 작업</h1>
<%
//request 한글처리
request.setCharacterEncoding("utf-8");
//사용자가 수정할 내용을 적고 수정버튼을 클릭하면 서버에 전달 request내장객체에 저장
//request num, name, subject, content 파라미터에 가져와서 변수에 저장
int num = Integer.parseInt(request.getParameter("num"));
String name = request.getParameter("name");
String subject = request.getParameter("subject");
String content = request.getParameter("content");
//BoardDTO 객체 생성
BoardDTO boardDTO = new BoardDTO();
//set메소드 호출해서 변수 내용을 저장
boardDTO.setNum(num);
boardDTO.setName(name);
boardDTO.setSubject(subject);
boardDTO.setContent(content);
System.out.println("BoardDTO 주소 : " + boardDTO);
//BoardDAO 객체 생성
BoardDAO boardDAO = new BoardDAO();
//리턴할 형 없음. updateBoard(BoardDTO 변수) 메소드 정의
System.out.println("BoardDAO 주소 : " + boardDAO);
boardDAO.updateBoard(boardDTO);

response.sendRedirect("list.jsp");
%>
</body>
</html>

 

BoardDAO

//리턴할 형 없음. updateBoard(BoardDTO 변수) 메소드 정의
public void updateBoard(BoardDTO boardDTO) {
System.out.println("BoardDAO updateBoard()");

try {
Connection con = getConnection();

String sql = "update board set subject=?, content=? where num = ?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, boardDTO.getSubject());
ps.setString(2, boardDTO.getContent());
ps.setInt(3, boardDTO.getNum());
ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
}

 

<%@page import="board.BoardDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>board/delete.jsp</title>
</head>
<body>
<%
//delete.jsp?num=1
//서버에 request에 "num" 요청 파라미터값을 저장한 후 가져와서 변수 int num저장
int num = Integer.parseInt(request.getParameter("num"));

//BoardDAO 객체생성
BoardDAO boardDAO = new BoardDAO();
//리턴할형 없음. deleteBoard(num) 메소드 정의
//deleteBoard(num) 메소드 호출
boardDAO.deleteBoard(boardDAO.getBoard(num));

response.sendRedirect("list.jsp");
%>
</body>
</html>

 

BoardDAO

public void deleteBoard(BoardDTO boardDTO) {
System.out.println("deleteBoard()");
try {
Connection con = getConnection();

String sql = "delete from board where num=?";
PreparedStatement ps = con.prepareCall(sql);
ps.setInt(1, boardDTO.getNum());
ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
}

 

BoardDAO 정리

	//Connection, ResultSet, PreparedStatement → 지역변수에서 전역변수로
	Connection connection = null;
	ResultSet rs = null;
	PreparedStatement pstmt = null;
	
	public Connection getConnection() {
		Connection connection = null;
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
			
			String url = "jdbc:mysql://localhost:3306/jspdb1?serverTimezone=Asia/Seoul";
			String user = "root";
			String password = "1234";
			connection = DriverManager.getConnection(url, user, password);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return connection;
	}//

 

728x90

'KDT > WEB' 카테고리의 다른 글

240104 WEB - JSP19(MVC)  (0) 2024.01.04
240102 WEB - JSP18(MVC, 커넥션풀)  (0) 2024.01.02
231226 WEB - JSP16(MVC)  (0) 2023.12.26
231221 WEB - JSP15(MVC)  (0) 2023.12.21
231219 WEB - JSP14(MVC)  (0) 2023.12.19