이번에는 글수정을 하는 modify.jsp 와 modify_ok.jsp 를 만들겠습니다.

글수정의 흐름을 간단하게 보자면

비밀번호를 제외한 제목,내용이 자동으로 입력되있어야 합니다.


우선 view.jsp 에 modify.jsp를 링크 시키겠습니다.

<input type=button value="수정" OnClick="window.location='modify.jsp?idx=<%=idx%>'">


파일을 생성하시고 코드를 추가시킵니다.


<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
 <title>게시판</title>
 </head>
 <body>
<table>
  <tr>
   <td>
    <table width="100%" cellpadding="0" cellspacing="0" border="0">
     <tr style="background:url('img/table_mid.gif') repeat-x; text-align:center;">
      <td width="5"><img src="img/table_left.gif" width="5" height="30" /></td>
      <td>수정</td>
      <td width="5"><img src="img/table_right.gif" width="5" height="30" /></td>
     </tr>
    </table>
   <table>
     <tr>
      <td>&nbsp;</td>
      <td align="center">제목</td>
      <td><input name="title" size="50" maxlength="100"></td>
      <td>&nbsp;</td>
     </tr>
     <tr height="1" bgcolor="#dddddd"><td colspan="4"></td></tr>
    <tr>
      <td>&nbsp;</td>
      <td align="center">이름</td>
      <td><input name="name" size="50" maxlength="50"></td>
      <td>&nbsp;</td>
     </tr>
      <tr height="1" bgcolor="#dddddd"><td colspan="4"></td></tr>
    <tr>
      <td>&nbsp;</td>
      <td align="center">비밀번호</td>
      <td><input type="password" password" size="50" maxlength="50"></td>
      <td>&nbsp;</td>
     </tr>
     <tr height="1" bgcolor="#dddddd"><td colspan="4"></td></tr>
     <tr>
      <td>&nbsp;</td>
      <td align="center">내용</td>
      <td><textarea name="memo" cols="50" rows="13"></textarea></td>
      <td>&nbsp;</td>
     </tr>
     <tr height="1" bgcolor="#dddddd"><td colspan="4"></td></tr>
     <tr height="1" bgcolor="#82B5DF"><td colspan="4"></td></tr>
     <tr align="center">
      <td>&nbsp;</td>
      <td colspan="2"><input type=button value="수정">
       <input type=button value="취소">
      <td>&nbsp;</td>
     </tr>
    </table>
   </td>
  </tr>
 </table>
</body

</html>

코드를 실행하면


modify.jsp의 화면입니다.


이제 코드를 삽입하겠습니다.


<%@ page import="java.sql.*"%> 

SQL문 사용을 위한 import


<script language = "javascript">  // 자바 스크립트 시작

function modifyCheck()
  {
   var form = document.modifyform;
   
   if( !form.password.value )
   {
    alert( "비밀번호를 적어주세요" );
    form.password.focus();
    return;
   }
   
  if( !form.title.value )
   {
    alert( "제목을 적어주세요" );
    form.title.focus();
    return;
   }
 
  if( !form.memo.value )
   {
    alert( "내용을 적어주세요" );
    form.memo.focus();
    return;
   }  
 		form.submit();
  } 

</script>

자바스크립트 내용


<% request.setCharacterEncoding("euc-kr"); Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url = "jdbc:odbc:board2"; String id = ""; String pass = ""; String name = ""; String password = ""; String title = ""; String memo = ""; int idx = Integer.parseInt(request.getParameter("idx")); try { Connection conn = DriverManager.getConnection(url,id,pass); Statement stmt = conn.createStatement(); String sql = "SELECT USERNAME, PASSWORD, TITLE, MEMO FROM board WHERE NUM=" + idx; ResultSet rs = stmt.executeQuery(sql); if(rs.next()){ name = rs.getString(1); password = rs.getString(2); title = rs.getString(3); memo = rs.getString(4); } rs.close(); stmt.close(); conn.close();

	}catch(SQLException e) {
		out.println( e.toString() );
	}
	 

%>


<form name=modifyform method=post action="modify_ok.jsp?idx=<%=idx%>">

폼을 추가시키고


<table>
     <tr>
      <td>&nbsp;</td>
      <td align="center">제목</td>
      <td><input type=text name=title size=50  maxlength=50 value="<%=title%>"></td>
      <td>&nbsp;</td>
     </tr>
     <tr height="1" bgcolor="#dddddd"><td colspan="4"></td></tr>
    <tr>
      <td>&nbsp;</td>
      <td align="center">이름</td>
      <td><%=name%><input type=hidden name=name size=50  maxlength=50 value="<%=name%>"></td>
      <td>&nbsp;</td>
     </tr>
      <tr height="1" bgcolor="#dddddd"><td colspan="4"></td></tr>
    <tr>
      <td>&nbsp;</td>
      <td align="center">비밀번호</td>
      <td><input type=password name="password" id="pass" size=50  maxlength=50 ></td>
      <td>&nbsp;</td>
     </tr>
     <tr height="1" bgcolor="#dddddd"><td colspan="4"></td></tr>
     <tr>
      <td>&nbsp;</td>
      <td align="center">내용</td>
      <td><textarea name=memo cols=50 rows=13><%=memo%></textarea></td>
      <td>&nbsp;</td>
     </tr>
     <tr height="1" bgcolor="#dddddd"><td colspan="4"></td></tr>
     <tr height="1" bgcolor="#82B5DF"><td colspan="4"></td></tr>
     <tr align="center">
      <td>&nbsp;</td>
      <td colspan="2"><input type="button" value="수정" OnClick="javascript:modifyCheck();">
      <input type=button value="취소" OnClick="javascript:history.back(-1)">
      <td>&nbsp;</td>
     </tr

</table>

중간에 보면 이름의 경우 type=hidden이 있습니다.

이것은 파라미터값은 갖고 있지만 사용자가 수정할수 없게 하기 위함입니다. 그리고 버튼에 링크를 걸어줍니다.


이제 list.jsp를 실행시켜서 수정단계까지 가보겠습니다.


제목, 이름, 내용이 잘 입력이 되어있습니다.

이름은 수정할 수 없게 되어있구요오키



이제 modify_ok.jsp파일을 열어서 코드를 삽입합니다.


<%@ page import="java.sql.*"%>  

SQL문을 사용하기 위한 import


<%

	Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
	String url = "jdbc:odbc:board2";
	String id = "";
	String pass = "";
	String password = "";
	
		try{
			
			request.setCharacterEncoding("euc-kr");
			int idx = Integer.parseInt(request.getParameter("idx"));
			String title = request.getParameter("title");
			String memo = request.getParameter("memo");
			String passw = request.getParameter("password");
		
			Connection conn = DriverManager.getConnection(url,id,pass);
			Statement stmt = conn.createStatement();
		
			String sql = "SELECT PASSWORD FROM board1 WHERE NUM=" + idx;
			ResultSet rs = stmt.executeQuery(sql);
		
		 if(rs.next()){
				password = rs.getString(1); 

   }

우선 modify에서 가져온 비밀번호를 저장합니다.

그리고 select문으로 비밀번호값을 가져옵니다.


              if(password.equals(passw)) {
				sql = "UPDATE board1 SET TITLE='" + title+ "' ,MEMO='"+ memo +"' WHERE NUM=" + idx;				
				stmt.executeUpdate(sql);
				
%>
				  <script language=javascript>
				  	self.window.alert("글이 수정되었습니다.");
				  	location.href="view.jsp?idx=<%=idx%>";
				  </script>
<%

			rs.close();
			stmt.close();
			conn.close();
			
		} else {
%>
			<script language=javascript>
				self.window.alert("비밀번호를 틀렸습니다.");
				location.href="javascript:history.back()";
			</script>
<%			
		}
		 
 } catch(SQLException e) {
	out.println( e.toString() );
} 

%>

비밀번호를 비교해서 Update문을 실행하거나 뒤로가기를 합니다. 글삭제랑 비슷한 코드이니 어려운점을 없으리라 생각됩니다.


modify_ok.jsp 최종코드

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <%@ page import="java.sql.*"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <% Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url = "jdbc:odbc:board2"; String id = ""; String pass = ""; String password = ""; try{ request.setCharacterEncoding("euc-kr"); int idx = Integer.parseInt(request.getParameter("idx")); String title = request.getParameter("title"); String memo = request.getParameter("memo"); String passw = request.getParameter("password"); Connection conn = DriverManager.getConnection(url,id,pass); Statement stmt = conn.createStatement(); String sql = "SELECT PASSWORD FROM board WHERE NUM=" + idx; ResultSet rs = stmt.executeQuery(sql); if(rs.next()){ password = rs.getString(1); } if(password.equals(passw)) { sql = "UPDATE board SET TITLE='" + title+ "' ,MEMO='"+ memo +"' WHERE NUM=" + idx; stmt.executeUpdate(sql); %> <script language=javascript> self.window.alert("글이 수정되었습니다."); location.href="view.jsp?idx=<%=idx%>"; </script> <% rs.close(); stmt.close(); conn.close(); } else { %> <script language=javascript> self.window.alert("비밀번호를 틀렸습니다."); location.href="javascript:history.back()"; </script> <% } } catch(SQLException e) { out.println( e.toString() ); } 

%>




비밀번호를 입력하지 않았을때


비밀번호가 틀렸을때


비밀번호가 맞아서 글이 수정되었습니다.


글 내용보기로 이동을 하고 잘 수정이 되었네요





이미지출처 : 판다의 이상한 블로그(http://ssppmm.tistory.com/)

Posted by 세이나린
,

이번에는 게시글 삭제하는 delete.jsp파일과 delete_ok.jsp파일을 만들어보겠습니다.

간단히 흐름을 보자면

글삭제 버튼을 누를시 비밀번호를 입력하게 되고 비밀번호가 맞다면 글삭제, 틀리면 다시 입력하는 화면으로 가게됩니다.


우선 delete.jsp 와 delete_ok.jsp 파일을 생성합니다.

그리고 내용을 입력하기전에 view.jsp파일을 열어서 버튼에 링크를 걸겠습니다.


<input type=button value="삭제" OnClick="window.location='delete.jsp?idx=<%=idx%>'">


OnClick부터 추가를 시켜놓습니다. 글삭제도 idx값이 필요하기 때문에 idx값을 Get방식으로 보냅니다.



이제 delete.jsp파일을 열고 코드를 추가시킵니다.


<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
 <title>게시판</title>
 </head>
 <body>
<table>
  <tr>
   <td>
    <table width="100%" cellpadding="0" cellspacing="0" border="0">
     <tr style="background:url('img/table_mid.gif') repeat-x; text-align:center;">
      <td width="5"><img src="img/table_left.gif" width="5" height="30" /></td>
      <td>삭제</td>
      <td width="5"><img src="img/table_right.gif" width="5" height="30" /></td>
     </tr>
    </table>
   <table>
     <tr>
      <td>&nbsp;</td>
      <td align="center">비밀번호</td>
      <td><input name="password" type="password" size="50" maxlength="100"></td>
      <td>&nbsp;</td>
     </tr>
     <tr height="1" bgcolor="#dddddd"><td colspan="4"></td></tr>
     <tr height="1" bgcolor="#82B5DF"><td colspan="4"></td></tr>
     <tr align="center">
      <td>&nbsp;</td>
      <td colspan="2"><input type=button value="삭제">
       <input type=button value="취소">
      <td>&nbsp;</td>
     </tr>
    </table>
   </td>
  </tr>
 </table>
</body

</html>

코드를 실행하면


이런 화면이 나오게 됩니다.

이제 코드를 추가시키 겠습니다.


<script language = "javascript">  // 자바 스크립트 시작

function deleteCheck()
  {
   var form = document.deleteform;
   
   if( !form.password.value )
   {
    alert( "비밀번호를 적어주세요" );
    form.password.focus();
    return;
   }
 		form.submit();
  } 

</script>

자바스크립트를 추가합니다. 비밀번호를 입력안했을때에 경고창을 띄웁니다.


<%
 	int idx = Integer.parseInt(request.getParameter("idx")); 

 %>

view.jsp에서 보낸 idx값을 저장합니다.


<form name=deleteform method=post action="delete_ok.jsp?idx=<%=idx%>">

table안쪽에 form을 생성하고 delete_ok에 idx값을 포함해서 전송합니다.


<input type=button value="삭제" OnClick="javascript:deleteCheck();"

<input type=button value="취소" OnClick="javascript:history.back(-1)">

버튼에도 링크를 걸어줍니다.


delete.jsp 최종코드

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<script language = "javascript">  // 자바 스크립트 시작

function deleteCheck()
  {
   var form = document.deleteform;
   
   if( !form.password.value )
   {
    alert( "비밀번호를 적어주세요" );
    form.password.focus();
    return;
   }
 		form.submit();
  }
 </script>
 <%
 	int idx = Integer.parseInt(request.getParameter("idx"));
 %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
 <title>게시판</title>
 </head>
 <body>
<table>
<form name=deleteform method=post action="delete_ok.jsp?idx=<%=idx%>">
  <tr>
   <td>
    <table width="100%" cellpadding="0" cellspacing="0" border="0">
     <tr style="background:url('img/table_mid.gif') repeat-x; text-align:center;">
      <td width="5"><img src="img/table_left.gif" width="5" height="30" /></td>
      <td>삭제</td>
      <td width="5"><img src="img/table_right.gif" width="5" height="30" /></td>
     </tr>
    </table>
   <table>
     <tr>
      <td>&nbsp;</td>
      <td align="center">비밀번호</td>
      <td><input name="password" type="password" size="50" maxlength="100"></td>
      <td>&nbsp;</td>
     </tr>
     <tr height="1" bgcolor="#dddddd"><td colspan="4"></td></tr>
     <tr height="1" bgcolor="#82B5DF"><td colspan="4"></td></tr>
     <tr align="center">
      <td>&nbsp;</td>
      <td colspan="2"><input type=button value="삭제" OnClick="javascript:deleteCheck();">
       <input type=button value="취소" OnClick="javascript:history.back(-1)">
      <td>&nbsp;</td>
     </tr>
    </table>
   </td>
  </tr>
  </form>
 </table>
</body

</html>



이번엔 delete_ok.jsp파일을 열고 소스를 추가시킵니다.

delete_ok는 html내용이 필요없기 때문에 바로 소스 설명들어가겠습니다.


<%@ page import="java.sql.*"%>

SQL문을 사용하기 위한 import


<% request.setCharacterEncoding("euc-kr"); Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url = "jdbc:odbc:board2"; String id = ""; String pass = ""; String password = null; int idx = Integer.parseInt(request.getParameter("idx")); String passw = request.getParameter("password"); try{ Connection conn = DriverManager.getConnection(url,id,pass); Statement stmt = conn.createStatement(); String sql = "SELECT PASSWORD FROM board WHERE NUM=" + idx; ResultSet rs = stmt.executeQuery(sql); if(rs.next()){ password = rs.getString(1); 

   }

파라미터값을 한글로 받아오고

디비를 연결하고

idx값을 받아오고

delete.jsp에서 입력한 비밀번호를 저장합니다.

그리고 SELECT문을 이용해서 데이터베이스에 있는 비밀번호를 가져와서 저장합니다.

passw는 delete에서 입력한 값

password는 데이터베이스에 있는 값

이제 passw 와 password를 비교하게 됩니다.


if(password.equals(passw)) { sql = "DELETE FROM board WHERE NUM=" + idx; stmt.executeUpdate(sql); %> <script language=javascript> self.window.alert("해당 글을 삭제하였습니다."); location.href="list.jsp"; </script> <% rs.close(); stmt.close(); conn.close(); } else { %> <script language=javascript> self.window.alert("비밀번호를 틀렸습니다."); location.href="javascript:history.back()"; </script> <% } } catch(SQLException e) { out.println( e.toString() ); } 

%>

둘다 String타입의 값이기 때문에 비교함수 equals를 사용해서 비교를 합니다.

if문을 사용해서 조건이 참이면 delete문을 사용해서 해당 글을 삭제하고 목록으로 돌아가고

비밀번호가 틀리다면 뒤로가기로 해서 다시 비밀번호를 입력하게 합니다.


이제 저장을 하고 list.jsp를 실행시켜서 해당 글을 삭제 해보겠습니다.


비밀번호를 입력하지 않고 삭제 버튼을 눌렀을때


비밀번호가 틀렸을때


비밀번호가 맞았을때


목록에 가니 테스트2 게시글이 삭제된걸 볼 수 있습니다.




delete_ok.jsp 최종코드

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="java.sql.*"%>  
			
<%
	request.setCharacterEncoding("euc-kr");
	Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
	String url = "jdbc:odbc:board2";
	String id = "";
	String pass = "";
	String password = null;
	int idx = Integer.parseInt(request.getParameter("idx"));
	String passw = request.getParameter("password");
	
	try{
				
		Connection conn = DriverManager.getConnection(url,id,pass);
		Statement stmt = conn.createStatement();
		
		String sql = "SELECT PASSWORD FROM board1 WHERE NUM=" + idx;
		ResultSet rs = stmt.executeQuery(sql);
		
		 if(rs.next()){
				password = rs.getString(1);
		 }
		 
		 if(password.equals(passw)) {
			   			
			sql = "DELETE FROM board1 WHERE NUM=" + idx;	
			stmt.executeUpdate(sql);	 
%>
  			<script language=javascript>
   				self.window.alert("해당 글을 삭제하였습니다.");
   				location.href="list.jsp";
  			</script>

<%
		rs.close();
		stmt.close();
		conn.close();
		
		 } else { 
%>
			<script language=javascript>
			 self.window.alert("비밀번호를 틀렸습니다.");
				location.href="javascript:history.back()";
			</script>
<%		
		 }
 	} catch(SQLException e) {
		out.println( e.toString() );
	} 

%>



이미지출처 : 판다의 이상한 블로그(http://ssppmm.tistory.com/)


Posted by 세이나린
,

이번에는 게시글 내용을 보는 view.jsp를 만들어 보겠습니다.

우선 코드를 보기전에 내용을 보는 흐름을 보고가겠습니다.

게시판 목록에서 클릭한 게시물의 내용을 봐야하기 때문에 어떤 게시물인지 판별하는 방법이 있어야합니다.

그 방법은 바로 list.jsp에서 찾았던 글번호의 정보를 넘겨주면 그 글번호의 내용들을 출력하면 됩니다.

그러기 위해 list.jsp를 약간 수정하겠습니다.


list.jsp 에서 수정할 부분

<td align="left"><%=title %></td>

이 title을 출력하는 부분을

<td align="left"><a href="view.jsp?idx=<%=idx%>"><%=title %></td>

제목에 링크를 거는 href 태그를 입력합니다. 

여기서 링크를 거는 주소를 잘보시면 view.jsp?idx=<%=idx%> 가 있는데

Get방식의 방법입니다. 주소뒤에 ? 를 붙인뒤 변수명=변수값 을 같이 써주면 그 정보가 해당 주소에 실려 가게되있습니다.


자 이제 데이터도 보냈으니 view.jsp 파일을 생성합니다. 그리고 기본틀 코드를 입력합니다.


<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
 <title>게시판</title>
 </head>
 <body>
<table>
  <tr>
   <td>
    <table width="100%" cellpadding="0" cellspacing="0" border="0">
     <tr style="background:url('img/table_mid.gif') repeat-x; text-align:center;">
      <td width="5"><img src="img/table_left.gif" width="5" height="30" /></td>
      <td>내 용</td>
      <td width="5"><img src="img/table_right.gif" width="5" height="30" /></td>
     </tr>
    </table>
   <table width="413">
     <tr>
      <td width="0">&nbsp;</td>
      <td align="center" width="76">글번호</td>
      <td width="319"></td>
      <td width="0">&nbsp;</td>
     </tr>
	 <tr height="1" bgcolor="#dddddd"><td colspan="4" width="407"></td></tr>
    <tr>
      <td width="0">&nbsp;</td>
      <td align="center" width="76">조회수</td>
      <td width="319"></td>
      <td width="0">&nbsp;</td>
     </tr>
	 <tr height="1" bgcolor="#dddddd"><td colspan="4" width="407"></td></tr>
    <tr>
      <td width="0">&nbsp;</td>
      <td align="center" width="76">이름</td>
      <td width="319"></td>
      <td width="0">&nbsp;</td>
     </tr>
     <tr height="1" bgcolor="#dddddd"><td colspan="4" width="407"></td></tr>
    <tr>
      <td width="0">&nbsp;</td>
      <td align="center" width="76">작성일</td>
      <td width="319"></td>
      <td width="0">&nbsp;</td>
     </tr>
      <tr height="1" bgcolor="#dddddd"><td colspan="4" width="407"></td></tr>
    <tr>
      <td width="0">&nbsp;</td>
      <td align="center" width="76">제목</td>
      <td width="319"></td>
      <td width="0">&nbsp;</td>
     </tr>
     <tr height="1" bgcolor="#dddddd"><td colspan="4" width="407"></td></tr>
                <tr>
      <td width="0">&nbsp;</td>
                   <td width="399" colspan="2" height="200">
                </tr>
     <tr height="1" bgcolor="#dddddd"><td colspan="4" width="407"></td></tr>
     <tr height="1" bgcolor="#82B5DF"><td colspan="4" width="407"></td></tr>
     <tr align="center">
      <td width="0">&nbsp;</td>
      <td colspan="2" width="399"><input type=button value="글쓰기">
	<input type=button value="답글">
	<input type=button value="목록">
	<input type=button value="수정">
	<input type=button value="삭제">
      <td width="0">&nbsp;</td>
     </tr>
    </table>
   </td>
  </tr>
 </table>
</body>
 </html>


실행을 해보면


현재는 데이터를 연결을 안시켜놔서 아무것도 출력되지 않네요


자 이제 추가시켜야 될 코드들을 생각해보면

1. list.jsp에서 보낸 idx값을 받아야 합니다.

2. 데이터베이스를 연결하고 받아온 idx값이 있는 데이터베이스값을 가져와서 출력을 합니다.

3. 그리고 게시물을 봤을때 조회수가 1이 증가하고 그 조회수가 데이터베이스에 수정되야합니다.


크게 이렇게 3가지 정도라고 볼 수 있겠네요.응응


그럼 코드로 보겠습니다. 

<%@ page import="java.sql.*"%>

<%

	Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

	String url = "jdbc:odbc:board2";

	String id = "";

	String pass = "";

	int idx = Integer.parseInt(request.getParameter("idx"));
try { Connection conn = DriverManager.getConnection(url,id,pass); Statement stmt = conn.createStatement(); String sql = "SELECT USERNAME, TITLE, MEMO, TIME, HIT FROM board WHERE NUM=" + idx; ResultSet rs = stmt.executeQuery(sql); if(rs.next()){ String name = rs.getString(1); String title = rs.getString(2); String memo = rs.getString(3); String time = rs.getString(4); int hit = rs.getInt(5); hit++; %>

이곳에서 특이한 곳은

int idx = Integer.parseInt(request.getParameter("idx"));
hit++;

이렇게 2개 정도 라고 생각됩니다.


먼저 int idx = Integer.parseInt(request.getParameter("idx")); 이곳을 보면

view.jsp에서 get방식으로 idx값을 보낸것을 기억하시길 바랍니다. 그 변수가 getParameter("idx") 이곳에 들어간거고

그 값을 idx에 넣은겁니다. 하지만 이렇게 get방식이든 post방식이든 넘어오게되면 데이터타입이 String이 됩니다.

그래서 형변환으로 int형으로 변환하는 Integer.paseInt를 사용한거랍니다.


그리고 list와는 달리 while문이 아닌 if문인 이유는 이곳에선 단 한개의 게시물정보만 출력하기때문입니다.


다음 hit++ 은 데이터베이스에서 idx값을 기준으로 검색해온 hit값을 +1 해준것인데 데이터베이스에는 현재

hit은 0이기 때문에 게시글이 조회되자마자 1이 되야 하므로 출력하기전에 +1을 시켰습니다.

참고로 현재 데이터베이스에는 hit이 0입니다.


<table width="413">
     <tr>
      <td width="0">&nbsp;</td>
      <td align="center" width="76">글번호</td>
      <td width="319"><%=idx%></td>
      <td width="0">&nbsp;</td>
     </tr>
	 <tr height="1" bgcolor="#dddddd"><td colspan="4" width="407"></td></tr>
    <tr>
      <td width="0">&nbsp;</td>
      <td align="center" width="76">조회수</td>
      <td width="319"><%=hit%></td>
      <td width="0">&nbsp;</td>
     </tr>
	 <tr height="1" bgcolor="#dddddd"><td colspan="4" width="407"></td></tr>
    <tr>
      <td width="0">&nbsp;</td>
      <td align="center" width="76">이름</td>
      <td width="319"><%=name%></td>
      <td width="0">&nbsp;</td>
     </tr>
     <tr height="1" bgcolor="#dddddd"><td colspan="4" width="407"></td></tr>
    <tr>
      <td width="0">&nbsp;</td>
      <td align="center" width="76">작성일</td>
      <td width="319"><%=time%></td>
      <td width="0">&nbsp;</td>
     </tr>
      <tr height="1" bgcolor="#dddddd"><td colspan="4" width="407"></td></tr>
    <tr>
      <td width="0">&nbsp;</td>
      <td align="center" width="76">제목</td>
      <td width="319"><%=title%></td>
      <td width="0">&nbsp;</td>
     </tr>
     <tr height="1" bgcolor="#dddddd"><td colspan="4" width="407"></td></tr>
                <tr>
      <td width="0"></td>
                   <td width="399" colspan="2" height="200"><%=memo %>

</tr>

이 곳을 보시면 중간 중간 <%=name%> 이런식으로 입력되있는게 보이는데 이것이 위에서 초기화한 변수값을 출력시키는 부분입니다. 해당되는 부분에 해당 변수를 입력해놓습니다.


<% 
 	sql = "UPDATE board SET HIT=" + hit + " where NUM=" +idx;
 	stmt.executeUpdate(sql);
 	rs.close();
 	stmt.close();
 	conn.close();
	 	} 
	}catch(SQLException e) {
}

%>

그 다음 증가시킨 조회수 값을 데이터베이스에 넣기 위한 sql문을 만들고 실행을 합니다.

값을 수정하는 것이기 때문에 Update문을 사용합니다.



<input type=button value="글쓰기" OnClick="window.location='write.jsp'">

<input type=button value="답글">

<input type=button value="목록" OnClick="window.location='list.jsp'">

<input type=button value="수정">

<input type=button value="삭제">

현재 구현해놓은 글쓰기와 목록에는 링크를 연결시켜 놓습니다.


이제 list.jsp를 실행시켜서 잘 보이는지 보겠습니다.


전과 다르게 제목부분에 링크가 걸린 표시가 나는군요


위쪽에 주소에 ?idx=1이라는 값을 확인 할수 있고 조회수가 1이 됐네요

Hit값이 1이 증가되게 바뀌었습니다.



다음은 view.jsp의 전체 코드입니다.

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <%@ page import="java.sql.*"%> <% Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url = "jdbc:odbc:board2"; String id = ""; String pass = ""; int idx = Integer.parseInt(request.getParameter("idx")); try { Connection conn = DriverManager.getConnection(url,id,pass); Statement stmt = conn.createStatement(); String sql = "SELECT USERNAME, TITLE, MEMO, TIME, HIT FROM board WHERE NUM=" + idx; ResultSet rs = stmt.executeQuery(sql); if(rs.next()){ String name = rs.getString(1); String title = rs.getString(2); String memo = rs.getString(3); String time = rs.getString(4); int hit = rs.getInt(5); hit++; %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>게시판</title> </head> <body> <table> <tr> <td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr style="background:url('img/table_mid.gif') repeat-x; text-align:center;"> <td width="5"><img src="img/table_left.gif" width="5" height="30" /></td> <td>내 용</td> <td width="5"><img src="img/table_right.gif" width="5" height="30" /></td> </tr> </table> <table width="413"> <tr> <td width="0">&nbsp;</td> <td align="center" width="76">글번호</td> <td width="319"><%=idx%></td> <td width="0">&nbsp;</td> </tr> <tr height="1" bgcolor="#dddddd"><td colspan="4" width="407"></td></tr> <tr> <td width="0">&nbsp;</td> <td align="center" width="76">조회수</td> <td width="319"><%=hit%></td> <td width="0">&nbsp;</td> </tr> <tr height="1" bgcolor="#dddddd"><td colspan="4" width="407"></td></tr> <tr> <td width="0">&nbsp;</td> <td align="center" width="76">이름</td> <td width="319"><%=name%></td> <td width="0">&nbsp;</td> </tr> <tr height="1" bgcolor="#dddddd"><td colspan="4" width="407"></td></tr> <tr> <td width="0">&nbsp;</td> <td align="center" width="76">작성일</td> <td width="319"><%=time%></td> <td width="0">&nbsp;</td> </tr> <tr height="1" bgcolor="#dddddd"><td colspan="4" width="407"></td></tr> <tr> <td width="0">&nbsp;</td> <td align="center" width="76">제목</td> <td width="319"><%=title%></td> <td width="0">&nbsp;</td> </tr> <tr height="1" bgcolor="#dddddd"><td colspan="4" width="407"></td></tr> <tr> <td width="0"></td> <td width="399" colspan="2" height="200"><%=memo %> </tr> <% sql = "UPDATE board SET HIT=" + hit + " where NUM=" +idx; stmt.executeUpdate(sql); rs.close(); stmt.close(); conn.close(); } }catch(SQLException e) { } %> <tr height="1" bgcolor="#dddddd"><td colspan="4" width="407"></td></tr> <tr height="1" bgcolor="#82B5DF"><td colspan="4" width="407"></td></tr> <tr align="center"> <td width="0">&nbsp;</td> <td colspan="2" width="399"><input type=button value="글쓰기" OnClick="window.location='write.jsp'"> <input type=button value="답글"> <input type=button value="목록" OnClick="window.location='list.jsp'"> <input type=button value="수정"> <input type=button value="삭제"> <td width="0">&nbsp;</td> </tr> </table> </td> </tr> </table> </body>

</html>



이미지출처 : 판다의 이상한 블로그(http://ssppmm.tistory.com/)


Posted by 세이나린
,