Server Side Script/JAVA.Servlet.JSP

jsp 게시판 소스 강좌

미련곰 2007. 8. 20. 17:13

.. WebDox 의 JSP 강좌
. [JAVA]클래스변수와 환경 변수
. [JAVA]Jakarta 프로젝트의 Regexp (정규식) 패키지 사용하기
. [JDBC]JDBC를 익히자
. [JDBC]Database 접속을 Pool로 관리하자
. [EJB/J2EE]J2EE(Java 2 Enterprise Edition) 환경 소개
. [EJB/J2EE]오라이온 서버(Orion Server) 설치 및 J2EE 애플리케이션의 배치(deployment)
. [EJB/J2EE]JavaMail 설치
. Beans 사용하여 회원제 사이트를 만들자!
. JSP로 게시판을 만들자!
. [JSP-서블릿]자바 기반의 웹 개발, Servlet과 JSP -강좌버전1.0-
..[JSP-서블릿]JSP 맛보기 -강좌버전1.0-
..[JSP-서블릿]JSP에서 Beans 사용하기 -강좌버전1.0-
..[애플리케이션-기타]Xmame으로 Linux에서 게임을 -강좌버전1.0-
..[애플리케이션-개발 도구]Linux용 JDK -강좌버전1.0-
..[애플리케이션-개발 도구]CVS 사용 -강좌버전1.0-
..[애플리케이션-개발 도구]XT를 이용한 XML/XSL 사용 -강좌버전1.0-
..[애플리케이션-웹써버]Apache에서 Tomcat 사용하기 (UNIX/Linux) -강좌버전1.0-
..[애플리케이션-웹써버]Jserv 설치 -강좌버전1.0-
..[애플리케이션-웹써버]GNUJSP 설치 -강좌버전1.0-
..[애플리케이션-웹써버]JSSI 설치 -강좌버전1.0-
..[애플리케이션-웹써버]Jigsaw 설치 -강좌버전1.0-
..[애플리케이션-웹써버]아파치 사용자 인증 -강좌버전1.0-
..[애플리케이션-웹써버]아파치-포스트그레스 인증 모듈 -강좌버전1.0-
..Windows에서 Apache와 Tomcat 사용하기 -강좌버전1.0-
.. kenu 의 JSP 강좌
Tomcat 4 Manager 사용하기
Form study #1
jsp에서 log() 이용하기
JNDI로 jdbc 사용하기(Tomcat4)
jsp 에러잡기
오라클에서 MS Access로 DB 이전하기
Tomcat4 Apache1.3.22연동(mod_jk)
FileUpload
. JspSmartUpload 설치
. JspSmartUpload FAQ
. useBean
. session bean
. bean 활용
. bean 한글처리
. MySQL 설치
. MySQL 인증설정
. MySQL 테이블생성
. MySQL 자료입력
. MySQL 자료조회
. MS Access ODBC연결
. Oracle8i 설치예
. MSSQL7 연결(freeTds)
. [JavaMail]메일링리스트
. [JavaMail]기본설치
. [JavaMail]기본설치-사용예제
. [JavaMail]파일첨부메일
. Servlet 파일위치 -강좌버전1.0-
. servlet 한글출력 -강좌버전1.0-
. package 선언된 java 컴파일하기 -강좌버전1.0-
. 한글처리 -강좌버전1.0-
. 한글처리 빈 -강좌버전1.0-
. WAR? Web ARchive -강좌버전1.0-
. Procedure 사용하기 -강좌버전1.0-
. CallableStatement 사용하기 -강좌버전1.0-
. Tomcat 서비스 설치하기 -강좌버전1.0-
. win2k SMTP 설치 -강좌버전1.0-
. win2k server + IIS + tomcat 3.2.3 -강좌버전1.0-
. IIS + tomcat 3.2.3 Context추가하기 -강좌버전1.0-
. win2000+apache+tomcat -강좌버전1.0-
. win2000+IIS5+Resin -강좌버전1.0-
. Resin 루트디렉토리 -강좌버전1.0-
. include 집중분석 -강좌버전1.0-
.. JSP Tag Library 기초강좌 -강좌버전1.0-
.. 동적이미지 생성 -강좌버전1.0-
.. EMWAC과 IIS의 SMTP 같이 사용하기 -강좌버전1.0-
.. 인터넷 공유 -강좌버전1.0-
.. Tomcat-apache 연동 -강좌버전1.0-
.. Tomcat 루트디렉토리 -강좌버전1.0-
.. Tomcat4 Apache1.3.22연동 -강좌버전1.0-
.. Tomcat4 설치하기 -강좌버전1.0-
.. win98+apache+tomcat -강좌버전1.0-
.. jdk 설치하기 -강좌버전1.0-
.. yb2u 의 JSP 강좌
.. 소개글
.. gcc 사용하기 -강좌버전1.0-
.. JDK 사용하기 -강좌버전1.0-
.. Applet 만들기 -강좌버전1.0-
.. Script 만들기 -강좌버전1.0-
.. Tomcat 사용하기 -강좌버전1.0-
.. Servlet 만들기 -강좌버전1.0-
.. JSP 만들기 -강좌버전1.0-


write.jsp

<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>게시판 글쓰기</TITLE>
<style type="text/css">
<!--
.normal { font-family: "굴림", "돋움"; font-size: x-small; font-style: normal; font-weight: normal; text-decoration: none}
.normalbold { font-family: "굴림", "돋움"; font-size: x-small; font-style: normal; font-weight: bold; text-decoration: none}
-->
</style>
<script language="JavaScript">
function checkInput()
{
// 제목이 입력되었는지 확인합니다.
if (document.guest.subject.value == "") {
alert("제목을 입력하세요.");
return;
}

// 이름이 입력되었는지 확인합니다.
if (document.guest.name.value == "") {
alert("게시자의 이름을 입력하세요. 실명제입니다.");
return;
}

// 비밀번호가 입력되었는지 확인합니다.
if (document.guest.pwd.value == "") {
alert("수정 및 삭제시 필요합니다. 비밀번호를 입력하세요");
return;
}

// 내용이 입력되었는지 확인합니다.
if (document.guest.content.value == "") {
alert("내용없는 게시물은 허용되지 않습니다.");
return;
}

// 사용자의 입력을 전달합니다.
document.guest.submit();
}
</script>
</HEAD>
<BODY bgcolor="#FFFFFF">
<form method="post" action="writeproc.jsp" name="guest">
<table width="500" border="0" cellspacing="0" cellpadding="0">
<tr>
<td colspan="2" height="35">
<div align="center"><font face="-사파이어B" size="5">GuestBook</font></div>
</td>
</tr>
<tr>
<td colspan="2" class="normal" height="42">여러분들의 글을 남겨주세요.</td>
</tr>
</table>
<table width="500" border="1" cellspacing="0" cellpadding="0" bordercolor="#000000">
<tr>
<td width="211" bgcolor="#CCCCFF" class="normalbold">
<div align="center">게시물 제목</div>
</td>
<td width="370">
<input type="text" name="subject" size="50" maxlength="100">
</td>
</tr>
<tr>
<td width="211" bgcolor="#CCCCFF" class="normalbold">
<div align="center">게시자 이름</div>
</td>
<td width="370">
<input type="text" name="name" size="50" maxlength="50">
</td>
</tr>
<tr>
<td width="211" bgcolor="#CCCCFF" class="normalbold">
<div align="center">게시자 EMail</div>
</td>
<td width="370">
<input type="text" name="email" size="50" maxlength="100">
</td>
</tr>
<tr>
<td width="211" bgcolor="#CCCCFF" class="normalbold">
<div align="center">게시자 홈페이지</div>
</td>
<td width="370">
<input type="text" name="home" size="50" maxlength="100">
</td>
</tr>
<tr>
<td width="211" bgcolor="#CCCCFF" class="normalbold">
<div align="center">비밀번호</div>
</td>
<td width="370">
<input type="password" name="pwd" size="50" maxlength="10">
</td>
</tr>
<tr bgcolor="#CCCCFF">
<td colspan="2">
<div align="center" class="normalbold">내용</div>
</td>
</tr>
<tr>
<td colspan="2">
<textarea name="content" rows="20" cols="70" wrap="HARD"></textarea>
</td>
</tr>
<tr>
<td colspan="2">
<div align="center">
<input type="button" name="insert" value="등록" onClick="checkInput()">
<input type="reset" name="reset" value="취소">
</div>
</td>
</tr>
</table>
</form>
<P>&nbsp;</P>

</BODY>
</HTML>


--------------------------------------------------------------------------------

writeproc

<%@ page contentType="text/html;charset=euc-kr"
import="java.sql.*, java.util.*"
errorPage="error.jsp"
%>

<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>게시판 글쓰기</TITLE>
<style type="text/css">
<!--
.normal { font-family: "굴림", "돋움"; font-size: x-small; font-style: normal; font-weight: normal; text-decoration: none}
.normalbold { font-family: "굴림", "돋움"; font-size: x-small; font-style: normal; font-weight: bold; text-decoration: none}
-->
</style>
</HEAD>

<%
try {
// 사용자가 입력한 자료를 저장합니다.
String subject = request.getParameter("subject"),
name = request.getParameter("name"),
email = request.getParameter("email"),
home = request.getParameter("home"),
content = request.getParameter("content"),
pwd = request.getParameter("pwd");

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

// 연결명령어를 작성합니다.
String url = "jdbc:odbc:JspDB";
// 데이터베이스를 연결합니다.
Connection insCon =
DriverManager.getConnection(url, "sa", "dhslove");

// 쿼리를 실행할 PreparedStatement객체를 생성합니다.
PreparedStatement pstmt1 = null, pstmt2 = null;

// no의 값을 설정하기 위해 쿼리를 작성합니다.
String jsql = "SELECT MAX(no) FROM guest";

pstmt1 = insCon.prepareStatement(jsql);

// no의 값을 설정하기 위해 쿼리를 실행합니다.
ResultSet rs = pstmt1.executeQuery();

// no의 값을 설정합니다.
int no = 1;
if (!rs.wasNull()) {
rs.next();
no = rs.getInt(1) + 1;
}

// 객체를 닫습니다.
rs.close();

// indate의 값을 설정합니다.
Calendar dateIn = Calendar.getInstance();
String indate = Integer.toString(dateIn.get(Calendar.YEAR)) + "-";
indate = indate + Integer.toString(dateIn.get(Calendar.MONTH)) + "-";
indate = indate + Integer.toString(dateIn.get(Calendar.DATE)) + " ";
indate = indate + Integer.toString(dateIn.get(Calendar.HOUR_OF_DAY)) + ":";
indate = indate + Integer.toString(dateIn.get(Calendar.MINUTE)) + ":";
indate = indate + Integer.toString(dateIn.get(Calendar.SECOND));

// 쿼리를 작성합니다.
jsql = "INSERT INTO guest(no, subject, name, email, home, content, indate, pwd)";
jsql = jsql + " VALUES (?, ?, ?, ?, ?, ?, ?, ?)";

pstmt2 = insCon.prepareStatement(jsql);

// 쿼리의 ?부분을 완성합니다.
pstmt2.setInt(1, no);
pstmt2.setString(2, subject);
pstmt2.setString(3, name);
pstmt2.setString(4, email);
pstmt2.setString(5, home);
pstmt2.setString(6, content);
pstmt2.setString(7, indate);
pstmt2.setString(8, pwd);

// 쿼리를 실행합니다.
pstmt2.executeUpdate();

response.sendRedirect("list.jsp");
%>
<BODY bgcolor="#FFFFFF">
<%
}
catch (SQLException e) {
%>
<table width="270" border="0" cellspacing="0" cellpadding="5">
<tr bgcolor="#3399CC">
<td height="39" class="normalbold">게시판에 게시되지 않았습니다.</td>
</tr>
<tr>
<td class="normal">
<p>게시판에 문제가 있습니다. <br>
관리자에게 문의하세요.</p>
<p align="center"><a href="list.jsp">리스트</a></p>
</td>
</tr>
</table>

<%
}
%>
</BODY>
</HTML>


--------------------------------------------------------------------------------

list.jsp

<%@ page contentType="text/html;charset=euc-kr"
import="java.sql.*, java.util.*"
errorPage="error.jsp"
%>

<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>게시판 목록보기</TITLE>
<style type="text/css">
<!--
.normal { font-family: "굴림", "돋움"; font-size: x-small; font-style: normal; font-weight: normal; text-decoration: none}
.normalbold { font-family: "굴림", "돋움"; font-size: x-small; font-style: normal; font-weight: bold; text-decoration: none}
-->
</style>

<script language="JavaScript">
function searchList() {
if(document.search.query.value == "") {
alert("검색어를 입력하세요");
return;
}

document.search.submit();
}

</script>
</HEAD>

<%
// 리스트의 인덱스 값 lidx를 저장합니다.
String lidx;
int listIndex;

// 검색어를 저장합니다.
String find = request.getParameter("find");
String query = request.getParameter("query");

try {
lidx = request.getParameter("lidx");
listIndex = Integer.parseInt(lidx);
} catch (Exception e) {
listIndex = 0;
}

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

// 연결명령어를 작성합니다.
String url = "jdbc:odbc:JspDB";
// 데이터베이스를 연결합니다.
Connection listCon =
DriverManager.getConnection(url, "sa", "dhslove");

// 쿼리를 실행할 PreparedStatement객체를 생성합니다.
PreparedStatement pstmt1 = null, pstmt2 = null;

// 리스트의 인덱스 값을 얻기 위해 테이블에 저장되어 있는
// 자료의 갯수를 가져옵니다.
// 상황에 맞는 쿼리를 작성합니다.
String jsql, urlprev, urlnext, cond = null;
if(query != null) cond = '%' + query.trim() + '%';

if (find != null && find.equals("subject")) {
jsql = "SELECT COUNT(*) FROM guest ";
jsql = jsql + "WHERE subject LIKE '" + cond + "'";
}
else if(find != null && find.equals("name")) {
jsql = "SELECT COUNT(*) FROM guest ";
jsql = jsql + "WHERE name LIKE '" + cond + "'";
}
else {
jsql = "SELECT COUNT(*) FROM guest";
}

pstmt1 = listCon.prepareStatement(jsql);
ResultSet cntRs = pstmt1.executeQuery();

cntRs.next();
int cnt = cntRs.getInt(1);

// 10개 단위로 리스트를 구분시 리스트의 개수를 가져옵니다.
int cntList = cnt/10;
int remain = cnt%10;
cntRs.close();

// 리스트를 가져오기 위해 쿼리를 작성합니다.
if (find != null && find.equals("subject")) {
jsql = "SELECT * FROM guest ";
jsql = jsql + "WHERE subject LIKE '" + cond + "' ORDER BY no DESC";
urlprev = "list.jsp?lidx=" + (listIndex - 1) + "&find=" + find + "&query=" + query;
urlnext = "list.jsp?lidx=" + (listIndex + 1) + "&find=" + find + "&query=" + query;
}
else if(find != null && find.equals("name")) {
jsql = "SELECT * FROM guest ";
jsql = jsql + "WHERE name LIKE '" + cond + "' ORDER BY no DESC";
urlprev = "list.jsp?lidx=" + (listIndex - 1) + "&find=" + find + "&query=" + query;
urlnext = "list.jsp?lidx=" + (listIndex + 1) + "&find=" + find + "&query=" + query;
}
else {
jsql = "SELECT * FROM guest ORDER BY no DESC";
urlprev = "list.jsp?lidx=" + (listIndex - 1);
urlnext = "list.jsp?lidx=" + (listIndex + 1);

}

pstmt2 = listCon.prepareStatement(jsql);
ResultSet rs = pstmt2.executeQuery();
%>
<BODY bgcolor="#FFFFFF">
<p><span class="normalbold">게시판에 어떤 글들이 있을까? </span></p>
<div align="left"><span class="normal"><a href="admin.jsp">관리자모드</a> </span> </div>
<table width="500" border="1" cellspacing="0" cellpadding="2" bordercolor="#000000">
<tr bgcolor="#CCCCFF" class="normalbold">
<td class="normalbold" width="38">
<div align="center">번호</div>
</td>
<td class="normalbold" width="63">
<div align="center">글쓴이</div>
</td>
<td class="normalbold" width="81">
<div align="center">날짜</div>
</td>
<td class="normalbold" width="249">
<div align="center">제목</div>
</td>
<td class="normalbold" width="37">
<div align="center">조회</div>
</td>
</tr>
<%
// 목록이 있으면 자료를 출력합니다.
if (!rs.wasNull()) {
// listIndex * 10 만큼 커서의 위치를 이동합니다.
for(int i = 0; i < listIndex * 10; i++) rs.next();
int cursor = 0;
while (rs.next()) {
int idx = rs.getInt("idx"),
no = rs.getInt("no");
String subject = rs.getString("subject"),
name = rs.getString("name"),
email = rs.getString("email"),
indate = rs.getString("indate");
int readcount = rs.getInt("readcount");
%>

<tr>
<td class="normal" width="38">
<div align="center"><%=no%></div>
</td>
<td class="normal" width="63">
<div align="center"><a href="mailto:<%= email %>"><%=name%></a></div>
</td>
<td class="normal" width="81">
<div align="center"><%=indate.substring(0, 10)%></div>
</td>
<td class="normal" width="249">
<div align="center"><a href="view.jsp?idx=<%= idx %>"><%=subject%></a></div>
</td>
<td class="normal" width="37">
<div align="center"><%=readcount%></div>
</td>
</tr>

<%
cursor ++;
if (cursor >= 10) break;
}
}
%>
</table>
<br>
<table width="500" border="0" cellspacing="0" cellpadding="2" bordercolor="#000000"><tr>
<tr>
<td class="normal">
<div align="center">
<%
if (listIndex > 0) {
%>
<a href="<%= urlprev %>">이전</a>
<%
}
%>

<%
if (listIndex < cntList - 1 || (listIndex == cntList - 1 && remain > 0)) {
%>
<a href="<%= urlnext %>">다음</a>
<%
}

rs.close();
cntRs.close();
// pstmt1.close();
// pstmt2.close();
listCon.close();
%>
<a href="write.jsp">쓰기</a></div>
</td>
</tr>
</table>
<br>
<form name="search" method="post" action="list.jsp">
<table width="500" border="0" cellspacing="0" cellpadding="2" bordercolor="#000000">
<tr>
<tr>
<td class="normal">
<div align="center">
<select name="find">
<option value="subject">제목</option>
<option value="name">이름</option>
</select>
으로 검색하기 <b>검색어</b>
<input type="text" name="query">
<input type="button" name="button" value="검색" OnClick="searchList()">
</div>
</td>
</tr>
</table>
</form>
</BODY>
</HTML>


--------------------------------------------------------------------------------

view.jsp

<%@ page contentType="text/html;charset=euc-kr"
import="java.sql.*, java.util.*"
errorPage = "error.jsp"
%>

<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>게시판 내용보기</TITLE>
<style type="text/css">
<!--
.normal { font-family: "굴림", "돋움"; font-size: x-small; font-style: normal; font-weight: normal; text-decoration: none}
.normalbold { font-family: "굴림", "돋움"; font-size: x-small; font-style: normal; font-weight: bold; text-decoration: none}
-->
</style>
<script language="JavaScript">
function checkPass(tag)
{
if(document.update.pwd.value == "") {
alert("수정 및 삭제를 원하시는 경우 비밀번호를 입력해야 합니다.");
return;
}

if(tag == 1) {
document.update.updateTag.value = "u";
}
else {
document.update.updateTag.value = "d";
}

document.update.submit();
}
</script>
</HEAD>
<%
// 관리자 모드인지를 확인합니다.
int admin;

try {
if(session.getAttribute("user").equals("admin")) {
admin = 1;
}
else {
admin = 0;
}
}
catch (NullPointerException e) {
admin = 0;
}

// 사용자가 선택한 게시물의 번호를 가져옵니다.
String idx = request.getParameter("idx");

// 데이터베이스 연결을 위해 클래스를 로딩합니다.
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

// 연결명령어를 작성합니다.
String url = "jdbc:odbc:JspDB";
// 데이터베이스에 연결합니다.
Connection viewCon =
DriverManager.getConnection(url, "sa", "dhslove");

// 쿼리를 작성합니다.
String jsql = "SELECT * FROM guest WHERE idx = ?";

// 쿼리를 실행할 PreparedStatement 객체를 생성
PreparedStatement pstmt = null;
pstmt = viewCon.prepareStatement(jsql);

// ?로 표시되어 있는 부분을 setString을 이용해 완성
pstmt.setInt(1, Integer.parseInt(idx));

// 쿼리를 실행하여 ResultSet 객체에 결과를 저장합니다.
ResultSet rs = pstmt.executeQuery();
%>
<BODY bgcolor="#FFFFFF">
<%
// 데이터를 가져왔다면 값을 출력합니다.
if(!rs.wasNull()) {
rs.next();
String subject = rs.getString("subject"),
name = rs.getString("name"),
email = rs.getString("email"),
home = rs.getString("home"),
content = rs.getString("content").trim(),
indate = rs.getString("indate");
int readcount = rs.getInt("readcount");
String pwd = rs.getString("pwd").trim();
// 조회수에 1을 더합니다.
readcount ++;
%>
<form name="update" method="post" action="updatedelete.jsp">
<table width="500" border="0" cellspacing="0" cellpadding="0">
<tr>
<td colspan="2" height="35">
<div align="center" class="normalbold">
<input type="hidden" name="updateTag" value="u">
<input type="hidden" name="idx" value="<%= idx %>">
게시판내용보기</div>
</td>
</tr>
<tr valign="bottom">
<td colspan="2" class="normal" height="26">
<div align="right">조회수 : <%= readcount %></div>
</td>
</tr>
</table>
<table width="500" border="1" cellspacing="0" cellpadding="0" bordercolor="#000000">
<tr>
<td width="211" bgcolor="#CCCCFF" class="normalbold">
<div align="center">제목</div>
</td>
<td width="370" class="normal"><%= subject %>&nbsp;</td>
</tr>
<tr>
<td width="211" bgcolor="#CCCCFF" class="normalbold">
<div align="center">게시자 이름</div>
</td>
<td width="370" class="normal"><%= name %>&nbsp;</td>
</tr>
<tr>
<td width="211" bgcolor="#CCCCFF" class="normalbold">
<div align="center">게시자 EMail</div>
</td>
<td width="370" class="normal"><a href="mailto:<%= email %>"><%= email %></a>&nbsp;</td>
</tr>
<tr>
<td width="211" bgcolor="#CCCCFF" class="normalbold">
<div align="center">게시자 홈페이지</div>
</td>
<td width="370" class="normal"><a href="<%= home %>"><%= home %></a>&nbsp;</td>
</tr>
<tr>
<td colspan="2" bgcolor="#CCCCFF" class="normalbold" height="21">
<div align="center">내용</div>
</td>
</tr>
<tr>
<td colspan="2" class="normal">
<textarea name="content" rows="20" class="normal" style="BORDER: midium none; WIDTH: 485px"><%= content %></textarea>
</td>
</tr>
<tr>
<td colspan="2" class="normal" height="2"> <%
// 관리자 모드로 들어온 경우에는 비밀번호를 출력
if(admin == 1) {
%>
<input type="password" name="pwd" value="<%= pwd %>">
(수정 및 삭제시 비밀번호를 입력하세요) <%
}
else {
%>
<input type="password" name="pwd" value="">
(수정 및 삭제시 비밀번호를 입력하세요) <%
}
%> </td>
</tr>
</table>
<%
// ResultSet를 닫습니다.
rs.close();

// 조회수를 업데이트합니다.
// 업데이트 쿼리를 작성합니다.
jsql = "UPDATE guest SET readcount = ? WHERE idx = ?";

// PreparedStatement 객체에 저장합니다.
PreparedStatement modPstmt = null;
modPstmt = viewCon.prepareStatement(jsql);

// 쿼리를 완성합니다.
modPstmt.setInt(1, readcount);
modPstmt.setInt(2, Integer.parseInt(idx));

// 쿼리를 실행합니다.
modPstmt.executeUpdate();
}

rs.close();
viewCon.close();
%>
<table width="500" border="0" cellspacing="0" cellpadding="0">
<tr>
<td colspan="2" height="35">
<div align="center" class="normalbold"><a href="JavaScript:history.back();">목록보기</a>
<a href="JavaScript:checkPass(1)">수정하기</a> <a href="JavaScript:checkPass(2)">삭제하기</a></div>
</td>
</tr>
</table>
</form>
<p>&nbsp;</p>
</BODY>
</HTML>


--------------------------------------------------------------------------------

updatedelete.jsp

<%@ page contentType="text/html;charset=euc-kr"
import="java.sql.*, java.util.*"
errorPage="error.jsp"
%>

<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>게시물 수정/삭제</TITLE>
<style type="text/css">
<!--
.normal { font-family: "굴림", "돋움"; font-size: x-small; font-style: normal; font-weight: normal; text-decoration: none}
.normalbold { font-family: "굴림", "돋움"; font-size: x-small; font-style: normal; font-weight: bold; text-decoration: none}
-->
</style>
</HEAD>

<BODY bgcolor="#FFFFFF">
<%
// 사용자가 입력한 자료를 저장합니다.
String updateTag = request.getParameter("updateTag"),
idx = request.getParameter("idx"),
content = request.getParameter("content"),
pwd = request.getParameter("pwd");

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

// 연결 명령어를 작성합니다.
String url = "jdbc:odbc:JspDB";
// 데이터베이스를 연결합니다.
Connection updateCon =
DriverManager.getConnection(url, "sa", "dhslove");

// 비밀번호를 가져와서 비밀번호가 맞는지 확인합니다.
// 쿼리를 작성합니다.
String jsql = "SELECT pwd FROM guest WHERE idx = ?";

// PreparedStatement에 저장하여 쿼리를 완성합니다.
PreparedStatement pstmt = null;
pstmt = updateCon.prepareStatement(jsql);
pstmt.setInt(1, Integer.parseInt(idx));

// 쿼리를 실행하여 결과를 저장합니다.
ResultSet rs1 = pstmt.executeQuery();

// 사용자가 입력한 비밀번호가 정확한지 확인합니다.
rs1.next();
String pwdConfirm = rs1.getString("pwd").trim();
rs1.close();
// 사용자가 입력한 비밀번호가 정확하다면...
if (pwd.equals(pwdConfirm)) {
// 사용자가 수정을 요구했다면...
if(updateTag.equals("u")) {
// 쿼리를 작성합니다.
jsql = "UPDATE guest SET content = ? WHERE idx = ?";

pstmt = updateCon.prepareStatement(jsql);
pstmt.setString(1, content);
pstmt.setInt(2, Integer.parseInt(idx));
}
else {
// 쿼리를 작성합니다.
jsql = "DELETE FROM guest WHERE idx = ?";

pstmt = updateCon.prepareStatement(jsql);
pstmt.setInt(1, Integer.parseInt(idx));
}

// 쿼리를 실행합니다.
pstmt.executeUpdate();

// 목록으로 이동합니다.
response.sendRedirect("list.jsp");
}
// 사용자가 입력한 비밀번호가 정확하지 않다면...
else {
%>
<table width="270" border="0" cellspacing="0" cellpadding="5">
<tr bgcolor="#3399CC">
<td height="39" class="normalbold">비밀번호가 틀립니다..</td>
</tr>
<tr>
<td class="normal">
<p>비밀번호가 일치하지 않습니다.<br>
처음 게시할 때 사용한 비밀번호를 확인하시기 바랍니다.</p>
<p align="center"><a href="list.jsp">리스트</a></p>
</td>
</tr>
</table>

<%
}
%>
</BODY>
</HTML>


--------------------------------------------------------------------------------

admin.jsp

<html>
<head>
<title>게시판 관리자</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<style type="text/css">
<!--
.normal { font-family: "굴림", "돋움"; font-size: x-small; font-style: normal; font-weight: normal; text-decoration: none}
.normalbold { font-family: "굴림", "돋움"; font-size: x-small; font-style: normal; font-weight: bold; text-decoration: none}
-->
</style>
<script language="JavaScript">
function checkValue()
{
if(document.admin.id.value == "") {
alert("아이디를 입력하세요");
return;
}

if(document.admin.pwd.value == "") {
alert("패스워드를 입력하세요.");
return;
}

document.admin.submit();
}

</script>
</head>

<body bgcolor="#FFFFFF">
<p><span class="normalbold">관리자 인증</span></p>
<form name="admin" method="post" action="adminproc.jsp">
<span class="normal"> 관리자 아이디 :
<input type="text" name="id">
<br>
관리자 비밀번호 :
<input type="password" name="pwd">
<br>
<input type="button" name="confirm" value="확인" onClick="checkValue()">
<input type="reset" name="reset" value="취소">
</span>
</form>
<p>&nbsp;</p>
<p>&nbsp; </p>
</body>
</html>


--------------------------------------------------------------------------------

adminproc.jsp

<html>
<head>
<title>게시판 관리자</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<style type="text/css">
<!--
.normal { font-family: "굴림", "돋움"; font-size: x-small; font-style: normal; font-weight: normal; text-decoration: none}
.normalbold { font-family: "굴림", "돋움"; font-size: x-small; font-style: normal; font-weight: bold; text-decoration: none}
-->
</style>
</head>

<body bgcolor="#FFFFFF">
<%
// 사용자가 입력한 아이디와 패스워드를 가져옵니다.
String id = request.getParameter("id"),
pwd = request.getParameter("pwd");

// 사용자가 입력한 값이 정한 값과 같은 지 비교합니다.
if(id.equals("admin") && pwd.equals("dhslove")) {
session.setAttribute("user", "admin");
%>
<table width="270" border="0" cellspacing="0" cellpadding="5">
<tr bgcolor="#3399CC">
<td height="39" class="normalbold">관리자모드로 전환되었습니다.</td>
</tr>
<tr>
<td class="normal">
<p>환영합니다. 관리자님... <br>
앞으로 게시판은 관리자모드로 동작하게 됩니다.</p>
<p align="center"><a href="list.jsp">리스트</a></p>
</td>
</tr>
</table>
<%
}
else {
%>
<table width="270" border="0" cellspacing="0" cellpadding="5">
<tr bgcolor="#3399CC">
<td height="39" class="normalbold">비밀번호가 틀립니다..</td>
</tr>
<tr>
<td class="normal">
<p>비밀번호가 일치하지 않습니다.<br>
관리자모드로 전환되지 않습니다.</p>
<p align="center"><a href="list.jsp">리스트</a></p>
</td>
</tr>
</table>
<%
}
%>
</body>
</html>


--------------------------------------------------------------------------------

error.jsp

<%@ page isErrorPage="true" %>
<html>
<head>
<title>예외가 발생하였습니다.</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<style type="text/css">
<!--
.normal { font-family: "굴림", "돋움"; font-size: x-small; font-style: normal; font-weight: normal; text-decoration: none}
.normalbold { font-family: "굴림", "돋움"; font-size: x-small; font-style: normal; font-weight: bold; text-decoration: none}
-->
</style>
</head>

<body>
<p class="normalbold">앗! 오류가 발생하였군요</p>
<p class="normal">
<%= exception.toString() %>
</p>
</body>
</html>


출처 : http://blog.naver.com/topgunmagic/120016102966