<TD WIDTH=395 ALIGN=LEFT>
<A HREF="BoardContent.jsp"><%=subject%></A>
</TD>
<TD WIDTH=395 ALIGN=LEFT>
<A HREF="BoardContent.jsp?rno=<%=rno%>"><%=subject%></A>
</TD>

<%@ page import="java.sql.*" %>
<%@ page import="java.net.URLEncoder" %>
int rno = Integer.parseInt(request.getParameter("rno"));
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs1 = null;
String encoded_key="";
try{
//------------------------ JDBC 설정
String jdbcUrl = "jdbc:sqlserver://(localhost):(port);encrypt=false;DatabaseName=(name);";
String jdbcId = "id";
String jdbcPw = "pw";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn = DriverManager.getConnection(jdbcUrl, jdbcId, jdbcPw);
String Query1 = "UPDATE dbo.board SET UsrRefer=UsrRefer+1 WHERE RcdNo=?";
pstmt = conn.prepareStatement(Query1);
pstmt.setInt(1, rno);
pstmt.executeUpdate();
// BoardList.jsp 문서로부터 전달받은 rno 값을 사용함
String Query2 = "SELECT UsrName, UsrMail, UsrSubject, UsrContent FROM dbo.board WHERE RcdNo=?";
pstmt = conn.prepareStatement(Query2);
pstmt.setInt(1, rno);
rs1 = pstmt.executeQuery(); // Query2 질의의 수행 결과로 추출된 레코드의 집합으로 구성
rs1.next();
String name = rs1.getString(1); // UsrName
String mail = rs1.getString(2); // UsrMail
String subject = rs1.getString(3).trim(); // UsrSubject
String content = rs1.getString(4).trim(); // UsrContent
// trim() : 문자열 좌우에 존재하는 공백 제거, 반드시 사용하는 것 아님
content = content.replaceAll("\r\n","<BR>");
// \r\n이 존재할 경우 <BR> 태그로 대체
// \r\n : Windows에서 줄 바꾸기 문자로 사용
// <BR> : HTML 개행 문자
// HTML은 \r\n 인식 X -> <BR> 대체
<TR>
<TD WIDTH=120 ALLIGN=CENTER><B>이름</B></TD>
<TD WIDTH=500>김미려</TD>
</TR> <TR>
<TD WIDTH=120 ALLIGN=CENTER><B>이름</B></TD>
<TD WIDTH=500><%=name%></TD>
</TR> <%
} // ---- end of try
catch (SQLException e){
e.printStackTrace();
} finally{
if (conn != null) {
//---------------------- 생성된 객체의 제거와 페이지 이동
rs1.close();
pstmt.close();
conn.close();
}
}
%>
</body>
BoardContent.jsp : 4개의 문서의 하이퍼링크 존재
BoardList.jsp 문서의 수정
<TD WIDTH=395 ALIGN=LEFT>
<A HREF="BoardContent.jsp?rno=<%=rno%>"><%=subject%></A>
</TD><TD WIDTH=395 ALIGN=LEFT>
<A HREF="BoardContent.jsp?rno=<%=rno%>&column=<%=column%>&key=<%=encoded_key%>"><%=subject%></A>
</TD>
// encode() 메소드에 의해 인코딩된 키워드가 저장된 encoded_key 변수가 key에 실려 전송됨
// 다른 문서로 이동하는 것이기 때문에 인코딩해줘야함
```<TD ALIGN=LEFT WIDTH=100>
<IMG SRC="../images/btn_new.gif" onClick="javascript:location.replace('BoardWrite.jsp')"; STYLE=CURSOR:HAND>
</TD><TD ALIGN=LEFT WIDTH=100>
<IMG SRC="../images/btn_new.gif" onClick="javascript:location.replace('BoardWrite.jsp?column=<%=column%>&key=<%=encoded_key%>')"; STYLE=CURSOR:HAND>
</TD>
```BoardWrite.jsp 문서의 수정
BoardWirte.jsp 문서는 키워드 검색을 위해 column, key를 BoardList.jsp 문서로부터 전달 받음 -> BoardWrite.jsp 문서 내에 키워드 검색을 처리하기 위한 구문이 추가 되어야함
클래스의 지정
<%@ page import="java.net.URLEncoder"%>
```검색 기능을 위한 변수 지정 및 추출
BoardList.jsp 문서에서 전달된 column, key 값 추출
만약 key =/= null -> encode()메소드 사용 -> 키워드 인코딩 -> 변수 encoded_key에 저장
key == null -> 키워드 검색 사용 X -> column, key 빈 문자열 지정
<%
String encoded_key = "";
//------------------------------- 키워드 데이터 추출
String column = request.getParameter("column");
if (column == null) column="";
String key = request.getParameter("key");
if (key!=null) {
encoded_key = URLEncoder.encode(key, "UTF-8");
} else{
key="";
}
[목록] 버튼의 하이퍼링크 수정
<TD WIDTH=110 ALIGN=LEFT>
<IMG SRC="../images/btn_list.gif" onClick="javascript:location.replace('BoardList.jsp')" STYLE=CURSOR:HAND>
</TD><TD WIDTH=110 ALIGN=LEFT>
<IMG SRC="../images/btn_list.gif" onClick="javascript:location.replace('BoardList.jsp?column=<%=column%>&key=<%=encoded_key%>')" STYLE=CURSOR:HAND>
</TD>
```[취소] 버튼의 하이퍼링크 수정
<TD WIDTH=400 ALIGN=CENTER>
<IMG SRC="../images/btn_save.gif" STYLE=CURSOR:HAND onClick="javascript:CheckForm(BoardWrite)">
<IMG SRC="../images/btn_cancle.gif" STYLE=CURSOR:HAND>
</TD><TD WIDTH=400 ALIGN=CENTER>
<IMG SRC="../images/btn_save.gif" STYLE=CURSOR:HAND onClick="javascript:CheckForm(BoardWrite)">
<IMG SRC="../images/btn_cancle.gif" onClick="javascript:location.replace('BoardList.jsp?column=<%=column%>&key=<%=encoded_key%>')" STYLE=CURSOR:HAND>
</TD>
```
저장은 변경할 필요 X -> 검색 기능 사용 여부에 관계 없이 새로 입력된 레코드는 제일 먼저 나타나야 함
BoardContent.jsp 문서의 수정
BoardContent.jsp 문서는 BoardList.jsp 문서로부터 column(검색 대상), key(키워드)를 전달 받음 → 아래와 같은 구문들 추가
키워드 데이터 추출
키워드 검색에 사용할 column, key 전달 받음 → 추출 해야함
key가 한글일 경우 대비 → encode()메소드 사용 → 키워드 인코딩 → encoded_key에 저장
검색 기능 사용 X → column, key 존재 X → 빈 문자열 지정
<%
String encoded_key = "";
//------------------------------- 키워드 데이터 추출
String column = request.getParameter("column");
if (column == null) column="";
String key = request.getParameter("key");
if (key!=null) {
encoded_key = URLEncoder.encode(key, "UTF-8");
} else{
key="";
}
BoardList.jsp 문서로의 하이퍼링크 수정
<TD WIDTH="310" ALIGN=LEFT>
<IMG SRC="../images/btn_list.gif" STYLE=CURSOR:HAND onClick="javascript:location.replace('BoardList.jsp')">
</TD><TD WIDTH="310" ALIGN=LEFT>
<IMG SRC="../images/btn_list.gif" STYLE=CURSOR:HAND onClick="javascript:location.replace('BoardList.jsp?column=<%=column%>&key=<%=encoded_key%>')">
</TD>
```
BoardReply.jsp 문서로의 하이퍼링크 수정
<IMG SRC="../images/btn_reply.gif" STYLE=CURSOR:HAND onClick="javascript:location.replace('BoardReply.jsp')">
</TD><IMG SRC="../images/btn_reply.gif" STYLE=CURSOR:HAND onClick="javascript:location.replace('BoardReply.jsp?rno=<%=rno%>&column=<%=column%>&key=<%=encoded_key%>')">
```BoardModify.jsp 문서로의 하이퍼링크 수정
<IMG SRC="../images/btn_mdfy.gif" STYLE=CURSOR:HAND onClick="javascript:location.replace('BoardModify.jsp')"><IMG SRC="../images/btn_mdfy.gif" STYLE=CURSOR:HAND onClick="javascript:location.replace('BoardModify.jsp?rno=<%=rno%>&column=<%=column%>&key=<%=encoded_key%>')">
```BoardDelete.jsp 문서로의 하이퍼링크 수정
<IMG SRC="../images/btn_del.gif" STYLE=CURSOR:HAND onClick="javascript:location.replace('BoardDelete.jsp')"><IMG SRC="../images/btn_del.gif" STYLE=CURSOR:HAND onClick="javascript:location.replace('BoardDelte.jsp?rno=<%=rno%>&column=<%=column%>&key=<%=encoded_key%>')">
```