jsp

[jsp] 20. ์›น์‚ฌ์ดํŠธ ์ œ์ž‘๋ฒ•6_ ๋งˆ์ดํŽ˜์ด์ง€ ์ œ์ž‘ (feat. JSP)

jeri 2024. 7. 13. 17:22
๋ฐ˜์‘ํ˜•

01. ๐Ÿ”’JSPFํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด @inlclude ๋””๋ ‰ํ‹ฐ๋ธŒ๋ฅผ ์ด์šฉํ•˜๋ฉด ์ข‹์€ ์ฝ”๋“œ

  • ๊ถŒํ•œ๊ณผ ๊ด€๋ จ๋œ ๋ณด์™„์ฒ˜๋ฆฌ ์ค‘๋ณต์ฝ”๋“œ
  • ๊ธฐ๋ก๊ด€๋ จ ์ค‘๋ณต์ฝ”๋“œ
  • ์˜ˆ์™ธ์ฒ˜๋ฆฌ๊ด€๋ จ ์ค‘๋ณต์ฝ”๋“œ

02. ๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž์ธ์ง€ ํ™•์ธ (๐Ÿ”’security > login_check.jspf)

<%@page import="xyz.itwill.dto.MemberDTO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
//<%-- ๋น„๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž์ธ ๊ฒฝ์šฐ ์—๋Ÿฌ๋ฉ”์„ธ์ง€ ์ถœ๋ ฅํŽ˜์ด์ง€(error_400.jsp)๋กœ ์ด๋™ํ•˜๋Š” JSPF ํŒŒ์ผ --%>    
<%
	//์„ธ์…˜์— ์ €์žฅ๋œ ๊ถŒํ•œ ๊ด€๋ จ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜๋ฐ›์•„ ์ €์žฅ
	MemberDTO loginMember=(MemberDTO)session.getAttribute("loginMember");

	//๋น„๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž๊ฐ€ JSP ๋ฌธ์„œ๋ฅผ ์š”์ฒญํ•œ ๊ฒฝ์šฐ - ๋น„์ •์ƒ์ ์ธ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต ์ฒ˜๋ฆฌ
	if(loginMember==null) {
		out.println("<script type='text/javascript'>");
		out.println("location.href='"+request.getContextPath()+"/index.jsp?workgroup=error&work=error_400';");
		out.println("</script>");
		return;
	}
%>

03. ๋งˆ์ดํŽ˜์ด์ง€ (member > member_mypage.jsp) - ์ž…๋ ฅ

<%@page import="xyz.itwill.dto.MemberDTO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
//<%-- ๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” JSP ๋ฌธ์„œ --%>
//<%-- => ๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž๋งŒ ์š”์ฒญ ๊ฐ€๋Šฅํ•œ JSP ๋ฌธ์„œ --%>
//<%-- => [ํšŒ์›์ •๋ณด๋ณ€๊ฒฝ]์„ ํด๋ฆญํ•œ ๊ฒฝ์šฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅํŽ˜์ด์ง€(password_confirm.jsp)๋กœ ์ด๋™ - ํŽ˜์ด์ง€ ์ด๋™ ๊ด€๋ จ ์ •๋ณด ์ „๋‹ฌ --%>
//<%-- => [ํšŒ์›ํƒˆํ‡ด]๋ฅผ ํด๋ฆญํ•œ ๊ฒฝ์šฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅํŽ˜์ด์ง€(password_confirm.jsp)๋กœ ์ด๋™ - ํŽ˜์ด์ง€ ์ด๋™ ๊ด€๋ จ ์ •๋ณด ์ „๋‹ฌ --%>

//<%-- ๐Ÿ”’๋ฐฉ๋ฒ•1.(๋น„๊ถŒ์žฅ) --%>
/*
<%--
	//์„ธ์…˜์— ์ €์žฅ๋œ ๊ถŒํ•œ ๊ด€๋ จ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜๋ฐ›์•„ ์ €์žฅ
	MemberDTO loginMember=(MemberDTO)session.getAttribute("loginMember");

	//๋น„๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž๊ฐ€ JSP ๋ฌธ์„œ๋ฅผ ์š”์ฒญํ•œ ๊ฒฝ์šฐ - ๋น„์ •์ƒ์ ์ธ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต ์ฒ˜๋ฆฌ
	if(loginMember==null) {
		out.println("<script type='text/javascript'>");
		out.println("location.href='"+request.getContextPath()+"/index.jsp?workgroup=error&work=error_400';");
		out.println("</script>");
		return;
	}
--%>
*/

//<%-- ๐Ÿ”’๋ฐฉ๋ฒ•2.(๊ถŒ์žฅ) ์•ž์œผ๋กœ ๋งŽ์ด ์“ธ ์ฝ”๋“œ๋ฅผ [jspfํŒŒ์ผ]๋กœ ๋งŒ๋“ค์–ด include directive ์ด์šฉํ•˜์ž --%>
//<%-- => ๋™์ ํฌํ•จ์ด ์•„๋‹ˆ๋‹ˆ ํ™œ์šฉํ•˜๋ฉด ์ข‹์„ ๊ฒƒ! --%>
//<%-- => ๊ถŒํ•œ ๊ด€๋ จ ์ค‘๋ณต์ฝ”๋“œ๋ฅผ JSPF ํŒŒ์ผ๋กœ ์ž‘์„ฑํ•˜์—ฌ include ๋””๋ ‰ํ‹ฐ๋ธŒ๋ฅผ ์ด์šฉํ•˜์—ฌ ํฌํ•จํ•˜์—ฌ ์‚ฌ์šฉ --%>
//<%-- => ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์ตœ์†Œํ™” ํ•˜์—ฌ ์ƒ์‚ฐ์„ฑ์„ ๋†’์ด๊ณ  ์œ ์ง€๋ณด์ˆ˜์˜ ํšจ์œจ์„ฑ ์ฆ๊ฐ€ --%>
<%@include file="/security/login_check.jspf" %>
<style type="text/css">
#datail {
	width: 500px;
	margin: 0 auto;
	text-align: left;
}
#link{
	font-size: 1.1em;
}
#link a:hover {
	color: orange;
}
</style>
<h1>๋‚ด์ •๋ณด</h1>
<div id="datail">
	<p>์•„์ด๋”” = <%= loginMember.getId() %></p>
	<p>์ด๋ฆ„ = <%= loginMember.getName() %></p>
	<p>์ด๋ฉ”์ผ = <%= loginMember.getEmail() %></p>
	<p>์ „ํ™”๋ฒˆํ˜ธ = <%= loginMember.getMobile() %></p>
	<p>์ฃผ์†Œ = [<%= loginMember.getZipcode()%>] <%=loginMember.getAddress1() %> <%=loginMember.getAddress2() %></p>
	<p>ํšŒ์›๊ฐ€์ž…๋‚ ์งœ = <%= loginMember.getJoinDate() %></p>
	<p>๋งˆ์ง€๋ง‰ ๋กœ๊ทธ์ธ ๋‚ ์งœ = <%= loginMember.getLastLogin() %></p>
</div>
<div id="link">
	<a href="<%=request.getContextPath()%>/index.jsp?workgroup=member&work=password_confirm&action=modify">[ํšŒ์›์ •๋ณด ๋ณ€๊ฒฝ]</a>&nbsp;&nbsp;
	<a href="<%=request.getContextPath()%>/index.jsp?workgroup=member&work=password_confirm&action=remove">[ํšŒ์›ํƒˆํ‡ด]</a>&nbsp;&nbsp;
</div>

04. ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธํŽ˜์ด์ง€ (member > password_confirm.jsp) - ์ž…๋ ฅ

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
//<%-- ํšŒ์›์ •๋ณด๋ณ€๊ฒฝ ๋˜๋Š” ํšŒ์›ํƒˆํ‡ด๋ฅผ ์œ„ํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅ๋ฐ›๊ธฐ ์œ„ํ•œ JSP ๋ฌธ์„œ  --%>
//<%-- => ๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž๋งŒ ์š”์ฒญ ๊ฐ€๋Šฅํ•œ JSP ๋ฌธ์„œ --%>
//<%-- => [์ž…๋ ฅ์™„๋ฃŒ]๋ฅผ ํด๋ฆญํ•œ ๊ฒฝ์šฐ ์ „๋‹ฌ๊ฐ’์— ์˜ํ•œ ํŽ˜์ด์ง€ ์ด๋™ - ์ž…๋ ฅ๊ฐ’ ์ „๋‹ฌ --%>

<%@include file="/security/login_check.jspf" %>    

<%
	//๋น„์ •์ƒ์ ์ธ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต ์ฒ˜๋ฆฌ
	if(request.getParameter("action")==null) { //action์ด๋ฆ„์œผ๋กœ ์ „๋‹ฌ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ
		out.println("<script type='text/javascript'>");
		out.println("location.href='"+request.getContextPath()+"/index.jsp?workgroup=error&work=error_400';");
		out.println("</script>");
		return;
	}

	//์ „๋‹ฌ๊ฐ’์„ ๋ฐ˜ํ™˜๋ฐ›์•„ ์ €์žฅ
	String action=request.getParameter("action");
	
	//๋น„์ •์ƒ์ ์ธ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต ์ฒ˜๋ฆฌ
	if(!action.equals("modify") && !action.equals("remove")) {
		out.println("<script type='text/javascript'>");
		out.println("location.href='"+request.getContextPath()+"/index.jsp?workgroup=error&work=error_400';");
		out.println("</script>");
		return;
	}
	
	String message=(String)session.getAttribute("message");
	if(message==null) {
		message="";
	} else {
		session.removeAttribute("message");
	}
%>

//๋””์ž์ธ์ด ๋˜‘๊ฐ™์€ JSP ๋ฌธ์„œ๋ฅผ ์ œ์–ด๋ฌธ์„ ํ†ตํ•ด ๋‚ด์šฉ๋งŒ ๋‹ค๋ฅด๋„๋ก ๋งŒ๋“ฆ!
//๋‚ด์šฉ ๋‹ค๋ฆ„์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด action ์ „๋‹ฌ๊ฐ’์„ ์ด์šฉํ•˜์˜€์Œ
<% if(action.equals("modify")) { %>
	<p>ํšŒ์›์ •๋ณด๋ณ€๊ฒฝ์„ ์œ„ํ•ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”.</p>
<% } else { %>	
	<p>ํšŒ์›ํƒˆํ‡ด๋ฅผ ์œ„ํ•ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”.</p>
<% } %>
<form  method="post" name="passwordForm">
	<input type="password" name="passwd">
	<button type="button" onclick="submitCheck();">์ž…๋ ฅ์™„๋ฃŒ</button>
</form>
<p id="message" style="color:red"><%=message %></p>

<script type="text/javascript">
passwordForm.passwd.focus();

function submitCheck() {
	if(passwordForm.passwd.value=="") {
		document.getElementById("message").innerHTML="๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ฐ˜๋“œ์‹œ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”.";
		passwordForm.passwd.focus();
		return;
	}

//	<%-- ์ „๋‹ฌ๊ฐ’์— ์˜ํ•ด form ํƒœ๊ทธ๋กœ ์š”์ฒญํ•˜๋Š” JSP ๋ฌธ์„œ(action ์†์„ฑ๊ฐ’)๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์„ค์ • --%>
	<% if(action.equals("modify")) { //[ํšŒ์›์ •๋ณด๋ณ€๊ฒฝ]์ธ ๊ฒฝ์šฐ %>
		passwordForm.action="<%=request.getContextPath()%>/index.jsp?workgroup=member&work=member_modify";
	<% } else { //[ํšŒ์›ํƒˆํ‡ด]์ธ ๊ฒฝ์šฐ %>
		passwordForm.action="<%=request.getContextPath()%>/index.jsp?workgroup=member&work=member_remove_action";
	<% } %>
	passwordForm.submit();
}
</script>

05. ํšŒ์›์ •๋ณด ๋ณ€๊ฒฝํŽ˜์ด์ง€ (member > member_modify.jsp) - ์ž…๋ ฅ

<%@page import="xyz.itwill.util.Utility"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
//<%-- ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ ๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๋น„๊ตํ•˜์—ฌ ๊ฐ™์€ ๊ฒฝ์šฐ ๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ์ž…๋ ฅํƒœ๊ทธ์˜ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๊ณ  ๋ณ€๊ฒฝ๊ฐ’์„ ์ž…๋ ฅ๋ฐ›๊ธฐ ์œ„ํ•œ JSP ๋ฌธ์„œ --%>
//<%-- => ๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž๋งŒ ์š”์ฒญ ๊ฐ€๋Šฅํ•œ JSP ๋ฌธ์„œ --%>
//<%-- => [ํšŒ์›๋ณ€๊ฒฝ]์„ ํด๋ฆญํ•œ ๊ฒฝ์šฐ ํšŒ์›์ •๋ณด ๋ณ€๊ฒฝํŽ˜์ด์ง€(member_modify_action.jsp)๋กœ ์ด๋™ - ์ž…๋ ฅ๊ฐ’ ์ „๋‹ฌ --%>

<%@include file="/security/login_check.jspf" %>

<%
	//๋น„์ •์ƒ์ ์ธ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต ์ฒ˜๋ฆฌ
	if(request.getMethod().equals("GET")) {
		out.println("<script type='text/javascript'>");
		out.println("location.href='"+request.getContextPath()+"/index.jsp?workgroup=error&work=error_400';");
		out.println("</script>");
		return;
	}

	//์ „๋‹ฌ๊ฐ’์„ ๋ฐ˜ํ™˜๋ฐ›์•„ ์ €์žฅ
	String passwd=Utility.encrypt(request.getParameter("passwd"));
	
	//์ „๋‹ฌ๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๊ฐ™์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅํŽ˜์ด์ง€
	//(password_confirm.jsp)๋กœ ์ด๋™
	if(!passwd.equals(loginMember.getPasswd())) {
		session.setAttribute("message", "๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค.");
		out.println("<script type='text/javascript'>");
		out.println("location.href='"+request.getContextPath()+"/index.jsp?workgroup=member&work=password_confirm&action=modify';");
		out.println("</script>");
		return;
	}
%>

<style type="text/css">
fieldset { text-align: left; margin: 10px auto; width: 1100px; }
legend { font-size: 1.2em; }
#join label { width: 150px; text-align: right; float: left; margin-right: 10px; }
#join ul li { list-style-type: none; margin: 15px 0; }
#fs { text-align: center; }
.error { color: red; position: relative; left: 160px; display: none; }
#idCheck, #postSearch { font-size: 12px; font-weight: bold; cursor: pointer; margin-left: 10px; padding: 2px 10px; border: 1px solid black; }
#idCheck:hover, #postSearch:hover { background: aqua; }
</style>
<form id="join" action="index.jsp?workgroup=member&work=member_modify_action" method="post">
<fieldset>
	<legend>ํšŒ์›์ •๋ณด๋ณ€๊ฒฝ</legend>
	<ul>
		<li>
			<label for="id">์•„์ด๋””</label>
			<input type="text" name="id" id="id" value="<%=loginMember.getId()%>" readonly="readonly">
		</li>
		<li>
			<label for="passwd">๋น„๋ฐ€๋ฒˆํ˜ธ</label>
			<input type="password" name="passwd" id="passwd">
			<span style="color: red;">๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ž…๋ ฅํ•˜์ง€ ๋งˆ์„ธ์š”.</span>
			<div id="passwdRegMsg" class="error">๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์˜๋ฌธ์ž,์ˆซ์ž,ํŠน์ˆ˜๋ฌธ์ž๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜์ด์ƒ ํฌํ•จ๋œ 6~20 ๋ฒ”์œ„์˜ ๋ฌธ์ž๋กœ๋งŒ ์ž‘์„ฑ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.</div>
		</li>
		<li>
			<label for="name">์ด๋ฆ„</label>
			<input type="text" name="name" id="name" value="<%=loginMember.getName()%>" >
			<div id="nameMsg" class="error">์ด๋ฆ„์„ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”.</div>
		</li>
		<li>
			<label for="email">์ด๋ฉ”์ผ</label>
			<input type="text" name="email" id="email" value="<%=loginMember.getEmail()%>" >
			<div id="emailMsg" class="error">์ด๋ฉ”์ผ์„ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”.</div>
			<div id="emailRegMsg" class="error">์ž…๋ ฅํ•œ ์ด๋ฉ”์ผ์ด ํ˜•์‹์— ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค.</div>
		</li>
		<li>
			<label for="mobile">์ „ํ™”๋ฒˆํ˜ธ</label>
			<% String[] mobile=loginMember.getMobile().split("-"); %>
			<select name="mobile1">
				<option value="010" <% if(mobile[0].equals("010")) { %> selected <% } %>>&nbsp;010&nbsp;</option>
				<option value="011" <% if(mobile[0].equals("011")) { %> selected <% } %>>&nbsp;011&nbsp;</option>
				<option value="016" <% if(mobile[0].equals("016")) { %> selected <% } %>>&nbsp;016&nbsp;</option>
				<option value="017" <% if(mobile[0].equals("017")) { %> selected <% } %>>&nbsp;017&nbsp;</option>
				<option value="018" <% if(mobile[0].equals("018")) { %> selected <% } %>>&nbsp;018&nbsp;</option>
				<option value="019" <% if(mobile[0].equals("019")) { %> selected <% } %>>&nbsp;019&nbsp;</option>
			</select>
			- <input type="text" name="mobile2" id="mobile2" size="4" maxlength="4" value="<%=mobile[1]%>">
			- <input type="text" name="mobile3" id="mobile3" size="4" maxlength="4" value="<%=mobile[2]%>">
			<div id="mobileMsg" class="error">์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”.</div>
			<div id="mobileRegMsg" class="error">์ „ํ™”๋ฒˆํ˜ธ๋Š” 3~4 ์ž๋ฆฌ์˜ ์ˆซ์ž๋กœ๋งŒ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”.</div>
		</li>
		<li>
			<label>์šฐํŽธ๋ฒˆํ˜ธ</label>
			<input type="text" name="zipcode" id="zipcode" size="7" value="<%=loginMember.getZipcode()%>"  readonly="readonly">
			<span id="postSearch">์šฐํŽธ๋ฒˆํ˜ธ ๊ฒ€์ƒ‰</span>
			<div id="zipcodeMsg" class="error">์šฐํŽธ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”.</div>
		</li>
		<li>
			<label for="address1">๊ธฐ๋ณธ์ฃผ์†Œ</label>
			<input type="text" name="address1" id="address1" size="50" value="<%=loginMember.getAddress1()%>"  readonly="readonly">
			<div id="address1Msg" class="error">๊ธฐ๋ณธ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”.</div>
		</li>
		<li>
			<label for="address2">์ƒ์„ธ์ฃผ์†Œ</label>
			<input type="text" name="address2" id="address2" size="50" value="<%=loginMember.getAddress2()%>" >
			<div id="address2Msg" class="error">์ƒ์„ธ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”.</div>
		</li>
	</ul>
</fieldset>
<div id="fs">
	<button type="submit">ํšŒ์›๋ณ€๊ฒฝ</button>
	<button type="reset">๋‹ค์‹œ์ž…๋ ฅ</button>
</div>
</form>

<script type="text/javascript">
$("#join").submit(function() {
	var submitResult=true;
	
	$(".error").css("display","none");

	var passwdReg=/^(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[~!@#$%^&*_-]).{6,20}$/g;
	if($("#passwd").val()!="" && !passwdReg.test($("#passwd").val())) {
		$("#passwdRegMsg").css("display","block");
		submitResult=false;
	} 

	if($("#name").val()=="") {
		$("#nameMsg").css("display","block");
		submitResult=false;
	}
	
	var emailReg=/^([a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+(\\.[-a-zA-Z0-9]+)+)*$/g;
	if($("#email").val()=="") {
		$("#emailMsg").css("display","block");
		submitResult=false;
	} else if(!emailReg.test($("#email").val())) {
		$("#emailRegMsg").css("display","block");
		submitResult=false;
	}

	var mobile2Reg=/\\d{3,4}/;
	var mobile3Reg=/\\d{4}/;
	if($("#mobile2").val()=="" || $("#mobile3").val()=="") {
		$("#mobileMsg").css("display","block");
		submitResult=false;
	} else if(!mobile2Reg.test($("#mobile2").val()) || !mobile3Reg.test($("#mobile3").val())) {
		$("#mobileRegMsg").css("display","block");
		submitResult=false;
	}
	
	if($("#zipcode").val()=="") {
		$("#zipcodeMsg").css("display","block");
		submitResult=false;
	}
	
	if($("#address1").val()=="") {
		$("#address1Msg").css("display","block");
		submitResult=false;
	}
	
	if($("#address2").val()=="") {
		$("#address2Msg").css("display","block");
		submitResult=false;
	}
	
	return submitResult;
});
</script>
<script src="//t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
<script>
$("#postSearch").click(function() {
	new daum.Postcode({
	    oncomplete: function(data) {
	        $("#zipcode").val(data.zonecode);
	        $("#address1").val(data.address);
	    }
	}).open();
});
</script>

05. ํšŒ์›์ •๋ณด ๋ณ€๊ฒฝ ์ฒ˜๋ฆฌ (member > member_modify_action.jsp) - ์ฒ˜๋ฆฌ

<%@page import="xyz.itwill.dao.MemberDAO"%>
<%@page import="xyz.itwill.util.Utility"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
//<%-- ํšŒ์›์ •๋ณด๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ MEMBER ํ…Œ์ด๋ธ”์— ์ €์žฅ๋œ ํšŒ์›์ •๋ณด๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ๋‚ด์ •๋ณด ์ถœ๋ ฅํŽ˜์ด์ง€(member_mypage.jsp)๋กœ ์ด๋™ํ•˜๊ธฐ ์œ„ํ•œ URL ์ฃผ์†Œ ์ „๋‹ฌํ•˜๋Š” JSP ๋ฌธ์„œ --%>

//<%-- => ๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž๋งŒ ์š”์ฒญ ๊ฐ€๋Šฅํ•œ JSP ๋ฌธ์„œ --%>
<%@include file="/security/login_check.jspf" %>

<%
	//1.
	//๋น„์ •์ƒ์ ์ธ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต ์ฒ˜๋ฆฌ
	if(request.getMethod().equals("GET")) {
		out.println("<script type='text/javascript'>");
		out.println("location.href='"+request.getContextPath()+"/index.jsp?workgroup=error&work=error_400';");
		out.println("</script>");
		return;
	}
	
	//2.
	//์ „๋‹ฌ๊ฐ’์„ ๋ฐ˜ํ™˜๋ฐ›์•„ ์ €์žฅ
	String id=request.getParameter("id");
	String passwd=request.getParameter("passwd");
	if(passwd==null || passwd.equals("")) {//๋น„๋ฐ€๋ฒˆํ˜ธ ์ „๋‹ฌ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ
		//๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€์ˆ˜์— ์ €์žฅ - ๊ธฐ์กด ๋น„๋ฐ€๋ฒˆํ˜ธ ์œ ์ง€
		passwd=loginMember.getPasswd();
	} else {//๋น„๋ฐ€๋ฒˆํ˜ธ ์ „๋‹ฌ๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ
		//์ƒˆ๋กœ์šด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•”ํ˜ธํ™” ์ฒ˜๋ฆฌํ•˜์—ฌ ๋ณ€์ˆ˜์— ์ €์žฅ - ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ
		passwd=Utility.encrypt(passwd);
	}
	String name=request.getParameter("name");
	String email=request.getParameter("email");
	String mobile=request.getParameter("mobile1")+"-"
		+request.getParameter("mobile2")+"-"+request.getParameter("mobile3");
	String zipcode=request.getParameter("zipcode");
	String address1=request.getParameter("address1");
	String address2=request.getParameter("address2");
	
	//3.
	//MemberDTO ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ „๋‹ฌ๊ฐ’์œผ๋กœ ํ•„๋“œ๊ฐ’ ๋ณ€๊ฒฝ
	MemberDTO member=new MemberDTO();
	member.setId(id);
	member.setPasswd(passwd);
	member.setName(name);
	member.setEmail(email);
	member.setMobile(mobile);
	member.setZipcode(zipcode);
	member.setAddress1(address1);
	member.setAddress2(address2);

	//4.
	//ํšŒ์›์ •๋ณด๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ MEMBER ํ…Œ์ด๋ธ”์— ์ €์žฅ๋œ ํšŒ์›์ •๋ณด๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” DAO ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ
	MemberDAO.getDAO().updateMember(member);
	
	//5.
	//์„ธ์…˜์— ์ €์žฅ๋œ ๊ถŒํ•œ ๊ด€๋ จ ์ •๋ณด(ํšŒ์›์ •๋ณด) ๋ณ€๊ฒฝ
	session.setAttribute("loginMember", MemberDAO.getDAO().selectMember(id));
	
	//6.
	//ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ URL ์ฃผ์†Œ ์ „๋‹ฌ
	out.println("<script type='text/javascript'>");
	out.println("location.href='"+request.getContextPath()+"/index.jsp?workgroup=member&work=member_mypage';");
	out.println("</script>");
%>

06. ํšŒ์›์ •๋ณด ์‚ญ์ œ ์ฒ˜๋ฆฌ (member > member_remove_action.jsp) - ์ฒ˜๋ฆฌ

<%@page import="xyz.itwill.dao.MemberDAO"%>
<%@page import="xyz.itwill.util.Utility"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
//<%-- ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ ๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๋น„๊ตํ•˜์—ฌ ๊ฐ™์€ ๊ฒฝ์šฐ MEMBER ํ…Œ์ด๋ธ”์— ์ €์žฅ๋œ ํšŒ์›์ •๋ณด์˜ ํšŒ์›์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ํƒˆํ‡ด ์ฒ˜๋ฆฌํ•˜๊ณ  ๋กœ๊ทธ์•„์›ƒ ์ฒ˜๋ฆฌํŽ˜์ด์ง€(member_logout_action.jsp)๋กœ  ์ด๋™ํ•˜๋Š” URL ์ฃผ์†Œ๋ฅผ ์ „๋‹ฌํ•˜๋Š” JSP ๋ฌธ์„œ --%>

//<%-- => ๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž๋งŒ ์š”์ฒญ ๊ฐ€๋Šฅํ•œ JSP ๋ฌธ์„œ --%>
<%@include file="/security/login_check.jspf" %>

<%
	//1.
	//๋น„์ •์ƒ์ ์ธ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต ์ฒ˜๋ฆฌ
	if(request.getMethod().equals("GET")) {
		out.println("<script type='text/javascript'>");
		out.println("location.href='"+request.getContextPath()+"/index.jsp?workgroup=error&work=error_400';");
		out.println("</script>");
		return;
	}

	//2.
	//์ „๋‹ฌ๊ฐ’์„ ๋ฐ˜ํ™˜๋ฐ›์•„ ์ €์žฅ
	String passwd=Utility.encrypt(request.getParameter("passwd"));

	//3.	
	//์ „๋‹ฌ๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋กœ๊ทธ์ธ ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๊ฐ™์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅํŽ˜์ด์ง€
	//(password_confirm.jsp)๋กœ ์ด๋™
	if(!passwd.equals(loginMember.getPasswd())) {
		session.setAttribute("message", "๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค.");
		out.println("<script type='text/javascript'>");
		out.println("location.href='"+request.getContextPath()+"/index.jsp?workgroup=member&work=password_confirm&action=remove';");
		out.println("</script>");
		return;
	}

	//4.	
	//์•„์ด๋””์™€ ํšŒ์›์ƒํƒœ๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ MEMBER ํƒœ์ด๋ธ”์— ์ €์žฅ๋œ ํ•ด๋‹น ์•„์ด๋””์˜ ํšŒ์›์ •๋ณด์—์„œ ํšŒ์›์ƒํƒœ๋ฅผ
	//๋ณ€๊ฒฝํ•˜๋Š” DAO ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ - ํƒˆํ‡ดํšŒ์›์œผ๋กœ ๋ณ€๊ฒฝ ์ฒ˜๋ฆฌ
	MemberDAO.getDAO().updateStatus(loginMember.getId(), 0);

	//5.	
	//ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ URL ์ฃผ์†Œ ์ „๋‹ฌ
	out.println("<script type='text/javascript'>");
	out.println("location.href='"+request.getContextPath()+"/index.jsp?workgroup=member&work=member_logout_action';");
	out.println("</script>");
%>
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€์ˆ˜0