23.03.23(Jsp)

MH S·2023년 3월 23일
0

Jsp

목록 보기
8/16

로그인 회원가입

MemberMgr.java

package ch14;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;

public class MemberMgr {
	private DBConnectionMgr pool;
	
	public MemberMgr() {
		pool = DBConnectionMgr.getInstance();
	}
	
	// 로그인: 성공 -> true
	public boolean loginMember(String id, String pwd) {
		Connection con = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		String sql = null;
		boolean flag = false;
		try {
			con = pool.getConnection();
			sql = "select id from tblMember where id = ? and pwd = ?";
			pstmt = con.prepareStatement(sql);
			pstmt.setString(1,id);
			pstmt.setString(2,pwd);
			rs = pstmt.executeQuery();
			flag = rs.next();	
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			pool.freeConnection(con, pstmt, rs);
		}
		return flag;
	}
	
	// id 중복 체크 : 중복 -> true
	public boolean checkId(String id) {
		Connection con = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		String sql = null;
		boolean flag = false;
		try {
			con = pool.getConnection();
			sql = "select id from tblMember where id = ?";
			pstmt = con.prepareStatement(sql);
			pstmt.setString(1,id);
			rs = pstmt.executeQuery();
			flag = rs.next();
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			pool.freeConnection(con, pstmt, rs);
		}
		return flag;
	}
	
	// 주소 검색 
	public Vector<ZipcodeBean> searchZipcode(String area3){
		Connection con = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		String sql = null;
		Vector<ZipcodeBean> vlist = new Vector<ZipcodeBean>();
		try {
			con = pool.getConnection();
			sql = "select * from tblZipcode " + "where area3 like ?";
			pstmt = con.prepareStatement(sql);
			pstmt.setString(1, "%" + area3 + "%");
			rs = pstmt.executeQuery();
			while (rs.next()) {
				ZipcodeBean bean = new ZipcodeBean(rs.getString(1),rs.getString(2),rs.getString(3),rs.getString(4));
				// select 뒤에 가져오는 컬럼의 index
				// bean.setZipcode(rs.getString(1));
				// bean.setArea1(rs.getString(2));
				// bean.setArea2(rs.getString(3));
				// bean.setArea3(rs.getString(4));
				vlist.addElement(bean);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			pool.freeConnection(con, pstmt, rs);
		}
		return vlist;
	}
	
	// 회원가입
	public boolean insertMember(MemberBean bean) {
		Connection con = null;
		PreparedStatement pstmt = null;
		
		String sql = null;
		boolean flag = false;
		try {
			con = pool.getConnection();
			sql = "insert tblMember(id,pwd,name,gender,"
					+ "birthday,email,zipcode,address,hobby,job)"
					+ "values(?,?,?,?,?,?,?,?,?,?)";
			pstmt = con.prepareStatement(sql);
			pstmt.setString(1, bean.getId());
			pstmt.setString(2, bean.getPwd());
			pstmt.setString(3, bean.getName());
			pstmt.setString(4, bean.getGender());
			pstmt.setString(5, bean.getBirthday());
			pstmt.setString(6, bean.getEmail());
			pstmt.setString(7, bean.getZipcode());
			pstmt.setString(8, bean.getAddress());
			///////////////////////////////////////
			String lists[] = {"인터넷","여행","게임","영화","운동"};
			String hobby[] = bean.getHobby(); // {"인터넷,"운동"};
			char hb[] = {'0','0','0','0','0'};
			for (int i = 0; i < hobby.length; i++) {
				for (int j = 0; j < lists.length; j++) {
					if(hobby[i].equals(lists[j])) {
						hb[j] = '1';
						break;
					}
				}
			}
			// 10001
			pstmt.setString(9, new String(hb));
			///////////////////////////////////////
			pstmt.setString(10, bean.getJob());
			if(pstmt.executeUpdate()==1)
				flag = true;
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			pool.freeConnection(con, pstmt);
		}
		return flag;
	}
	
	// 회원정보 가져오기
	public MemberBean getMember(String id) {
		Connection con = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		String sql = null;
		MemberBean bean = new MemberBean();
		try {
			con = pool.getConnection();
			sql = "select *from tblMember where id = ?";
			pstmt = con.prepareStatement(sql);
			pstmt.setString(1, id); // id = 'aaa'
			rs = pstmt.executeQuery();
			if(rs.next()) {
				bean.setId(rs.getString("id"));
				bean.setPwd(rs.getString("pwd"));
				bean.setName(rs.getString("name"));
				bean.setGender(rs.getString("gender"));
				bean.setBirthday(rs.getString("birthday"));
				bean.setEmail(rs.getString("email"));
				bean.setZipcode(rs.getString("zipcode"));
				bean.setAddress(rs.getString("address"));
				String hobby = rs.getString("hobby");
				String hb[] = new String[hobby.length()];
				for (int i = 0; i < hb.length; i++) {
					hb[i] = hobby.substring(i,i+1);
				} // 01010 -> {"0","1","0","1","0"};
				bean.setHobby(hb);
				bean.setJob(rs.getString("job"));
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			pool.freeConnection(con, pstmt, rs);
		}
		return bean;
	}
	
	// 회원수정 : id를 제외한 모든 값을 수정
	public boolean updateMember(MemberBean bean) {
		Connection con = null;
		PreparedStatement pstmt = null;
		String sql = null;
		boolean flag = false;
		try {
			con = pool.getConnection();
			sql = "update tblMember set pwd=?,name=?,gender=?,"
					+ "birthday=?,email=?,zipcode=?,address=?,hobby=?"
					+ ",job=? where id=?";
			pstmt = con.prepareStatement(sql);
			pstmt.setString(1, bean.getPwd());
			pstmt.setString(2, bean.getName());
			pstmt.setString(3, bean.getGender());
			pstmt.setString(4, bean.getBirthday());
			pstmt.setString(5, bean.getEmail());
			pstmt.setString(6, bean.getZipcode());
			pstmt.setString(7, bean.getAddress());
			String lists[] = {"인터넷","여행","게임","영화","운동"};
			String hobby[] = bean.getHobby(); // {"인터넷,"운동"};
			char hb[] = {'0','0','0','0','0'};
			for (int i = 0; i < hobby.length; i++) {
				for (int j = 0; j < lists.length; j++) {
					if(hobby[i].equals(lists[j])) {
						hb[j] = '1';
						break;
					}
				}
			}
			pstmt.setString(8, new String(hb));
			pstmt.setString(9, bean.getJob());
			pstmt.setString(10, bean.getId());
			int cnt = pstmt.executeUpdate();
			if(cnt==1)
				flag = true;
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			pool.freeConnection(con, pstmt);
		}
		return flag;
	}
}

member.jsp, idCheck.jspm, zipSearch.jsp

<member.jsp>

<!-- member.jsp -->
<%@page contentType="text/html; charset=UTF-8" %>
<!doctype html>
<html>
<head>
<title>회원가입</title>
<link href="style.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript">
	function idCheck(id) {
		if(id==""){
			alert("아이디를 입력하세요.");
			document.regFrm.id.focus();
			return;//이후에 코드를 실행이 안됨. 함수를 빠져나감.
		}
		url = "idCheck.jsp?id="+id;
		window.open(url,"ID 증복체크","width=300, height=150, top=100, left=100");
	}
	function zipSearch() {
		url = "zipSearch.jsp?search=n";
		window.open(url,"우편번호 검색","width=500, height=300, top=100, left=100, scrollbars=yes");
	}
</script>
</head>
<body bgcolor="#FFFFCC" onLoad="regFrm.id.focus()">
	<div align="center">
		<br /><br />
		<form name="regFrm" method="post" action="memberProc.jsp">
			<table cellpadding="5">
				<tr>
					<td bgcolor="#FFFFCC">
						<table border="1" cellspacing="0" cellpadding="2" width="600">
							<tr bgcolor="#996600">
								<td colspan="3"><font color="#FFFFFF"><b>회원 가입</b></font></td>
							</tr>
							<tr>
								<td width="20%">아이디</td>
								<td width="50%">
									<input name="id" size="15"> 
									<input type="button" value="ID중복확인" 
									onClick="idCheck(this.form.id.value)">
								</td>
								<td width="30%">아이디를 적어 주세요.</td>
							</tr>
							<tr>
								<td>비밀번호</td>
								<td><input type="password" name="pwd" size="15"></td>
								<td>비밀번호를 적어주세요.</td>
							</tr>
							<tr>
								<td>비밀번호 확인</td>
								<td><input type="password" name="repwd" size="15"></td>
								<td>비밀번호를 확인합니다.</td>
							</tr>
							<tr>
								<td>이름</td>
								<td><input name="name" size="15">
								</td>
								<td>이름을 적어주세요.</td>
							</tr>
							<tr>
								<td>성별</td>
								<td><input type="radio" name="gender" value="1" checked><input type="radio" name="gender" value="2">
								</td>
								<td>성별을 선택 하세요.</td>
							</tr>
							<tr>
								<td>생년월일</td>
								<td><input name="birthday" size="6">
									ex)830815</td>
								<td>생년월일를 적어 주세요.</td>
							</tr>
							<tr>
								<td>Email</td>
								<td><input name="email" size="30">
								</td>
								<td>이메일를 적어 주세요.</td>
							</tr>
							<tr>
								<td>우편번호</td>
								<td><input name="zipcode" size="5" readonly>
									<input type="button" value="우편번호찾기" onClick="zipSearch()">
								</td>
								<td>우편번호를 검색하세요.</td>
							</tr>
							<tr>
								<td>주소</td>
								<td><input name="address" size="45"></td>
								<td>주소를 적어 주세요.</td>
							</tr>
							<tr>
								<td>취미</td>
								<td>인터넷<input type="checkbox" name="hobby" value="인터넷">
									여행<input type="checkbox" name="hobby" value="여행"> 게임<input
									type="checkbox" name="hobby" value="게임"> 영화<input
									type="checkbox" name="hobby" value="영화"> 운동<input
									type="checkbox" name="hobby" value="운동">
								</td>
								<td>취미를 선택 하세요.</td>
							</tr>
							<tr>
								<td>직업</td>
								<td><select name=job>
										<option value="0" selected>선택하세요.
										<option value="회사원">회사원
										<option value="연구전문직">연구전문직
										<option value="교수학생">교수학생
										<option value="일반자영업">일반자영업
										<option value="공무원">공무원
										<option value="의료인">의료인
										<option value="법조인">법조인
										<option value="종교,언론,에술인">종교.언론/예술인
										<option value="농,축,수산,광업인">//수산/광업인
										<option value="주부">주부
										<option value="무직">무직
										<option value="기타">기타
								</select></td>
								<td>직업을 선택 하세요.</td>
							</tr>
							<tr>
								<td colspan="3" align="center">
								   <input type="button" value="회원가입" onclick="inputCheck()">
								    &nbsp; &nbsp; 
								    <input type="reset" value="다시쓰기">
								    &nbsp; &nbsp; 
								    <input type="button" value="로그인" onClick="javascript:location.href='login.jsp'">
								 </td>
							</tr>
						</table>
					</td>
				</tr>
			</table>
		</form>
	</div>
</body>
</html>

<idCheck.jsp>

<!-- idCheck.jsp -->
<%@page contentType="text/html; charset=UTF-8"%>
<jsp:useBean id="mgr" class="ch14.MemberMgr"/>
<%
	String id = request.getParameter("id");
	boolean result = mgr.checkId(id);
	//out.print(result);
%>
<!doctype html>
<html>
<head>
<title>ID 중복체크</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body bgcolor="#FFFFCC">
<div align="center">
<br/><b><%=id%></b>
<%
		if(result){
			out.println("는 이미 존재하는 ID입니다.<p/>");
		}else{
			out.println("는 사용 가능합니다.<p/>");
		}
%>
<a href="#" onclick="self.close()">닫기</a>
</div>
</body>
</html>

<zipSearch.jsp>

<!-- zipSearch.jsp -->
<%@page import="ch14.ZipcodeBean"%>
<%@page import="java.util.Vector"%>
<%@page contentType="text/html; charset=UTF-8"%>
<jsp:useBean id="mgr" class="ch14.MemberMgr"/>
<%
	String search = request.getParameter("search");
	Vector<ZipcodeBean> vlist = new Vector<ZipcodeBean>();
	// search 값이 y는 검색, n은 창만 open
	String area3 = null;
	if(search.equals("y")){
		area3 = request.getParameter("area3");
		vlist = mgr.searchZipcode(area3);
		//out.println(vlist.size());
	}
%>
<!doctype html>
<html>
<head>
<title>우편번호 검색</title>
<link href="style.css" rel="stylesheet" type="text/css">
<script type="text/javascript">
	function loadSearch() {
		frm = document.zipFrm;
		if(frm.area3.value==""){
			alert("도로명을 입력하세요.");
			return;
		}
		frm.action = "zipSearch.jsp";
		frm.submit();
	}
	function sendAdd(zipcode, adds) {
		// alert(zipcode + " " + adds);
		// opener -> member.jsp
		opener.document.regFrm.zipcode.value=zipcode;
		opener.document.regFrm.address.value=adds;
		self.close();
	}
</script>
</head>
<body bgcolor="#FFFFCC">
	<div align="center">
		<br />
		<form name="zipFrm" method="post">
			<table>
				<tr>
					<td>
					<br/>도로명 입력 : 	<input name="area3">
						<input type="button" value="검색" onclick="loadSearch()">
					</td>
				</tr>
				<!-- 검색 결과 Start -->
				<%
					if(search.equals("y")){
						if(vlist.isEmpty()){
				%>
				<tr>
					<td align="center"><br>검색된 결과가 없습니다.</td>
				</tr>
				<%
						}else{
				%>
				<tr>
					<td align="center"><br>※검색 후, 아래 주소를 클릭하면 자동으로 입력됩니다.</td>
				</tr>
				<%
					for(int i=0;i<vlist.size();i++){
						ZipcodeBean bean = vlist.get(i);
						String zipcode = bean.getZipcode();
						String adds = bean.getArea1()+" ";
						adds+=bean.getArea2()+" ";
						adds+=bean.getArea3()+" ";
				%>
				<tr>
					<td><a href="#" onClick="sendAdd('<%=zipcode%>','<%=adds%>')"><%=zipcode+" "+adds%></a></td>
				</tr>
				<%
					} //--for
				  } // --if2
				} // --if1
				%>
				<!-- 검색 결과 End -->
				<tr>
					<td align="center"><br/>
					<a href="#" onClick="self.close()">닫기</a></td>
				</tr>
			</table>
			<input type="hidden" name="search" value="y">
		</form>
	</div>
</body>
</html>

arrayTest.jsp, arrayTest2.jsp

<arrayTest.jsp>

<!-- arrayTest.jsp -->
<%@page contentType="text/html; charset=UTF-8" %>
<form action="arrayTest2.jsp">
취미 : 인터넷<input type="checkbox" name="hobby" value="인터넷">
		여행<input type="checkbox" name="hobby" value="여행"> 
		게임<input type="checkbox" name="hobby" value="게임"> 
		영화<input type="checkbox" name="hobby" value="영화"> 
		운동<input type="checkbox" name="hobby" value="운동">
		<input type="submit">
</form>

<arrayTest2.jsp>

<!-- arrayTest2.jsp -->
<%@page import="ch14.MemberBean"%>
<%@page contentType="text/html; charset=UTF-8"%>
<%
	String hobby[] = request.getParameterValues("hobby");
	for(int i=0; i<hobby.length;i++){
		out.println(hobby[i] + "<br>");
	}
	
%><hr>
<jsp:useBean id="bean" class="ch14.MemberBean"/>
<jsp:setProperty property="hobby" name="bean"/>
<%
	String hobby2[] = request.getParameterValues("hobby");
	for(int i=0; i<hobby2.length;i++){
		out.println(hobby2[i] + "<br>");
}
%>

memberProc.jsp, memberUpdate.jsp, memberUpdateProc.jsp

<memberProc.jsp>

<!-- memberProc.jsp -->
<%@page contentType="text/html; charset=UTF-8"%>
<jsp:useBean id="mgr" class="ch14.MemberMgr"/>
<jsp:useBean id="bean" class="ch14.MemberBean"/>
<jsp:setProperty property="*" name="bean"/>
<%
	// 가입을 하고 실패하면 '가입실패' 알림 member.jsp
	boolean result = mgr.insertMember(bean);
	String msg = "가입실패";
	String url = "member.jsp";
	
	// 가입을 하고 성공하면 '가입성공' 후에 login.jsp 응답 (session에 id 값 저장)
	if(result){
		msg = "가입성공";
		url = "login.jsp";
		session.setAttribute("idKey", bean.getId());
	}
%>
<script>
	alert("<%=msg%>");
	location.href = "<%=url%>";
</script>

<memberUpdate.jsp>

<!-- memberUpdate.jsp -->
<%@page import="ch14.MemberBean"%>
<%@page contentType="text/html; charset=UTF-8"%>
<jsp:useBean id="mgr" class="ch14.MemberMgr"/>
<%
		String id = (String)session.getAttribute("idKey");
		if(id==null){
			response.sendRedirect("login.jsp");
			return;
		}
		MemberBean bean = mgr.getMember(id);
%>
<html>
<head>
<title>회원수정</title>
<link href="style.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript">
	function zipCheck() {
		url = "zipSearch.jsp?search=n";
		window.open(url, "ZipCodeSearch","width=500, height=300, top=100, left=100, scrollbars=yes");
	}
</script>
</head>
<body bgcolor="#FFFFCC" onLoad="regFrm.id.focus()">
	<div align="center">
		<br /> <br />
		<form name="regFrm" method="post" action="memberUpdateProc.jsp">
			<table align="center" cellpadding="5" >
				<tr>
					<td align="center" valign="middle" bgcolor="#FFFFCC">
						<table border="1" cellpadding="2" align="center" width="600">
							<tr align="center" bgcolor="#996600">
								<td colspan="3"><font color="#FFFFFF"><b>회원 수정</b></font></td>
							</tr>
							<tr>
								<td width="20%">아이디</td>
								<td width="80%"><input name="id" size="15"
									value="<%=bean.getId() %>" readonly></td>
							</tr>
							<tr>
								<td>패스워드</td>
								<td><input type="password" name="pwd" size="15"
									value="<%=bean.getPwd()%>"></td>
							</tr>
							<tr>
								<td>이름</td>
								<td><input name="name" size="15"
									value="<%=bean.getName()%>"></td>
							</tr>
							<tr>
								<td>성별</td>
								<td><input type="radio" name="gender" value="1"
									<%if(bean.getGender().equals("1")) out.print("checked"); %>><input type="radio" name="gender" value="2"
									<%if(bean.getGender().equals("2")) out.print("checked"); %>>
								</td>
							</tr>
							<tr>
								<td>생년월일</td>
								<td><input name="birthday" size="6"
									value="<%=bean.getBirthday()%>"> ex)830815</td>
							</tr>
							<tr>
								<td>Email</td>
								<td><input name="email" size="30"
									value="<%=bean.getEmail()%>"></td>
							</tr>
							<tr>
								<td>우편번호</td>
								<td><input name="zipcode" size="5"
									value="<%=bean.getZipcode()%>" readonly> <input
									type="button" value="우편번호찾기" onClick="zipCheck()"></td>
							</tr>
							<tr>
								<td>주소</td>
								<td><input name="address" size="45" value="<%=bean.getAddress()%>"></td>
							</tr>
							<tr>
								<td>취미</td>
								<td>
								<%
										String list[] = {"인터넷", "여행", "게임", "영화", "운동"};
										String hb[] = bean.getHobby();//{"1","0","1,"0,"1"}
										for(int i=0;i<hb.length;i++){
								%>
								<%=list[i] %>
								<input type="checkbox" name="hobby" value="<%=list[i]%>" 
								<%=hb[i].equals("1")?"checked":"" %>>
								<%}//---for%>	
								</td>
							</tr>
							<tr>
								<td>직업</td>
								<td><select name="job">
										<option value="0">선택하세요.
										<option value="회사원">회사원
										<option value="연구전문직">연구전문직
										<option value="교수학생">교수학생
										<option value="일반자영업">일반자영업
										<option value="공무원">공무원
										<option value="의료인">의료인
										<option value="법조인">법조인
										<option value="종교,언론,에술인">종교.언론/예술인
										<option value="농,축,수산,광업인">//수산/광업인
										<option value="주부">주부
										<option value="무직">무직
										<option value="기타">기타
								</select>
								<script type="text/javascript">
									document.regFrm.job.value="<%=bean.getJob()%>";
								</script>
								</td>
							</tr>
							<tr>
								<td colspan="3" align="center">
								<input type="submit" value="수정완료"> &nbsp; &nbsp; 
								<input type="reset" value="다시쓰기"></td>
							</tr>
						</table>
					</td>
				</tr>
			</table>
		</form>
	</div>
</body>
</html>

<memberUpdateProc.jsp>

<!--  memberProc.jsp -->
<%@page contentType="text/html; charset=UTF-8"%>
<jsp:useBean id="mgr" class="ch14.MemberMgr"/>
<jsp:useBean id="bean" class="ch14.MemberBean"/>
<jsp:setProperty property="*" name="bean"/>
<%
	boolean result = mgr.updateMember(bean);
	if(result){
%>
	<script>
		alert("회원정보를 수정 하였습니다.");
		location.href="login.jsp";
	</script>
<% }else{%>
	<script>
		alert("회원정보 수정에 실패 하였습니다.");
		history.back(); // 뒤로
	</script>
<% }%>

결과화면






0개의 댓글

관련 채용 정보