ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JSTL] interface를 이용한 login
    WEB/JSTL 2022. 9. 9. 20:40

    *.jsp파일 - background color 검정

    접속할 로그인 창(주소창 표시 안함)

    <%@ 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("member.do?command=loginForm");
    // member.do: 현재 프로젝트의 있는 유일한 servlet의 이름(URL mapping)
    // 유일한 servlet을 호출하고 
    // 지금 하고자하는 작업의 제목을 command라는 파라미터로 보내서
    // 해당 기능을 다른 기능과 구분하여 실행되게 함.
    %>
    </body>
    </html>
    
     

    main servlet 생성

    package com.mgr.member.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.mgr.member.controller.action.Action;
    
    @WebServlet("/member.do")
    public class MemberServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
        public MemberServlet() {
            super();
        }
    	protected void doGet(HttpServletRequest request, 
    			HttpServletResponse response) 
    			throws ServletException, IOException {
    		
    		request.setCharacterEncoding("UTF-8");
    		response.setCharacterEncoding("UTF-8");
    		
    		// 같이 전달된 command 파라미터를 getParameter 메서드로 받음
    		String command = request.getParameter("command");
    		// command: "loginForm"
    
    		/*
    		if(command.equals("loginForm")) {
    			LoginFormAction lfa=new LoginFormAction();
    			lfa.execute(request,response);
    		} else if(command.equals("logout")) {
    			LogoutAction loa=new LogoutAction();
    			loa.execute(request, response);
    		} else if(command.equals("joinForm")) {
    		}
    		*/
    
    		Action ac=null;
    		
    		/*
    		if(command.equals("loginForm")) ac=new LoginFormAction();
    		else if(command.equals("logOut")) ac=new LogOutAction();
    		else if(command.equals("joinForm"))ac=new JoinFormAction();
    		*/
    		
    		ActionFactory af=ActionFactory.getInstance();
    		ac=af.getAction(command);
    		
    		if(ac!=null) ac.execute(request, response);
    		else System.out.println("command: "+command+
    				" - command 값을 확인하시오");
    		// index에 있는 command 주소창에 오타가 날 경우 출력함
    		
    // command에 전달된 값에 따라 어떤 작업을 할지가 결정이 되어 실행됨.
    // 각 command별 실행할 작업들은 해당 실행코드가 들어있는 클래스 내부 
    // 그 중에서도 execute 메서드 안에 있음.
    // 각 기능별로 클래스가 제작되어 실행되기를 기다리고
    // command 값에 따라 선택되어 실행되는 형식.
    		
    // 각 기능이 내장된 객체들의 인스턴스들은 
    // 클래스들이 상속(implements)받은 
    // 부모 인터페이스(Action)의 래퍼런스 변수에 저장하고
    // 래퍼런스 변수명.execute로 실행함.
    		
    // 각 클래스에 있는 execute 메서드는 Action 인터페이스에 존재하는 
    // 추상메서드를 오버라이딩한 메서드임.
    // 각 클래스가 Action 인터페이스를 상속(implement)하여
    // execute 메서드가 오버라이딩되면 Action 인터페이스의 래퍼런스 변수로 
    // 자식 클래스의 execute 메서드를 호출하여 사용함
    	}
    	
    	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.mgr.member.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 servlet 생성

    package com.mgr.member.controller;
    
    import com.mgr.member.controller.action.Action;
    import com.mgr.member.controller.action.DeleteMemberAction;
    import com.mgr.member.controller.action.EditAdminAction;
    import com.mgr.member.controller.action.IdCheckAction;
    import com.mgr.member.controller.action.JoinAction;
    import com.mgr.member.controller.action.JoinFormAction;
    import com.mgr.member.controller.action.LogOutAction;
    import com.mgr.member.controller.action.LoginAction;
    import com.mgr.member.controller.action.LoginFormAction;
    import com.mgr.member.controller.action.MainAction;
    import com.mgr.member.controller.action.UpdateAction;
    import com.mgr.member.controller.action.UpdateFormAction;
    
    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 생성
    		return ac;
    	}
    }
     
     

     

    *Action getAction(String command){Action ac=null; 코드 return ac;}

    -코드 내용 배경색 회색

     

    로그인 화면

    if(command.equals("loginForm")) ac=new LoginFormAction();
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>loginForm.jsp</title>
    <script src="script/member.js"></script>
    </head>
    <body>
    <form action="member.do" method="post" name="frm">
    	<input type="hidden" name="command" value="login"/>
    	<table>
    		<tr><td> 아이디 </td><td>
    			<input type="text" name="userid"></td></tr>
    		<tr><td> 암&nbsp;&nbsp;&nbsp;호 </td><td>
    			<input type="password" name="pwd"></td></tr>
    		<tr><td colspan="2" align="center">
    			<input type="submit" value="로그인" 
    				onClick="return loginCheck();">
    			<input type="reset" value="취소">
    			<input type="button" value="회원가입"
    			 onClick="location.href='member.do?command=joinForm'">
    			</td></tr>
    		<tr><td colspan="2">${message}</td></tr>
    	</table>
    </form>
    </body>
    </html>
     
     
    package com.mgr.member.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";
    		
    		HttpSession session=request.getSession();
    		if(session.getAttribute("loginUser")!=null)	
    			url="member.do?command=main";
    		
    		RequestDispatcher dp
    			=request.getRequestDispatcher(url);
    		dp.forward(request, response);
    	}
    }

     

    File 생성하여 member.js로 파일 생성

    function loginCheck(){
    	if( document.frm.userid.value == "" ){
    		alert("아이디를 입력하세요");
    		document.frm.userid.focus();
    		return false;
    	}
    	if( document.frm.pwd.value == ""){
    		alert("암호를 입력하세요");
    		document.frm.pwd.focus();
    		return false;
    	}
    	return true;
    }

     

    member Dto 생성

    package com.mgr.member.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;
    	}
    }

     

    Member Dao 생성

    package com.mgr.member.dao;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    
    import com.mgr.member.dto.MemberDto;
    
    public class MemberDao {
    	
    	// 싱글턴 코드
    	private MemberDao() {}
    	private static MemberDao ist=new MemberDao();
    	public static MemberDao getInstance() {return ist;}
    	
    	// 데이터베이스 Access에 필요한 객체 및 변수
    	Connection con=null;
    	PreparedStatement pstmt=null;
    	ResultSet rs=null;
    	String driver="oracle.jdbc.OracleDriver";
    	String url="jdbc:oracle:thin:@localhost:1521:xe";
    	
    	// getConnection과 close
    	private 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;
    	}
    	private void close() {
    		try{
    			if(con!=null) con.close();
    			if(pstmt!=null) pstmt.close();
    			if(rs!=null) rs.close();
    		} catch(Exception e){e.printStackTrace();}
    	}
    }

     

    로그인 실행

    else if(command.equals("login")) ac=new LoginAction();
    package com.mgr.member.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.mgr.member.dao.MemberDao;
    import com.mgr.member.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", "비밀번호 오류");
    		else if(!mdto.getPwd().equals(pwd)) 
    			request.setAttribute("message", "입력한 비밀번호가 틀립니다");
    		else if(mdto.getPwd().equals(pwd)) {
    			url="member.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=getConnection();
    	try {
    		pstmt=con.prepareStatement(sql);
    		pstmt.setString(1, userid);
    		rs=pstmt.executeQuery();
    		if(rs.next()) {
    			mdto=new MemberDto();
    			mdto.setUserid(rs.getString("userid"));
    			mdto.setName(rs.getString("name"));
    			mdto.setPwd(rs.getString("pwd"));
    			mdto.setPhone(rs.getString("phone"));
    			mdto.setEmail(rs.getString("email"));
    			mdto.setAdmin(rs.getInt("admin"));
    		}
    	} catch(SQLException e){e.printStackTrace();
    	} finally{close();}  
    	return mdto;
    }

     

    로그인 후 창

    else if(command.equals("main")) ac=new MainAction();
     
    package com.mgr.member.controller.action;
    
    import java.io.IOException;
    import java.util.ArrayList;
    
    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.mgr.member.dao.MemberDao;
    import com.mgr.member.dto.MemberDto;
    
    public class MainAction implements Action {
    
    	@Override
    	public void execute(HttpServletRequest request, 
    			HttpServletResponse response) 
    			throws ServletException, IOException {
    		String url="member/main.jsp"; 
    		
    		HttpSession session=request.getSession();
    		if(session.getAttribute("loginUser")==null) 
    			url="member/loginForm.jsp";
    		
    		MemberDao mdao=MemberDao.getInstance();
    		ArrayList<MemberDto> list=mdao.selectMember();
    		
    		request.setAttribute("mList", list);
    		RequestDispatcher rd=request.getRequestDispatcher(url);
    		rd.forward(request, response);
    	}
    }

     

    MemberDao에 selectMember 생성

    public ArrayList<MemberDto> selectMember() {
    	ArrayList<MemberDto> list=new ArrayList<>();
    	String sql="select*from member order by admin, userid";
    	con=getConnection();
    	try {
    		pstmt=con.prepareStatement(sql);
    		rs=pstmt.executeQuery();
    		while(rs.next()) {
    			MemberDto mdto=new MemberDto();
    			mdto.setUserid(rs.getString("userid"));
    			mdto.setName(rs.getString("name"));
    			mdto.setPwd(rs.getString("pwd"));
    			mdto.setPhone(rs.getString("phone"));
    			mdto.setEmail(rs.getString("email"));
    			mdto.setAdmin(rs.getInt("admin"));
    			list.add(mdto); 
    		}
    	} catch(SQLException e){e.printStackTrace();
    	} finally{close();}  
    	return list;
    }
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
    <c:if test="${empty loginUser}">
    	<jsp:forward page='../member.do?command=loginForm'/>
    </c:if>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>main.jsp</title>
    <script src="script/member.js"></script>
    </head>
    <body>
    <table>
    	<tr><td>${loginUser.name}(${loginUser.userid })님</td></tr>
    	<tr><td> email: ${loginUser.email }</td></tr>
    	<tr><td> 전화번호: ${loginUser.phone }</td></tr>
    	<tr><td>
    		<input type="button" value="로그아웃" 
    			onclick="location.href='member.do?command=logout'">
    		<input type="button" value="회원정보변경" 
    			onclick="location.href='member.do?command=updateForm'">
    		<input type="button" value="회원 탈퇴" 
    			onclick="deleteMember();">
    	</td></tr>
    </table>
    <br><br>
    
    <c:if test="${loginUser.admin==1 }">
    	<table align="left" width="800" bgcolor="black" cellspacing="1">
    		<tr bgcolor="white"><th>아이디</th><th>이름</th>
    										<th>전화번호</th><th>이메일</th>
    										<th>등급</th><th>등급변경</th>
    		</tr>
    		<c:forEach var="member" items="${mList}">
    			<tr bgcolor="white" align="center">
    				<td>${member.userid}</td><td>${member.name}</td>
    				<td>${member.phone}</td><td>${member.email}</td>
    				<td>
    					<c:if test="${member.admin==1}">관리자</c:if>
    					<c:if test="${member.admin==0}">일반회원</c:if></td>
    				<td width="180">
    					<c:if test="${loginUser.userid!=member.userid}">
    					<c:if test="${member.admin==0}">
    						<input type="button" value="관리자로 변경"
    						onClick="location.href='member.do?command=editAdmin&userid=${member.userid}'">
    					</c:if>
    					<c:if test="${member.admin==1}">
    						<input type="button" value="일반회원으로 변경"
    						onClick="location.href='member.do?command=editAdmin&userid=${member.userid}'">
    					</c:if>
    				</c:if></td>
    			</tr>
    		</c:forEach>
    	</table>
    </c:if>
    
    </body>
    </html>
     

     

    로그아웃

    else if(command.equals("logout")) ac=new LogOutAction();
    package com.mgr.member.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 JoinFormAction();
    package com.mgr.member.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 JoinFormAction 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>
    <script src="script/member.js"></script>
    </head>
    <body>
    
    <h2>회원 가입</h2> 
    '*' 표시 항목은 필수 입력 항목입니다.
    
    <form action="member.do" method="post" name="frm">
    	<input type="hidden" name="command" value="join">
    	<table>
    		<tr><td>이름</td><td>
    			<input type="text" name="name" size="20">&nbsp;*</td></tr>
    		<tr><td>아이디</td><td>
    			<input type="text" name="userid" size="20">&nbsp;*
    			<input type="button" value="중복 체크" onClick="idCheck();"/>
    			<input type="hidden" name="reid" value=""></td></tr>
    		<tr><td>비밀번호</td><td>
    			<input type="password" name="pwd" size="20">&nbsp;*</td></tr>
    		<tr><td>비밀번호  확인</td><td>
    			<input type="password" name="pwd_check" size="20">&nbsp;*</td></tr>
    		<tr><td>이메일</td><td>
    			<input type="text" name="email" size="20">&nbsp;</td></tr>
    		<tr><td>전화번호</td><td>
    			<input type="text" name="phone" size="20">&nbsp;</td></tr>
    		<tr><td>등급</td><td>
    			<input type="radio" name="admin" value="0" 
    				checked="checked">일반회원&nbsp;
    			<input type="radio" name="admin" value="1">관리자</td></tr>
    		<tr><td colspan="2" align="center">
    			<input type="submit" value="회원 가입" 
    				onClick="return joinCheck()"/>
    			<input type="reset" value="취소"></td></tr>
    	</table>
    </form>
    
    </body>
    </html>

     

    아이디 중복 확인

    package com.mgr.member.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.mgr.member.dao.MemberDao;
    import com.mgr.member.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("result", result);
    		request.setAttribute("userid", userid);
    		
    		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>
    <script src="script/member.js"></script>
    </head>
    <body>
    
    <c:if test="${result==1}">
    	<script type="text/javascript">
    		opener.document.frm.userid.value="";
    		opener.document.frm.reid.value="";
    	</script>
    	${userid}는 이미 사용 중인 아이디입니다.
    </c:if>
    
    <c:if test="${result==-1}">
    	${userid}는 사용 가능한 아이디입니다. 
    	<input type="button" value="사용" class="cancel"
    		onclick="idok('${userid}')">
    </c:if>
    <br><br><br>
    
    <form action="member.do" name="frm">
    	<input type="hidden" name="command" value="idCheck">
    	아이디 <input type="text" name="userid" value="${userid}">
    				<input type="submit" value="중복 체크">
    </form><br>
    
    </body>
    </html>

     

    member.js에 추가

    function idCheck(){
    	if(document.frm.userid.value.length==0){
    		alert('아이디를 입력해주세요');
    		document.frm.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("member.do?command=idcheck&userid="
    							+inputid, "idcheck", opt);
    }
    
    function joinCheck(){
    	if(document.frm.name.value.length==0){
    		alert('이름은 필수입력 사항입니다');
    		document.frm.name.focus();
    		return false;
    	} else if(document.frm.userid.value.length==0){
    		alert('아이디는 필수입력 사항입니다');
    		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.pwd.value.length==0){
    		alert('비밀번호는 필수입력 사항입니다');
    		document.frm.pwd.focus();
    		return false;
    	} else if(document.frm.pwd.value!=
    				document.frm.pwd_check.value){
    		alert("비밀번호 확인이 일치하지 않습니다");
    		document.frm.pwd.focus();
    		return false;
    	} else{
    		return true;
    	}
    }

     

    회원가입 실행

    else if(command.equals("join")) ac=new JoinAction();
    package com.mgr.member.controller.action;
    
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.mgr.member.dao.MemberDao;
    import com.mgr.member.dto.MemberDto;
    
    public class JoinAction implements Action {
    
    	@Override
    	public void execute(HttpServletRequest request, 
    			HttpServletResponse response) 
    			throws ServletException, IOException {
    		
    		MemberDto mdto=new MemberDto();
    		
    		mdto.setName(request.getParameter("name"));
    		mdto.setUserid(request.getParameter("userid"));
    		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);
    		
    		if(result==1) request.setAttribute("message", "회원가입 완료");
    		else request.setAttribute("message", "회원가입 실패");
    		
    		//RequestDispatcher dp
    		//	=request.getRequestDispatcher("member/loginForm.jsp");
    		//dp.forward(request, response);
    		
    // 리퀘스트 포워딩으로 insert하고 이동한 경우, 
    // 새로고침(F5)을 누르면 request에 담겨 있는 같은 값으로 
    // 다시 insert하는 동작이 새로 동작함. 
    // 그래서 기본키 또는 unique 값 제한에 위배되는 경우가 많음.
    // 따라서 insert 명령에 한해서만 response.sendRedirect로 이동함.
    		response.sendRedirect("member/loginForm.jsp");
    	}
    }

     

    MemberDao에 insertMember 생성

    public int insertMember(MemberDto mdto) {
    	int result=0;
    	String sql="insert into member values(?,?,?,?,?,?)";
    	con=getConnection();
    	try {
    		pstmt=con.prepareStatement(sql);
    		pstmt.setString(1,mdto.getName());
    		pstmt.setString(2,mdto.getUserid());
    		pstmt.setString(3,mdto.getPwd());
    		pstmt.setString(4,mdto.getEmail());
    		pstmt.setString(5,mdto.getPhone());
    		pstmt.setInt(6,mdto.getAdmin());
    		
    		result=pstmt.executeUpdate();
    	} catch (Exception e) { e.printStackTrace();
    	} finally {close();}
    	return result;
    }
     

     

    member list에 update 하기

    else if(command.equals("update")) ac=new UpdateAction();
    package com.mgr.member.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.mgr.member.dao.MemberDao;
    import com.mgr.member.dto.MemberDto;
    
    
    public class UpdateAction implements Action {
    
    	@Override
    	public void execute(HttpServletRequest request, 
    			HttpServletResponse response) throws ServletException, 
    			IOException {
    		
    		MemberDto mdto=new MemberDto();
    		mdto.setName(request.getParameter("name"));
    		mdto.setUserid(request.getParameter("userid"));
    		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.updateMember(mdto);
    		HttpSession session =request.getSession();
    		
    		if(result==1) {
    			request.setAttribute("message", 
    					"회원정보를 수정하였습니다");
    			session.setAttribute("loginUser", mdto); 
    			// 세션 로그인 정보를 수정된 내용으로 교체
    		} else {
    			request.setAttribute("message", "회원정보 수정하지 못했습니다");
    		}
    		
    		RequestDispatcher dp
    			=request.getRequestDispatcher("member.do?command=main");
    		dp.forward(request, response);
    	}
    }

     

    MemberDao에 updateMember 추가

    public int updateMember(MemberDto mdto) {
    	int result=0;
    	con=getConnection();
    	String sql="update member set name=?, "
    			+ "pwd=?, email=?, phone=?, admin=?"
    			+ " where userid=?";
    	try {
    		pstmt=con.prepareStatement(sql);
    		pstmt.setString(1,mdto.getName());
    		pstmt.setString(2,mdto.getPwd());
    		pstmt.setString(3,mdto.getEmail());
    		pstmt.setString(4,mdto.getPhone());
    		pstmt.setInt(5,mdto.getAdmin());
    		pstmt.setString(6,mdto.getUserid());
    		result=pstmt.executeUpdate();
    	} catch (Exception e) { e.printStackTrace();
    	} finally {close();}
    	return result;
    }
    <%@ 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>updateForm</title>
    <script src="script/member.js"></script>
    </head>
    <body>
    
    <h2>회원 정보 수정</h2>
    <form action="member.do" method="post" name="frm">
    	<input type="hidden" name="command" value="update">
    	<table>
    		<tr><td>이름</td><td><input type="text" name="name"
    				value="${loginUser.name }"></td></tr>
    		<tr><td>아이디</td><td>${loginUser.userid }
    			<input type="hidden" name="userid" 
    				value="${loginUser.userid}"></td></tr>
    		<tr><td>암호</td><td>
    			<input type="password" name="pwd"
    				size="20"></td></tr>
    		<tr><td>암호확인</td><td>
    			<input type="password" name="pwd_check"
    				size="20"></td></tr>
    		<tr><td>이메일</td><td>
    			<input type="text" name="email" 
    				value="${loginUser.email}"></td></tr>
    		<tr><td>전화번호</td><td>
    			<input type="text" name="phone" 
    				value="${loginUser.phone}"></td></tr>
    		<tr><td>등급</td><td>
    			<c:choose>
    				<c:when test="${mdto.admin==0 }">
    					<input type="radio" name="admin" value="0" 
    						checked="checked">일반회원
    					<input type="radio" name="admin" value="1">
    					관리자
    				</c:when>
    				<c:otherwise>
    					<input type="radio" name="admin" value="0">
    					일반회원
    					<input type="radio" name="admin" value="1" 
    						checked="checked">관리자
    				</c:otherwise>
    			</c:choose></td></tr>
    			<tr><td colspan="2" align="center">
    				<input type="submit" value="확인" 
    					onClick="return updateCheck()">&nbsp;&nbsp;
    				<input type="reset" value="취소">
    				<input type="button" value="메인으로" 
    					onClick="member.do?command=main"/></td></tr>
    	</table>
    </form>
    </body>
    </html>

     

    일반회원, 관리자 전환하기

    else if(command.equals("editAdmin")) ac=new EditAdminAction();
    package com.mgr.member.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.mgr.member.dao.MemberDao;
    import com.mgr.member.dto.MemberDto;
    
    public class EditAdminAction implements Action {
    
    	@Override
    	public void execute(HttpServletRequest request, 
    			HttpServletResponse response) 
    			throws ServletException, IOException {
    		// 전달된 userid로 회원을 검색하여 리턴받은 후
    		String userid = request.getParameter("userid");
    		MemberDao mdao = MemberDao.getInstance();
    		MemberDto mdto=mdao.getMember(userid);
    
    		// 해당 회원의 admin 값의 반대값으로 수정하는 메서드 호출함
    		int admin=mdto.getAdmin();
    		if(admin==0) admin=1;
    		else admin=0;
    		
    		mdao.editAdmin(userid,admin);
    		// main으로 되돌아감
    		
    		RequestDispatcher rd
    			=request.getRequestDispatcher("member.do?command=main");
    		rd.forward(request, response);
    	}
    }

    MemberDao에 editAdmin 추가

    public void editAdmin(String userid, int admin) {
    	String sql="update member set admin=? where userid=?";
    	con=getConnection();
    		try {
    			pstmt=con.prepareStatement(sql);
    			pstmt.setInt(1,admin);
    			pstmt.setString(2,userid);
    			pstmt.executeUpdate();
    		} catch (SQLException e) { e.printStackTrace();
    		} finally {close();}
    }
    김두울 등급 변경 클릭
    일반회원에서 관리자로 변경됨을 확인

     

    회원탈퇴

    else if(command.equals("deleteMember")) ac=new DeleteMemberAction();
    package com.mgr.member.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.mgr.member.dao.MemberDao;
    import com.mgr.member.dto.MemberDto;
    
    public class DeleteMemberAction implements Action {
    
    	@Override
    	public void execute(HttpServletRequest request, 
    			HttpServletResponse response) 
    			throws ServletException, IOException {
    		HttpSession session=request.getSession();
    		MemberDto mdto=(MemberDto)session.getAttribute("loginUser");
    		
    		MemberDao mdao=MemberDao.getInstance();
    		mdao.deleteMember(mdto.getUserid());
    		session.invalidate();
    		
    		request.setAttribute("message", mdto.getUserid()+"회원 탈퇴 정상 실행");
    		
    		// 로그인 페이지로 이동
    		RequestDispatcher dp=request.getRequestDispatcher("member/loginForm.jsp");
    		dp.forward(request, response);
    	}
    }

     

    MemberDao에 deleteMember 생성

    public void deleteMember(String userid) {
    	String sql = "delete from member where userid=?";
    	con = getConnection();
    	try {
    		pstmt = con.prepareStatement(sql);
    		pstmt.setString(1,  userid);
    		pstmt.executeUpdate();
    	} catch (SQLException e) { e.printStackTrace();
    	} finally { close();  }		
    }

     


    최종 파일

    댓글

Designed by Tistory.