본문 바로가기

JSP, Servlet/JSP를 이용하여 로그인 페이지 만들기

[JSP] 데이터베이스를 이용한 회원관리 시스템 - 6(회원정보 수정)

회원정보 수정 페이지 이동

회원전용페이지(main.jsp)에 회원정보수정 버튼을 만든다.

<input type="button" value="modify" onclick="location.href='memberUpdate.do?userid=${loginUser.userid}'">

 

 회원 전용 페이지에서 [회원정보변경] 버튼을 클릭

  GET방식으로  MemberUpdateServlet(memberUpdate.do)을 요청한다.

   MemberUpdateServlet의 doGet() 메소드에서 폼에서 입력된 userid를 사용하여 회원 수정 페이지(memberUpadate.jsp)로 이동한다.

  패키지명 : com.human.controller  

  클래스명 : MemberUpdateServlet

  URL Mapping : memberUpadate.do

 

doGet() {
(1) request 객체에서 userid를 얻어온다.
(2) MemberDAO 객체를 생성하고, 사용자 정보를 데이터베이스에서 조회한다.
 getMember(userid)를 호출하고 결과는 MemberVO 객체에 저장한다.
(3) request의 “mVo” 속성을 데이터베이스에서 가져온 MemberVO 객체로 설정한다.

(4) "member/MemberUpdate.jsp"로 forward 한다.

}

<MemberUpdateServlet.java>

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String userid = request.getParameter("userid");
		
		MemberDAO mDao = MemberDAO.getInstance();
		MemberVO mVo = mDao.getUser(userid);
		
		request.setAttribute("mVo", mVo);
		request.getRequestDispatcher("member/memberUpdate.jsp").forward(request, response);
	}

  

 회원정보 수정 페이지

<memberUpdate.jsp>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>member Update</title>
<script type="text/javascript" src="script/member.js"></script>
</head>
<body>
	<h3>Update</h3>
	<form method="POST" action="${pageContext.request.contextPath }/memberUpdate.do" name="joinform">
		<table>
			<tr>
				<td>이름</td>
				<td><input type="text" name="name" readonly="readonly" value="${mVo.name }"></td>
			</tr>
			<tr>
				<td>아이디</td>
				<td><input type="text" name="userid" readonly="readonly" value="${mVo.userid }"></td>
			</tr>
			<tr>
				<td>암호</td>
				<td><input type="password" name="pwd"></td>
			</tr>
			<tr>
				<td>암호확인</td>
				<td><input type="password" name="pwdpwd"></td>
			</tr>
			<tr>
				<td>이메일</td>
				<td><input type="email" name="email" value="${mVo.email }"></td>
			</tr>
			<tr>
				<td>전화번호</td>
				<td><input type="text" name="phone" value="${mVo.phone }"></td>
			</tr>
			<tr>
				<td>등급</td>

				<td><c:choose>
						<c:when test="${mVo.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><input type="submit" value="OK" onclick="return joinCheck()"></td>
				<td><input type="reset" value="cancle"></td>
			</tr>
			<tr>
				<td colspan="2">${message }</td>
			</tr>
		</table>
	</form>
</body>
</html>

 

 회원 정보를 변경하기 위한 데이터베이스 처리를 위해 DAO 클래스에 메소드를 추가

파일이름 : MemberDAO.java

메소드명 : int updateMember(MemberVO mVo)

 

public int updateMember(MemberVO mVo) {
(1) 문자열 변수 sql 선언
 userid를 조건으로 암호, 이메일, 전화번호, 관리자 구분을 Update하는 SQL문
(2) DB에 연결하고 prepareStatement() 객체 pstmt를 생성한다.
(3) pstmt에 mVo 객체에 저장된 암호, 이메일, 전화번호, 관리자, 사용자 아이디를 설정한다.
(4) Update문을 실행한다.
(5) Update 실행 결과를 return한다.
}

 

<MemberDAO.java>

public int updateMember(MemberVO mVo) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		int result = -1;

		String sql = "update membership set pwd = ?, email = ?, phone = ?, admin = ? where userid = ?";

		try {
			conn = getConnection();
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, mVo.getPwd());
			pstmt.setString(2, mVo.getEmail());
			pstmt.setString(3, mVo.getPhone());
			pstmt.setInt(4, mVo.getAdmin());
			pstmt.setString(5, mVo.getUserid());

			result = pstmt.executeUpdate();

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (conn != null) {
					conn.close();
				}
				if (pstmt != null) {
					pstmt.close();
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}

		return result;
	}

 

 

회원정보 수정 페이지(memberUpdate.jsp)에서 [확인] 버튼을 클릭하면 memberUpdate.do를 요청한다.

<form method="POST" action="${pageContext.request.contextPath }/memberUpdate.do" name="joinform">

 수정 요청의 처리는 MemberUpdateServlet의 doPost()에서 구현

protected void doPost() {
(1) 수정 화면에서 입력한 회원 정보를 MemberVO 객체에 저장한다.
 사용자 아이디, 암호, 이메일, 전화번호, 관리자 구분
(2) MemberDAO 객체를 생성하고 updateMember() 메소드를 호출하여 정보 변경 처리 한다.

(3) "login.do"로 페이지 전환

 

<MemberUpdateServlet.jsp>

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		MemberVO mVo = new MemberVO();
		
		String userid = request.getParameter("userid");
		String pwd = request.getParameter("pwd");
		String email = request.getParameter("email");
		String phone = request.getParameter("phone");
		int admin = Integer.parseInt(request.getParameter("admin"));

		MemberDAO mDao = MemberDAO.getInstance();

		mVo.setUserid(userid);
		mVo.setPwd(pwd);
		mVo.setEmail(email);
		mVo.setPhone(phone);
		mVo.setAdmin(admin);

		mDao.updateMember(mVo);
		
		response.sendRedirect("login.do");
	}

 

 

 회원 정보를 수정한 후 login.do 요청할 경우 이미 로그인 완료된 회원이므로 인증을 하지 않고 바로 메인 페이지로 이동한다.

 LoginServlet의 doGet() 메소드 수정

protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String url = "member/login.jsp";
		HttpSession session = request.getSession();
		if (session.getAttribute("loginUser") != null) { // 이미지 로그인 된 사용자임
		url = "main.jsp";
		}
		request.getRequestDispatcher(url).forward(request, response);
	}

 

 

728x90
반응형