CH16 회원가입 프로젝트1

Gm·2021년 9월 24일

JSP 수업

목록 보기
9/10

회원가입 프로젝트 준비하기

(ch16_memberBasic.zip)

  • 폴더 생성 : ch16_member
  • table.sql, member.jsp, style.css, script.js()
    -> 하이디 SQL 실행 후 tblMember, tblZipcode 테이블 생성
  • tblZipcode 테이블에 데이터 입력
    -> 하이디 SQL 실행 후 zipcode.txt 실행
  • 자바 패키지 생성 : ch16
    -> DBConnectionMgr.java는 복사, MemberBean.java, ZipcodeBean.java 생성
  • MemberMgr.java는 db 연동하는 생성자 선언
    -> lib폴더에 mysql-connector-java-5.1.49.jar 파일 넣기
  • https://m.blog.naver.com/zboizz/221721743078 사이트 참조


    실습01)

    1) id 중복확인
    ==> 결과

    <member.jsp> 내용추가

    <script type="text/javascript">
    	function idCheck(id){
    		/* alert(id); */
    		frm = document.regFrm;
    		if(id==""){
    			alert("아이디를 입력하세요");
    			frm.id.focus();
    			return; // 중간에 함수를 빠져나감.			
    		}
    		url = "idCheck.jsp?id="+id;
    		window.open(url,"IDCheck","width=300,height=150");
    	}	
    	function zipSearch(){
    		url = "zipSearch.jsp?search=n";
    		window.open(url,"IDCheck","width=500,height=350,scrollbars=yes");
    	}	
    </script>

    <idCheck.jsp> 페이지 생성

    <%@ page contentType="text/html; charset=EUC-KR"%>
    <jsp:useBean id="mgr" class="ch16.MemberMgr"/>
    <%
    	request.setCharacterEncoding("EUC-KR");
    	String id = request.getParameter("id");
    	boolean result = mgr.idCheck(id);
    	//out.print(result);
    %>
    <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("는 사용가능한 ID 입니다.<P>");
    	}
    %>
    <a href="#" onclick="self.close()">닫기</a>
    </div>
    </body>
    </html>

    <MemberMgr.jsp>
    -ID중복확인 메서드 추가

    // ID 중복확인 : 중복일때 true
    	public boolean idCheck(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(); // 조건에 맞는 id가 있다면 true 리턴
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			pool.freeConnection(con, pstmt, rs);
    		}				
    		return flag;
    	}		
    // ID 중복확인을 위한 main 메서드 -> 콘솔 창에서 확인
    	public static void main(String[] args) {
    		MemberMgr mgr = new MemberMgr();
    		boolean result = mgr.idCheck("aaa");
    		System.out.println("result : " + result);
    	}

    2) 우편번호찾기
    ==> 결과

    <member.jsp> 페이지에 추가

    // 우편번호 검색
    	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();
    				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;
    	}

    <zipSearch.jsp>

    <%@page import="ch16.ZipcodeBean"%>
    <%@page import="java.util.Vector"%>
    <%@ page contentType="text/html; charset=EUC-KR"%>
    <jsp:useBean id="mgr" class="ch16.MemberMgr"/>
    <%
    	request.setCharacterEncoding("EUC-KR");
    	String search = request.getParameter("search");
    	Vector<ZipcodeBean> vlist = null;
    	String area3 = null;
    	//검색이 아니고 창만 open 했을 때 search는 n이고 검색일 때는 y
    	if(search.equals("y")){
    		area3 = request.getParameter("area3");
    		vlist = mgr.searchZipcode(area3);		
    		out.print(vlist.size());
    	}
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <h3>우편번호 검색</h3>
    <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){
    		//opener는 창을 오픈시킨 부모창
    		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="javascript:sendAdd('<%=zipcode %>','<%=adds %>')">
    						<%=zipcode+"" + adds %></a></td>
    					</tr>
    				<%
    						}// End for
    						}// End if~ else
    					}// End if
    				%>
    				<!-- 검색 결과 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>

    <MemberMgr.java>

    // 우편번호 검색
    	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();
    				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;
    	}

0개의 댓글