WEB/JSTL
[JSTL] interface를 이용한 login
hvoon
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(); }
}


최종 파일
