WEB/JSTL
[JSTL] CSS 추가한 login
hvoon
2022. 9. 9. 20:44
sql로 테이블 생성
create table member(
name varchar2(30),
userid varchar2(30),
pwd varchar2(30),
email varchar2(30),
phone varchar2(15),
admin number(1) default 0, -- 0:일반사용자 , 1:관리자
primary key(userid)
);
create table board(
num number(5) primary key,
pass varchar2(30), --게시물의 수정 삭제를 위한 비번
userid varchar2(30),
email varchar2(30),
title varchar2(50),
content varchar2(1000),
readcount number(4) default 0, --조회수
writedate date default sysdate --작성일자
);
insert into member
values('이소미', 'somi','1234','somi@anver.com','010-1234-1234',1);
insert into member
values('하상오', 'sang','1234','sang@naver.com','010-5555-6666',0);
insert into member
values('김하나', 'hana','1234','hana@daum.net','010-1111-1111',0);
insert into member
values('김두울','do', '1234','do@naver.com','010-2222-2222',0);
insert into member
values('홍길동','hong','1234','hong@daum.net','010-8888-9999',1);
create sequence board_seq start with 1 increment by 1;
insert into board(num, userid, email, pass, title, content)
values(board_seq.nextVal, 'hong', 'abc@naver.com','1234',
'첫방문입니다','반갑습니다. 앞으로 많은 격려와 지도 부탁드립니다.');
insert into board(num, userid, email, pass, title, content)
values(board_seq.nextVal, 'somi', 'add@naver.com','1234',
'게시판 개설','축하드립니다. 무궁한 발전을 기원할게요.');
insert into board(num, userid, email, pass, title, content)
values(board_seq.nextVal, 'hana', 'bnbn@naver.com','1234',
'돼지골마을','돼지삼겹살 맛있어요.');
insert into board(num, userid, email, pass, title, content)
values(board_seq.nextVal, 'hana', 'hana@daum.net','1234',
'코로나바이러스','사회적 거리두기가 끝나갑니다.');
insert into board(num, userid, email, pass, title, content)
values(board_seq.nextVal, 'hana', 'hana@daum.net','1234',
'1월 겨울','몹시 추울 것 같아요.');
insert into board(num, userid, email, pass, title, content)
values(board_seq.nextVal, 'hong', 'hana@daum.net','1234',
'범죄도시2','마동석이 주연인 영화입니다.');
insert into board(num, userid, email, pass, title, content)
values(board_seq.nextVal, 'somi', 'hana@daum.net','1234',
'원숭이두창','국내에 첫 확진자가 발생했습니다.');
create table reply(
replynum number(7) primary key, --댓글 순번
boardnum number(5), --댓글의 해당 게시물 번호
userid varchar2(30), --댓글 쓰니
writedate date default sysdate, --작성일
content varchar2(1000) --작성 내용
);
-- 댓글은 board 테이블에 저장되지 않음.
-- 한두개의 댓글만 달리고 말거라면
-- board 테이블에 댓글 필드를 두세개 생성하고 저장해도 되지만
-- 게시판에 있는 각 게시물들에 대한 댓글은
-- 작성될 수 있는 갯수 제한이 없기 때문에
-- 모든 댓글을 하나의 테이블에 저장함.
-- 이때 반드시 저장되는 댓글에는
-- 어느 게시물의 댓글인지 게시물 번호를 같이 저장해야 함.
-- 그래야 해당 게시물이 화면에 표시될 때 그 게시물의 댓글만
-- 조회(검색)해서 따로 화면에 표시할 수 있음.
create sequence reply_seq start with 1 increment by 1;
insert into reply values(reply_seq.nextVal,1,'somi',sysdate,
'게시판 개설을 축하드립니다');
insert into reply values(reply_seq.nextVal,2,'light',sysdate,
'첫 게시글 작성 감사합니다');
insert into reply values(reply_seq.nextVal,3,'scott',sysdate,
'맛있게 보입니다.');
*Action 코드 배경색 - 검정
*ActionFactory 안 command될 Action 코드 배경색 - 줄무늬
로그인 첫 시작화면
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>index.jsp</title>
</head>
<body>
<%
response.sendRedirect("board.do?command=loginForm");
%>
</body>
</html>
main Servlet 생성
package com.model.board.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.model.board.controller.action.Action;
@WebServlet("/board.do")
public class BoardServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public BoardServlet() {
super();
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
// 전달될 command 값을 추출함
String command=request.getParameter("command");
// 추출할 command 값에 따라 해당 기능을 담고 있을 클래스의
// new 인스턴스를 인터페이스 래퍼런스 변수에 저장함.
// 이를 위해서 ActionFactory 클래스의
// getAction이라는 메서드 사용됨.
// Action ac=new LoginFormAction();
// 이 동작을 ActionFactory 클래스의
// getAction이라는 메서드에서 실행.
// 클래스에 인스턴스 생성
ActionFactory af=ActionFactory.getInstance();
// 메서드 실행 후 리턴되는 ac 값을 래퍼런스 변수에 저장함
Action ac=af.getAction(command);
if(ac==null) System.out.println("ac==null");
else ac.execute(request, response);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
doGet(request, response);
}
}
Action interface 생성
package com.model.board.controller.action;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public interface Action {
public void execute(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException;
}
ActionFactory 생성
package com.model.board.controller;
import com.model.board.controller.action.Action;
public class ActionFactory {
private ActionFactory() {}
private static ActionFactory itc=new ActionFactory();
public static ActionFactory getInstance() {return itc;}
public Action getAction(String command) {
Action ac=null;
// 이 안에 command될 Action 생성
return ac;
}
}
로그인 화면
if(command.equals("loginForm")) ac=new LoginFormAction();
package com.model.board.controller.action;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class LoginFormAction implements Action {
@Override
public void execute(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
String url = "member/loginForm.jsp";
request.setAttribute("message",
request.getParameter("message"));
HttpSession session = request.getSession();
if( session.getAttribute("loginUser") != null )
url = "board/main.jsp";
RequestDispatcher dp = request.getRequestDispatcher(url);
dp.forward(request, response);
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>loginForm.jsp</title>
<link rel="stylesheet type=text/css" href="css/board.css">
<script src="script/board.js"></script>
</head>
<body>
<form action="board.do" method="post" name="frm">
<input type="hidden" name="command" value="login">
<div class="box">LOG IN</div>
<div class="box">
<div class="label">아이디</div>
<div class="item">
<input type="text" name="userid" id="loginid"
size="20">
</div>
</div>
<div class="box">
<div class="label">비밀번호</div>
<div class="item">
<input type="password" name="pwd" id="loginpwd"
size="20">
</div>
</div>
<div class="box">
<input type="submit" value="로그인"
onClick="return loginCheck();">
<input type="button" value="회원가입"
onClick="location.href='board.do?command=joinForm'">
</div>
<div class="box">${message}</div>
</form>
</body>
</html>
board.css 파일 - 로그인 화면을 꾸며줌
@charset "UTF-8";
.box{position:relative; width:500px; height:50px; margin:0 auto;
text-align:center; line-height:50px; font-weight:bold;}
.label{position:relative; width:248px; height:48px; float:left;
background:yellowgreen; font-size:110%; text-align:center;
line-height:50px; border:1px solid yellowgreen;}
.item{position:relative; width:248px; height:48px; float:left;
border:1px solid yellowgreen; font-size:110%;
text-align: left; line-height:50px;}
#loginid{width:200px; height:20px; border:0px; font-size:110%;
border:0; outline:none;}
#loginpwd{width:200px; height:20px; border:0px; font-size:110%;
border:0; outline:none;}

board.js 파일 생성 - loginCheck()
function loginCheck(){
if( document.frm.userid.value.length==0 ){
alert("아이디를 입력하세요");
document.frm.userid.focus();
return false;
}
if( document.frm.pwd.value.length==0){
alert("암호를 입력하세요");
document.frm.pwd.focus();
return false;
}
return true;
}

connection 클래스 생성
package com.model.board.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Dbman {
static String driver="oracle.jdbc.driver.OracleDriver";
static String url="jdbc:oracle:thin:@localhost:1521:xe";
public static Connection getConnection() {
Connection con=null;
try {
Class.forName(driver);
con=DriverManager.getConnection(url,"scott","tiger");
} catch(ClassNotFoundException e) {e.printStackTrace();
} catch(SQLException e) {e.printStackTrace();}
return con;
}
public static void close(Connection con,
PreparedStatement pstmt, ResultSet rs) {
try {
if(con!=null) con.close();
if(pstmt!=null) pstmt.close();
if(rs!=null) rs.close();
} catch(SQLException e) {e.printStackTrace();}
}
}
MemberDto 생성
package com.model.board.dto;
public class MemberDto {
private String name;
private String userid;
private String pwd;
private String email;
private String phone;
private int admin;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public int getAdmin() {
return admin;
}
public void setAdmin(int admin) {
this.admin = admin;
}
}
MemberDao 생성
package com.model.board.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class MemberDao {
private MemberDao() {}
private static MemberDao itc=new MemberDao();
public static MemberDao getInstance() {return itc;}
Connection con=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
}
MemberDto 생성
package com.model.board.dto;
import java.sql.Timestamp;
public class BoardDto {
private int num;
private String pass;
private String userid;
private String email;
private String title;
private String content;
private int readcount;
private Timestamp writedate;
private int replycnt;
// java.sql.date: 날짜와 시간 형식 사용
// java.sql.timestamp: 날짜, 시간, 밀리초 형식 사용
// 좀 더 세밀한 시간 사용을 위해 timestamp를 사용함
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public int getReadcount() {
return readcount;
}
public void setReadcount(int readcount) {
this.readcount = readcount;
}
public Timestamp getWritedate() {
return writedate;
}
public void setWritedate(Timestamp writedate) {
this.writedate = writedate;
}
public int getReplycnt() {
return replycnt;
}
public void setReplycnt(int replycnt) {
this.replycnt = replycnt;
}
}
MemberDao 생성
package com.model.board.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class BoardDao {
private BoardDao() {}
private static BoardDao itc=new BoardDao();
public static BoardDao getInstance() {return itc;}
Connection con=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
}
로그인 실행하기
else if(command.equals("login")) ac=new LoginAction();
package com.model.board.controller.action;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.model.board.dao.MemberDao;
import com.model.board.dto.MemberDto;
public class LoginAction implements Action {
@Override
public void execute(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
String userid = request.getParameter("userid");
String pwd = request.getParameter("pwd");
MemberDao mdao = MemberDao.getInstance();
MemberDto mdto = mdao.getMember( userid );
String url = "member/loginForm.jsp";
if( mdto == null ) {
request.setAttribute("message","아이디가 없음");
}else if( mdto.getPwd() == null ) {
request.setAttribute("message","database 오류");
}else if( !mdto.getPwd().equals( pwd ) ) {
request.setAttribute("message","비밀번호 틀림");
}else if( mdto.getPwd().equals( pwd ) ) {
url = "board.do?command=main";
HttpSession session = request.getSession();
session.setAttribute("loginUser", mdto);
}else {
request.setAttribute("message", "관리자에게 문의");
}
RequestDispatcher dp
= request.getRequestDispatcher(url);
dp.forward(request, response);
}
}
MemberDao에 getMember 실행
public MemberDto getMember(String userid) {
MemberDto mdto=null;
String sql="select*from member where userid=?";
con=Dbman.getConnection();
try {
pstmt=con.prepareStatement(sql);
pstmt.setString(1, userid);
rs=pstmt.executeQuery();
if(rs.next()) {
mdto=new MemberDto();
mdto.setName(rs.getString("name"));
mdto.setUserid(rs.getString("userid"));
mdto.setPwd(rs.getString("pwd"));
mdto.setEmail(rs.getString("email"));
mdto.setPhone(rs.getString("phone"));
mdto.setAdmin(rs.getInt("admin"));
}
} catch(SQLException e){e.printStackTrace();
} finally{Dbman.close(con, pstmt, rs);}
return mdto;
}
로그인 후 화면
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<c:if test="${empty loginUser}">
<jsp:forward page='../board.do?command=loginForm' />
</c:if>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>main.jsp</title>
<link rel="stylesheet" type="text/css" href="css/board.css">
</head>
<body>
<div id="wrap" align="center">
<h1>게시글 리스트</h1>
<table>
<tr>
<td colspan="5" style="border:white;">
<div style="float:left;">
${loginUser.name}(${loginUser.userid})님 로그인
<input type="button" value="회원정보수정"
onClick="location.href='board.do?command=updateMemberForm'"/>
<input type="button" value="로그아웃"
onClick="location.href='board.do?command=logout'">
</div>
<div style="float:right;">
<a href="board.do?command=boardWriteForm">
게시글 등록</a></div>
</td>
</tr>
<tr><th>번호</th><th>제목</th><th>작성자</th>
<th>작성일</th><th>조회</th></tr>
<c:forEach items="${bList}" var="board">
<tr align="center">
<td width="100">${board.num}</td>
<td align="left">
<a href="board.do?command=boardView&num=${board.num}">
${board.title}
</a>
</td>
<td width="100">${board.userid}</td>
<td width="200">${board.writedate}</td>
<td width="100">${board.readcount}</td>
</tr>
</c:forEach>
</table>
</div>
</body>
</html>
board.css 파일 - 로그인 후 화면을 꾸며줌
#wrap{width:971px; margin:0 auto; }
h1{color:green;}
table{width:100%; border-collapse: collapse; font-size:12px;
line-height:24px;}
table td, th{border:#d3d3d3 solid 1px; padding:5px;}
th{background:yellowgreen;}
a{text-decoration:none; color:balck;}
a:HOVER{text-decoration:underline; color:green;}
로그아웃
else if(command.equals("logout")) ac=new LogoutAction();
package com.model.board.controller.action;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class LogoutAction implements Action {
@Override
public void execute(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
session.invalidate();
RequestDispatcher dp
= request.getRequestDispatcher("member/loginForm.jsp");
dp.forward(request, response);
}
}
회원가입 화면
else if(command.equals("joinForm")) ac=new JoinForm();
package com.model.board.controller.action;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class JoinForm implements Action {
@Override
public void execute(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
RequestDispatcher dp
= request.getRequestDispatcher("member/joinForm.jsp");
dp.forward(request, response);
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>joinForm.jsp</title>
<link rel="stylesheet" type="text/css" href="css/board.css">
<script src="script/board.js"></script>
</head>
<body>
<div id="wrap" align="center">
<h1>사용자 등록</h1>
<form name="frm" method="post" action="board.do">
<input type="hidden" name="command" value="join">
<table>
<tr><th>아이디</th><td>
<input type="text" name="userid" size="20"> *
<input type="button" value="중복체크" onClick="idCheck();">
<input type="hidden" name="reid"></td></tr>
<tr><th>이름</th><td>
<input type="text" size="20" name="name"> *</td></tr>
<tr><th>비밀번호</th><td>
<input type="password" name="pwd" size="20"> *</td></tr>
<tr><th>비밀번호</th><td>
<input type="password" name="pwd_check" size="20"> *</td></tr>
<tr><th>이메일</th><td>
<input type="text" size="30" name="email"></td></tr>
<tr><th>전화번호</th><td>
<input type="text" size="20" name="phone"></td></tr>
<tr><th>등급</th><td>
<input type="radio" name="admin" value="0"
checked="checked">일반회원
<input type="radio" name="admin" value="1">관리자</td></tr>
</table><br><br>
<input type="submit" value="등록" onclick="return joinCheck()">
<input type="reset" value="다시 작성">
<input type="button" value="로그인페이지로"
onclick="location.href='board.do?command=loginForm'">
</form>
</div>
</body>
</html>

board.js에 idCheck() 추가
function idCheck(){
if( document.frm.userid.value==""){
alert("아이디를 입력해주세요");
document.from.userid.focus();
return;
}
var inputid = document.frm.userid.value;
var opt = "toolbar=no, menubar=no, scrollbars=yes, "
+ "resizable=no, width=500, height=200";
window.open("board.do?command=idcheck&userid="
+ inputid , "idcheck", opt);
}
아이디 중복 확인
else if( command.equals("idcheck") ) ac = new IdCheckAction();
package com.model.board.controller.action;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.model.board.dao.MemberDao;
import com.model.board.dto.MemberDto;
public class IdCheckAction implements Action {
@Override
public void execute(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
String userid = request.getParameter("userid");
MemberDao mdao = MemberDao.getInstance();
MemberDto mdto = mdao.getMember(userid);
int result = 1;
if( mdto == null )result = -1;
request.setAttribute("userid", userid);
request.setAttribute("result", result);
RequestDispatcher rd
= request.getRequestDispatcher("member/idcheck.jsp");
rd.forward(request, response);
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>idcheck.jsp</title>
<link rel="stylesheet" type="text/css" href="CSS/board.css">
<script src="script/board.js" type="text/javascript"></script>
</head>
<body>
<form action="board.do" method="post" name="frm">
<input type="hidden" name="command" value="idcheck">
아이디 <input type="text" name="userid" value="${userid}">
<input type=submit value="중복 체크"><br>
<!-- 아이디재검색 -->
</form><br><br><br>
<c:if test="${result==1}">
<script type="text/javascript">
opener.document.frm.userid.value = "";
</script>
${userid}는 이미 사용 중인 아이디입니다.
</c:if>
<c:if test="${result==-1}">
${userid}는 사용 가능한 아이디입니다.
<input type="button" value="사용" class="cancel"
onclick="idok('${userid}')">
</c:if>
</body>
</html>


board.js에 idok(), joinCheck() 추가
function idok( userid ){
opener.frm.userid.value = userid;
opener.frm.reid.value = userid;
self.close();
}
function joinCheck(){
if( document.frm.userid.value.length==0){
alert("아이디는 필수입력사항입니다");
document.frm.userid.focus();
return false;
}else if( document.frm.userid.value.length<4){
alert("아이디는 4글자 이상이어야 합니다.");
document.frm.userid.focus();
return false;
}else if( document.frm.userid.value !=
document.frm.reid.value){
alert("아이디 중복체크를 하지 않았습니다");
document.frm.userid.focus();
return false;
}else if( document.frm.name.value.length==0){
alert("이름은 필수입력사항입니다");
document.frm.name.focus();
return false;
}else if( document.frm.pwd.value==""){
alert("비밀번호는 반드시 입력하여야 합니다");
document.frm.pwd.focus();
return false;
}else if( document.frm.pwd.value !=
document.frm.pwd_check.value){
alert("비밀번호와 확인이 일치하지 않습니다");
document.frm.pwd_check.focus();
return false;
}else{ return true; }
}
회원가입 실행
else if( command.equals("join") ) ac = new JoinAction();
package com.model.board.controller.action;
import java.io.IOException;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.model.board.dao.MemberDao;
import com.model.board.dto.MemberDto;
public class JoinAction implements Action {
@Override
public void execute(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// 전달인수들을 모두 Dto 에 넣고 insertMember 에 보내줍니다
MemberDto mdto = new MemberDto();
mdto.setUserid(request.getParameter("userid"));
mdto.setName(request.getParameter("name"));
mdto.setPwd(request.getParameter("pwd"));
mdto.setEmail(request.getParameter("email"));
mdto.setPhone(request.getParameter("phone"));
mdto.setAdmin(Integer.parseInt( request.getParameter("admin")));
MemberDao mdao = MemberDao.getInstance();
int result = mdao.insertMember( mdto );
String message = "";
if( result==1) message=
"회원가입이 완료되었습니다. 로그인하세요";
else message=
"회원가입이 실패했습니다. 관리자에게 문의하세요";
// forward 메서드로 이동한 최종 도착 페이지에서는 새로 고침을 하면
// 데이터도 한번 더 추가되려고 시도함
// 새로고침에 의해 포워딩 이전 코드가 다시 실행되지 않으려면
// sendRedirect를 이용함
response.sendRedirect(
"board.do?command=loginForm&message="
+ URLEncoder.encode(message, "UTF-8" ) );
}
}
MemberDao에 insertMember 생성
public int insertMember(MemberDto mdto) {
int result = 0;
String sql = "insert into "
+ "member(userid, pwd, name, phone, email, admin)"
+ " values( ? , ? , ? , ? , ? , ? )";
con = Dbman.getConnection();
try {
pstmt = con.prepareStatement(sql);
pstmt.setString(1, mdto.getUserid());
pstmt.setString(2, mdto.getPwd());
pstmt.setString(3, mdto.getName());
pstmt.setString(4, mdto.getPhone());
pstmt.setString(5, mdto.getEmail());
pstmt.setInt(6, mdto.getAdmin());
result = pstmt.executeUpdate();
} catch (SQLException e) { e.printStackTrace();
} finally { Dbman.close(con, pstmt, rs); }
return result;
}


