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()">
			&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();}
}