본문 바로가기

웹 - 서버

웹 - 서버 - 회원정보 수정/ 로그인-회원가입 전체 코드

)수정

일반 회원은 회원등급 수정 불가

-> 수정 폼 만들기 (추가 폼 복사)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script> 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>

<style type="text/css">
	#box{
		width:800px;
		margin:auto;
		margin-top: 100px;
	}

	th{
		vertical-align: middle !important;
		text-align: right;
		font-size: 18px; 
	}
	
	#id_msg{
		display: inline-block;
		width: 300px;
		height: 20px;
		margin-left: 10px;
	}
</style>

<!-- 주소 검색 API -->
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>

<script type="text/javascript">	

	function find_addr(){	
		// 주소 검색 api
	    new daum.Postcode({
	        oncomplete: function(data) {
	            // 팝업에서 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분입니다.
	            // 예제를 참고하여 다양한 활용법을 확인해 보세요.
	            $("#mem_zipcode").val(data.zonecode); // 우편번호 넣기
	            $("#mem_addr").val(data.address);	  // 주소 넣기
	        }
	    }).open();
	} // end - find_addr()
	
	function send(f){
		
		let mem_name 	= f.mem_name.value.trim();
		let mem_pwd	 	= f.mem_pwd.value.trim();
		let mem_zipcode = f.mem_zipcode.value.trim();
		let mem_addr	= f.mem_addr.value.trim();
		
		if(mem_name=='') {
			alert('이름을 입력하시오.');
			f.mem_name.value = "";
			f.mem_name.focus();
			return;
		}
		if(mem_pwd=='') {
			alert('비밀번호를 입력하시오.');
			f.mem_pwd.value = "";
			f.mem_pwd.focus();
			return;
		}
		if(mem_zipcode=='') {
			alert('우편번호를 입력하시오.');
			f.mem_zipcode.value = "";
			f.mem_zipcode.focus();
			return;
		}
		if(mem_addr=='') {
			alert('주소를 입력하시오.');
			f.mem_addr.value = "";
			f.mem_addr.focus();
			return;
		}
		
		f.action = "modify.do";	// MemberModifyAction
		f.submit();			    // 전송
	} // end - send()
	
</script>

<script type="text/javascript">
	$(document).ready(function(){
		// element + attribute selector
		$("select[name='mem_grade']"),val("${ vo.mem_grade }");
		
		
	});
</script>

</head>
<body>

<form class="form-inline"> <!--form-inline: 같은 항목을 한줄로 처리해줌 -->
	<input type="hidden" name="mem_idx" value="${ vo.mem_idx }">
	<div id="box">
		<div class="panel panel-primary">
			<div class="panel-heading"><h4>::::정보 수정::::</h4></div>
			<div class="panel-body">
				<table class="table">
					<tr>
						<th>이름</th>
						<td><input style="width:50%;" class="form-control" name="mem_name" value="${ vo.mem_name }"></td>
					</tr>
					<tr>
						<th>아이디</th>
						<td><input style="width:50%;" class="form-control" name="mem_id" 
								   value="${ vo.mem_id }" readonly="readonly"></td>
					</tr>
					<tr>
						<th>비밀번호</th>
						<td><input style="width:50%;" class="form-control" type="password" name="mem_pwd" value="${ vo.mem_pwd }"></td>
					</tr>
					<tr>
						<th>우편번호</th>
						<td>
							<input style="width:50%;" class="form-control" name="mem_zipcode" id="mem_zipcode"
								value="${ vo.mem_zipcode }">
							<input class="btn btn-info" type="button" value="주소검색" onclick="find_addr();">
						</td>
					</tr>
					<tr>
						<th>주소</th>
						<td>
							<input style="width:100%;" class="form-control" name="mem_addr" id="mem_addr" value="${ vo.mem_addr }">
						</td>
					</tr>
					
					<tr>
						<th>회원등급</th>
						<td>
							<!-- 로그인유저가 관리자면 회원등급수정 가능 -->
							<c:if test="${ user.mem_grade eq '관리자' }">
								<select style="width:50%;" name="mem_grade" class="form-control">
									<option value="일반">일반</option>
									<option value="관리자">관리자</option>
								</select>
							</c:if>	
							<!-- 로그인유저가 관리자면 회원등급수정 불가 -->
							<c:if test="${ user.mem_grade eq '일반' }">
								<input style="width:50%;" class="form-control" name="mem_grade" 
								   value="${ vo.mem_grade }" readonly="readonly">
							</c:if>	
						</td>
					</tr>
						
					<tr>
						<td colspan="2" align="center">
							<input class="btn btn-success" type="button" value="목록보기"
								   onclick="location.href='list.do'">
							<input class="btn btn-primary" type="button" value="수정하기"
								   onclick="send(this.form);">							
						</td>
					</tr>
				</table>
			</div>
		</div>
	</div>
</form>

</body>
</html>

 

)수정 폼 서블릿 

package action.member;

import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;

import dao.MemberDao;
import db.vo.MemberVo;

/**
 * Servlet implementation class MemberModifyFormAction
 */
@WebServlet("/member/modify_form.do")
public class MemberModifyFormAction extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		// /member/modify_form.do?mem_idx=8
											
		// parameter 받기
		int mem_idx = Integer.parseInt(request.getParameter("mem_idx"));
		
		// mem_idx에 해당되는 회원정보 얻어온다
		MemberVo vo = MemberDao.getInstance().selectOne(mem_idx);
		
		// request binding
		request.setAttribute("vo", vo);
		
		// Dispatcher형식으로 호출
		String forward_page = "member_modify_form.jsp";
		RequestDispatcher disp = request.getRequestDispatcher(forward_page);
		disp.forward(request, response);
		
	}	
	
}

 

)수정 서블릿 - Vo, Dao 내용 추가 및 수정

package action.member;

import java.io.IOException;

import dao.MemberDao;
import db.vo.MemberVo;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class MemberModifyAction
 */
@WebServlet("/member/modify.do")
public class MemberModifyAction extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		// /member/modify.do?mem_idx=2&mem_name=일길동&mem_id=one&mem_pwd=1234&mem_zipcode=00000&mem_addr=서울시+관악구&mem_grade=일반
		
		request.setCharacterEncoding("utf-8");
		int    mem_idx  	= Integer.parseInt(request.getParameter("mem_idx"));
		String mem_name 	= request.getParameter("mem_name");
		String mem_id		= request.getParameter("mem_id");
		String mem_pwd		= request.getParameter("mem_pwd");
		String mem_zipcode	= request.getParameter("mem_zipcode");
		String mem_addr		= request.getParameter("mem_addr");
		String mem_grade	= request.getParameter("mem_grade");
		
		MemberVo vo = new MemberVo(mem_idx, mem_name, mem_id, mem_pwd, mem_zipcode, mem_addr, mem_grade);
		
		int res = MemberDao.getInstance().update(vo);
		
		response.sendRedirect("list.do");		
	}

}

 

)전체 코드

2024_0625_MemberTest.zip
2.13MB