jsp 게시판 소스 강좌
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> </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 %> </td>
</tr>
<tr>
<td width="211" bgcolor="#CCCCFF" class="normalbold">
<div align="center">게시자 이름</div>
</td>
<td width="370" class="normal"><%= name %> </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> </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> </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> </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> </p>
<p> </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