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;
}
.