JAVA

게시물상세(model2.ver)

docc 2021. 7. 25. 12:48

수단 & 목표 분석

이 분석을 잘해야 구조를 잘세워 코드를 제대로 짤 수 있다.

- 프로젝트 일정표
- 분석 ( 목적을 설정하기 위한 작업 )
- 사용자 요구 분석 : 그들의 요구가 무엇인가.
- 목표설정 : 분석한 요구를 보고 목표를 설정
- 문제정의서
- use case D
- 스토리보드-화면설계 https://ovenapp.io/ 사이트 통해서 io 화면 설계해보자
- class D ( 아래에서 배울 내용 - UML )
- ERD ( 아래에서 배울 내용 )

게시물상세

게시물 상세 요청
1) 요청 업무처리
- 게시물상세.jsp (게시물 찾아 넘기기)
2) 요청 결과통보 ( html view 보냄)
- .jsp

>> 게시물목록창.jsp (상세로 넘어가도록 제목에 a태그)

<%
	ArrayList<게시물> 게시물들 = (ArrayList<게시물>)request.getAttribute("게시물들");
%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<center>
		<!-- 3. 목록출력 -->
		<h1>게시물목록</h1>
		<ul style="list-style: none">
			<%
				for(int i = 0; i<게시물들.size(); i++)
				{
					게시물 수집된게시물 = 게시물들.get(i);
			%>

			<%-- 3-1. 게시물 1개출력 --%>
			<li>
			<%= 수집된게시물.get번호() %>. &nbsp;&nbsp;
			<a href="게시물상세.jsp?no=<%=수집된게시물.get번호()%>"><%= 수집된게시물.get제목() %></a> 
			<%= 수집된게시물.get작성일().toString() %>&nbsp;&nbsp; 
			<%= 수집된게시물.get조회수() %> 
			</li>
<%
 	}
 %>
<br><a href="게시물등록준비.jsp">글쓰기</a><br>

</ul>
</center>

</body>
</html>

>> 게시물DAO.java

	public 게시물 찾다by번호(int 번호,boolean 조회수증가) {
		
		게시물 찾은게시물 = null;
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");

			Connection DB연결관리자 = DriverManager.getConnection(String.format("jdbc:mysql://%s:%s/%s?useUnicode=true", ConnectionInfo.DBIP,
									ConnectionInfo.DBPORT, ConnectionInfo.DBName),
									ConnectionInfo.UID, ConnectionInfo.PASSWORD);

			Statement 명령전달자 = DB연결관리자.createStatement();

			// 조회수증가
			if(조회수증가) {
				명령전달자.executeUpdate(String.format("update 게시물 set 조회수 = 조회수 + 1 where 번호 =  %d", 번호));
			}
			
			// 선택한 게시물 가져오기
			String 수집SQL = String.format("select * from 게시물 where 번호 = %d",번호);
			ResultSet 수집된표관리자 = 명령전달자.executeQuery(수집SQL);

			if(수집된표관리자.next()) {

				int 게시물번호 = 수집된표관리자.getInt("번호");
				String 제목 = 수집된표관리자.getString("제목");
				String 내용 = 수집된표관리자.getString("내용");
				java.sql.Date 작성일 = 수집된표관리자.getDate("작성일");
				int 조회수 = 수집된표관리자.getInt("조회수");
				
				찾은게시물 = new 게시물();
				찾은게시물.set번호(게시물번호);
				찾은게시물.set제목(제목);
				찾은게시물.set내용(내용);
				찾은게시물.set작성일(작성일);
				찾은게시물.set조회수(조회수);
				
			}

			수집된표관리자.close();
			DB연결관리자.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return 찾은게시물;
	}

>> 게시물상세.jsp

<%
String str번호 = request.getParameter("no");
int 번호 = Integer.valueOf(str번호);

게시물DAO dao = new 게시물DAO();
게시물 찾은게시물 = dao.찾다by번호(번호);

request.setAttribute("찾은게시물", 찾은게시물);

RequestDispatcher rd = request.getRequestDispatcher("게시물상세창.jsp");
rd.forward(request, response);
%>

>> 게시물상세창.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import="com.stone.board3_maven.boardmanage.게시물"%>
<%
게시물 찾은게시물 = (게시물)request.getAttribute("찾은게시물");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>게시물 상세보기</h1><br>
제목 <%=찾은게시물.get제목() %> <br>
내용 <textarea rows="10" cols="20" readonly="readonly"><%=찾은게시물.get내용() %></textarea> <br>
작성일 <%=찾은게시물.get작성일().toString() %>
조회수 <%=찾은게시물.get조회수() %>
</body>
</html>