-
[JSTL] 정보수정, 회원&관리자 변화, 탈퇴WEB/JSTL 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();} }
'WEB > JSTL' 카테고리의 다른 글
[JSTL] CSS 추가한 login (0) 2022.09.09 [JSTL] interface를 이용한 login (0) 2022.09.09 [JSTL] 로그인, 회원가입, 로그아웃 (0) 2022.09.09 [JSTL] import, redirect, format, form, checkbox (1) 2022.09.09 [JSTL] if, when, forEach (0) 2022.09.09