[BbsDAO.java]
public Bbs getBbs(int bbsID) {
String SQL = "SELECT * FROM BBS WHERE bbsID =?";
try {
PreparedStatement ps = conn.prepareStatement(SQL);
ps.setInt(1, bbsID);
rs = ps.executeQuery();
while(rs.next()) {
Bbs bbs = new Bbs();
bbs.setBbsID(rs.getInt(1));
bbs.setBbsTitle(rs.getString(2));
bbs.setUserID(rs.getString(3));
bbs.setBbsDate(rs.getString(4));
bbs.setBbsContent(rs.getString(5));
bbs.setBbsAvailable(rs.getInt(6));
return bbs;
}
}catch(Exception e) {
e.printStackTrace();
}
return null;
}
- getBbs()는 게시글을 보여주는 함수이다.
- 매개변수를 bbsID로 받아와서 해당 bbsID의 데이터베이스 내용을 불러와서 rs에 담는다.
- 그 데이터를 BBS클래스를 객체화 시켜 데이터를 하나하나 넣어준다.
- bbs로 반환한다.
[view.jsp]
<%
String userID = null;
if(session.getAttribute("userID") != null){
userID = (String)session.getAttribute("userID");
}
int bbsID=0;
if(request.getParameter("bbsID")!=null){
bbsID= Integer.parseInt(request.getParameter("bbsID"));
}
if(bbsID==0){
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('유효하지 않은 글입니다.')");
script.println("location.href = 'bbs.jsp'");
script.println("</script>");
}
Bbs bbs = new BbsDAO().getBbs(bbsID);
%>
- bbs.jsp에서 url에 파라메터로 보낸 bbsID를 받는다.
- bbsID가 존재하지않으면 alert띄우고 bbs.jsp로 돌려보낸다.
[view.jsp]
<table class="table table-striped" style="border: 1px solid #dddddd">
<thead>
<tr>
<th colspan="3" style="background-color: #eeeeee;
text-align: center;">게시판 글 보기</th>
</tr>
</thead>
<tbody>
<tr>
<td style="width:20%;">글 제목</td>
<td colspan="2"><%= bbs.getBbsTitle()%> </td>
</tr>
<tr>
<td>작성자</td>
<td colspan="2"><%= bbs.getUserID() %> </td>
</tr>
<tr>
<td>작성일자</td>
<td colspan="2"><%=bbs.getBbsDate().substring(0,11) +
bbs.getBbsDate().substring(11,13) +"시"
+bbs.getBbsDate().substring(14,16) + "분"%>
</tr>
<tr>
<td>내용</td>
<td colspan="2" style="height:200px; text-align:left;">
<%= bbs.getBbsContent().replaceAll(" "," ")
.replaceAll("<", "<").replaceAll(">", ">")
.replaceAll("\n", "<br>")%></td>
</tr>
</tbody>
</table>
<a href="bbs.jsp" class="btn btn-primary">목록</a>
<% if(userID != null && userID.equals(bbs.getUserID())){ %>
<a href = "update.jsp?bbsID=<%= bbsID %>"
class="btn btn-primary">수정</a>
<a href = "deleteAction.jsp?bbsID=<%= bbsID %>"
class="btn btn-primary">삭제</a>
<%} %>
- 위에서 getBbs함수를 실행시켜 bbs에 넣었기 때문에 bbs.getBbsTitle()은 해당 글 제목이 된다.
- 작성자, 작성일자, 내용도 위와 같다.
- replaceAll() : 내용의 특수문자 처리(앞 문자열을 뒤의 문자열로 바꿈)
- 특수문자 처리 안해주면 내용도 제대로 안나올 뿐만 아니라 xss 공격에 취약하다.
- 예를들어 제목에 <script>로 스크립트를 넣으면 그게 그대로 인식되어 적용되어 버린다.
- 특수문자 처리는 bbs.jsp의 bbsTitle부분에도 해줘야한다.