1. 게시글에서 제목을 누르면
<a href="content_view?bId=${mvc_board.bId}">${mvc_board.bTitle}</a>
@RequestMapping("/content_view") 연결됨.
2. Controller
- @RequestMapping("/content_view") 매핑된 메소드 실행
@RequestMapping("/content_view")
public String content_view(HttpServletRequest request, Model model) {
logger.info("content_view start...");
//list.jsp에 content_view?bId=${mvc_board.bId}
model.addAttribute("request", request);
command = new BContentCommand();
command.execute(model);
return "content_view";
}
3. BContentCommand(Service)
- Controller의 model.addAttribute("request", request);
- 모델의 객체를 맵으로 받음.
- map에 저장된 request의 밸류값을 request에 저장.
package com.oracle.oMVCBoard.command;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.ui.Model;
import com.oracle.oMVCBoard.dao.BDao;
import com.oracle.oMVCBoard.dto.BDto;
public class BContentCommand implements BCommand {
@Override
public void execute(Model model) {
// key value
Map<String, Object> map = model.asMap();
//Controller의 model.addAttribute("request", request);
//모델의 객체를 맵으로 받음.
HttpServletRequest request = (HttpServletRequest) map.get("request");
//map에 저장된 request의 밸류값을 request에 저장.
int bId = Integer.parseInt(request.getParameter("bId"));
BDao dao = new BDao();
BDto board = dao.contentView(bId);
model.addAttribute("mvc_board", board);
}
}
4. BDao
- 게시글을 선택하면 무조건 조회수++ 되도록 upHit메소드 실행. 반환값은 필요없으므로 void로 작성
public BDto contentView(int bId) {
//조회수
upHit(bId);
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
BDto dto = null;
String sql = "select * from mvc_board where bId = ?";
try {
conn = dataSource.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, bId);
rs = pstmt.executeQuery();
if(rs.next()) {
int bId2 = rs.getInt("bId");
String bName = rs.getString("bName");
String bTitle = rs.getString("bTitle");
String bContent = rs.getString("bContent");
Timestamp bDate = rs.getTimestamp("bDate");
int bHit = rs.getInt("bHit");
int bGroup = rs.getInt("bGroup");
int bStep = rs.getInt("bStep");
int bIndent = rs.getInt("bIndent");
dto = new BDto(bId2, bName, bTitle, bContent, bDate, bHit, bGroup, bStep, bIndent);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return dto;
}
private void upHit(int bId) {
Connection conn = null;
PreparedStatement pstmt = null;
String sql = "update mvc_board set bHit=bHit+1 where bId=?";
int result = 0;
try {
conn = dataSource.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, bId);
result = pstmt.executeUpdate();
if(result > 0 ) System.out.println("upHit 성공");
else System.out.println("upHit 실패");
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("upHit error ->"+ e.getMessage());
} finally {
try {
if(pstmt != null) pstmt.close();
if(conn != null) conn.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
5. Controller에서 content_view.jsp로 이동
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="header.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="modify" method="post">
<input type="hidden" name="bId" value="${mvc_board.bId }">
<table border="1">
<tr>
<td>번호</td><td>${mvc_board.bId }</td>
</tr>
<tr>
<td>히트</td><td>${mvc_board.bHit }</td>
</tr>
<tr>
<td>이름</td><td><input type="text" name="bName" value="${mvc_board.bName }"></td>
</tr>
<tr>
<td>제목</td><td><input type="text" name="bTitle" value="${mvc_board.bTitle }"></td>
</tr>
<tr>
<td>내용</td>
<td><textarea rows="10" name="bContent">${mvc_board.bContent }</textarea></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="수정">
<a href="list">목록보기</a>
<a href="delete?bId=${mvc_board.bId }">삭제</a>
<a href="reply_view?bId=${mvc_board.bId }">답변</a></td>
</tr>
</table>
</form>
</body>
</html>
6. 응답화면
'IT > SpringDay' 카테고리의 다른 글
02.spring 게시판 오류 - java.sql.SQLSyntaxErrorException: ORA-00984: column not allowed here (0) | 2022.05.18 |
---|---|
02. Spring MVC 게시판 구현④ - 글작성 (0) | 2022.05.18 |
02. Spring MVC 게시판 구현 오류-javax.naming.NameNotFounudException:Name[jdbc/OracleDB] (0) | 2022.05.17 |
02. Spring MVC 게시판 구현② - 리스트 (0) | 2022.05.17 |
02. Spring MVC 게시판 구현① (0) | 2022.05.17 |