ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JSTL] CSS 추가한 login
    WEB/JSTL 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;
    }
    .

     

    댓글

Designed by Tistory.