-
[JSTL] interface를 이용한 loginWEB/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> 암 호 </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"> *</td></tr> <tr><td>아이디</td><td> <input type="text" name="userid" size="20"> * <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"> *</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" size="20"> </td></tr> <tr><td>전화번호</td><td> <input type="text" name="phone" size="20"> </td></tr> <tr><td>등급</td><td> <input type="radio" name="admin" value="0" checked="checked">일반회원 <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()"> <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(); } }
최종 파일
'WEB > JSTL' 카테고리의 다른 글
[JSTL] file upload (0) 2022.09.10 [JSTL] CSS 추가한 login (0) 2022.09.09 [JSTL] 정보수정, 회원&관리자 변화, 탈퇴 (0) 2022.09.09 [JSTL] 로그인, 회원가입, 로그아웃 (0) 2022.09.09 [JSTL] import, redirect, format, form, checkbox (1) 2022.09.09