WEB/JSTL
[JSTL] 정보수정, 회원&관리자 변화, 탈퇴
hvoon
2022. 9. 9. 20:33
정보수정
1) UpdateServlet
package com.jstl.member;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
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 javax.servlet.http.HttpSession;
import com.jstl.dao.MemberDao;
import com.jstl.dto.MemberDto;
@WebServlet("/update.do")
public class UpdateSevlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public UpdateSevlet() {
super();
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {
String url="member/updateForm.jsp";
/*
// 로그인한 회원의 userid는 세션에도 있기 때문에 파라미터를 이용하지 않아도 됨
HttpSession session=request.getSession();
MemberDto loginUser=(MemberDto)session.getAttribute("loginUser");
String userid=loginUser.getUserid();
// 수정할 회원을 조회해서 dto형식으로 리턴받고
// 이를 request에 저장하여 이동함
// 이 자료는 수정할 입력란에 최초 value 값으로 사용됨
// String userid=request.getParameter("userid");
MemberDao mdao=MemberDao.getInstance();
MemberDto mdto=MemberDto.getInstance(userid);
request.setAttribute("updateMember", mdto);
//같은 정보를 session에서 loginUser라는 이름으로 저장하고
// 위 코드는 주석처리해도 무방
*/
RequestDispatcher dp=request.getRequestDispatcher(url);
dp.forward(request, response);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {
request.setCharacterEncoding("UTF-8");
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);
if(result==1) {
request.setAttribute("message", "회원정보를 수정하였습니다");
HttpSession session =request.getSession();
session.setAttribute("loginUser", mdto);
// 세션 로그인 정보를 수정된 내용으로 교체
} else {
request.setAttribute("message", "회원정보 수정 오류");
}
RequestDispatcher dp
=request.getRequestDispatcher("main.do");
dp.forward(request, response);
}
}
2) updateForm
<%@ 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='login.do'/>
</c:if>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>updateForm.jsp</title>
</head>
<body>
<h2>회원 정보 수정</h2>
<form action="update.do" method="post" name="frm">
<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="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="${loginUser.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="취소"></td></tr>
</table>
</form>
</body>
</html>
3) Dao
public int updateMember(MemberDto mdto) {
int result=0;
String sql="update member set name=?, pwd=?, phone=?, email=?, admin=? where userid=?";
con=getConnection();
try {
pstmt=con.prepareStatement(sql);
pstmt.setString(1,mdto.getName());
pstmt.setString(2,mdto.getPwd());
pstmt.setString(3,mdto.getPhone());
pstmt.setString(4,mdto.getEmail());
pstmt.setInt(5,mdto.getAdmin());
pstmt.setString(6,mdto.getUserid());
result=pstmt.executeUpdate();
} catch (SQLException e) { e.printStackTrace();
} finally {close();}
return result;
}
public void editAdminMember(String userid, String admin) {
String sql="update member set admin=? where userid=?";
con=getConnection();
try {
pstmt=con.prepareStatement(sql);
pstmt.setInt(1,Integer.parseInt(admin));
pstmt.setString(2,userid);
pstmt.executeUpdate();
} catch (SQLException e) { e.printStackTrace();
} finally {close();}
}
회원&관리자 변환
1) EditAdminServlet
package com.jstl.member;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
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.jstl.dao.MemberDao;
@WebServlet("/editadmin.do")
public class EditAdminServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public EditAdminServlet() {
super();
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {
request.setCharacterEncoding("UTF-8");
String userid=request.getParameter("userid");
String admin=request.getParameter("admin");
if(admin.equals("1")) admin="0";
else admin="1";
// userid와 admin으로 수정하고 main.do로 이동
MemberDao mdao=MemberDao.getInstance();
mdao.editAdminMember(userid,admin);
RequestDispatcher dp=request.getRequestDispatcher("main.do");
dp.forward(request, response);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
2) Dao
public void editAdminMember(String userid, String admin) {
String sql="update member set admin=? where userid=?";
con=getConnection();
try {
pstmt=con.prepareStatement(sql);
pstmt.setInt(1,Integer.parseInt(admin));
pstmt.setString(2,userid);
pstmt.executeUpdate();
} catch (SQLException e) { e.printStackTrace();
} finally {close();}
}
탈퇴
1) DeleteServlet
package com.jstl.member;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
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 javax.servlet.http.HttpSession;
import com.jstl.dao.MemberDao;
@WebServlet("/withdraw.do")
public class WithdrawServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public WithdrawServlet() {
super();
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
String userid=request.getParameter("userid");
// 세션을 삭제하고
HttpSession session=request.getSession();
session.invalidate();
// 전달된 아이디로 회원레코드 삭제
MemberDao mdao=MemberDao.getInstance();
mdao.deleteMember(userid);
// 로그인 페이지로 이동
RequestDispatcher dp=request.getRequestDispatcher("member/loginForm.jsp");
dp.forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
2) Dao
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();}
}