ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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()">
    			&nbsp;<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

    댓글

Designed by Tistory.