[정보처리산업기사 과정평가형 - 실기] 회원가입 만들기2

    회원가입 만들기 2


     

     

    정상적으로 등록이 완료 되었습니다.

     

    여기서, 이제 회원가입에 대한 조건을 살피고 마무리 짓겠습니다.

     

    2. 회원번호는 자동 생성이 된다.

    해당 페이지가 출력 될 경우, 자동으로 생성 됨을 의미합니다.

     

    따라서, 이에 따른 작성이 필요하게 되었습니다.

     

     

    가장 먼저 DAO부터 만들도록 하겠습니다.

     

     

    DAO 만들기

    똑같이 메소드를 생성 후 위와 같이 작성해줍니다.

     

    select문을 사용할 경우 ResultSet의 객체가 필요하게 됩니다.

    그리고 결과값이 여러개일 경우 배열을 사용하게 되지만,

    위의 경우 한 개의 결과값만을 출력하도록 제한을 걸어놨기 때문에 굳이 필요 없음을 알 수 있습니다.

     

    이제 else if를 활용하여 새로운 경로를 추가하도록 합니다.

     

     

     

    여기서 잠깐! 문제가 생겼습니다.

    회원가입 완료 후 이동하는 경로를 수정해야 할 문제입니다.

     

    지금처럼 완성후 template.jsp로 보내는 것이 아니라, 회원번호가 자동으로 생성되게 만들어야 하기 때문입니다.

     

    처음에 만들었던 insert부분의 return 값 수정하기

    따라서 joinAction이 성공할 경우

    joinNum.me를 실행하도록 경로수정이 필요하게 됩니다.

     

    또한 시작부터 join.jsp의 num이 실행 할 수 있도록

    index.jsp를 설정하도록 합니다.

     

     

    index.jsp

    index.jsp를 실행하게 된다면 joinNum이 실행이 됩니다.

     

     

    join.jsp

    그리고 작성한 결과값이 나올수 있도록 EL문법을 활용하여 저 부분을 추가해줍니다.

     

     

     

    결과 확인하기

    이제 자동으로 회원번호가 등록되는 것을 확인 할 수 있습니다.

     

     

    코드 확인하기

    MemberController.java

    package MemberDB;
    
    import java.io.IOException;
    
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class MemberController extends HttpServlet {
    	
    	
    	
    	protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws Exception {
    		
    		//URL 확인하기
    		String uri = request.getRequestURI();
    		String context = request.getContextPath();
    		String command = uri.substring(context.length());
    		
    		String sit = null;
    		
    		System.out.println("command : "+command);
    		
    		MemberDAO member = new MemberDAO();
    		
    		//회원가입 버튼 클릭
    		if(command.equals("/joinAction.me"))
    		{
    			//member의 JoinAction 메소드 실행시키기.
    			
    			sit = member.JoinAction(request, response);
    			
    			//main화면 출력을 나타내기.  회원가입후 다시 회원가입 화면으로 보낸다.
    			request.setAttribute("pp", "join");
    		}
    		
    		//회원가입 화면 시작할 때.
    		else if(command.equals("/joinNum.me"))
    		{
    			sit = member.JoinNum(request, response);
    			
    			request.setAttribute("pp", "join");
    		}
    
    		
    		
    		//결과 수행
    		RequestDispatcher dispatcher = request.getRequestDispatcher(sit);
    		dispatcher.forward(request, response);
    		
    	}
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		request.setCharacterEncoding("UTF-8");
    		try {
    		doProcess(request, response);
    		}catch(Exception e)
    		{
    			e.printStackTrace();
    		}
    	}
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		request.setCharacterEncoding("UTF-8");
    		try
    		{
    		doProcess(request, response);
    		}
    		catch(Exception e)
    		{
    			e.printStackTrace();
    		}
    	}
    
    }
    

     

    MemberDAO.java

    package MemberDB;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class MemberDAO {
    	Connection con;
    	PreparedStatement pstmt;
    	ResultSet rs;
    
    	MemberDAO() throws Exception {
    		con = getConnection();
    	}
    
    	public static Connection getConnection() throws Exception {
    		Class.forName("oracle.jdbc.OracleDriver");
    		Connection con = DriverManager.getConnection("jdbc:oracle:thin:@//localhost:1521/xe", "hr", "hr");
    		return con;
    	}
    
    	// 회원가입하기
    	// request와 response는 암기하지 말고, servlet으로 생성될때 매개변수를 복사해서 가져오면 된다.
    	public String JoinAction(HttpServletRequest request, HttpServletResponse response) {
    		// db sql문
    		// preparedStatement는 ?의 순서에 따라 값이 등록된다.
    		String sql = "insert into member_tbl_02 values(member_seq.nextval, ?, ?, ?, ?, ?, ?)";
    
    		try {
    			pstmt = con.prepareStatement(sql);
    
    			// submit을 눌렀을 때 form안의 name이 Parameter값으로 변환된다.
    			String name = request.getParameter("name");
    			String tel = request.getParameter("tel");
    			String address = request.getParameter("address");
    			String joindate = request.getParameter("joindate");
    			String grade = request.getParameter("grade");
    			String city = request.getParameter("city");
    
    			// 이를 sql에 접목 시킨다.
    			// 1번째 ?에 name의 값을 넣는다.
    			pstmt.setString(1, name);
    			// 2번째 ?에 tel의 값을 넣는다.
    			pstmt.setString(2, tel);
    			// 3번째 ?에 address의 값을 넣는다.
    			pstmt.setString(3, address);
    			// 4번째 ?에 joindate의 값을 넣는다.
    			pstmt.setString(4, joindate);
    			// 5번째 ?에 grade의 값을 넣는다.
    			pstmt.setString(5, grade);
    			// 6번째 ?에 city의 값을 넣는다.
    			pstmt.setString(6, city);
    
    			// 완료가 되었으면 값을 지정한다.
    			int cnt = pstmt.executeUpdate();
    
    			// 결과값이 0일 경우 실패, 1일 경우 성공이다
    			System.out.println(cnt);
    
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		// 완료가 되었으면 닫아 준다.
    		finally {
    			try {
    				if (pstmt != null)
    					pstmt.close();
    				if (con != null)
    					con.close();
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		}
    
    		return "joinNum.me";
    	}
    
    	// 회원번호 자동 생성하기
    	public String JoinNum(HttpServletRequest request, HttpServletResponse response) {
    		// 조건 첫번째 줄만 표시
    		// CUSTNO(회원번호)를 높은순으로 표시하여 가장 마지막 번호를 제일 위로 보낸다.
    		String sql = "select CUSTNO from member_tbl_02 WHERE ROWNUM =1 ORDER BY CUSTNO DESC";
    
    		try {
    			pstmt = con.prepareStatement(sql);
    
    			rs = pstmt.executeQuery();
    
    			int cnt = 100001;
    
    			if (rs.next())
    				// 첫 번째 컬럼의 값을 가져온다.
    				cnt = rs.getInt(1);
    
    			// custno 컬럼의 값을 가져온다.
    			// int cnt = rs.getInt("custno");
    
    			// 결과값을 request에 담는다.
    			// cnt의 결과값에서 +1을 진행한다.
    			request.setAttribute("cnt", ++cnt);
    
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				if (pstmt != null)
    					pstmt.close();
    				if (con != null)
    					con.close();
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		}
    
    		return "template.jsp";
    	}
    
    }
    

     

    join.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    	pageEncoding="UTF-8"%>
    <%
    	request.setCharacterEncoding("UTF-8");
    %>
    <!DOCTYPE html>
    <html>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <head>
    <title>Hi</title>
    </head>
    <body>
    	<center>
    		<h1>홈쇼핑 회원 등록</h1>
    		<form action="joinAction.me" method="post">
    			<table border="1">
    				<tr>
    					<td>회원번호(자동발생)</td>
    					<td><input type="text" name="num" value="${cnt}"></td>
    				</tr>
    				<tr>
    					<td>회원성명</td>
    					<td><input type="text" name="name"></td>
    				</tr>
    				<tr>
    					<td>회원전화</td>
    					<td><input type="text" name="tel"></td>
    				</tr>
    				<tr>
    					<td>회원주소</td>
    					<td><input type="text" name="address"></td>
    				</tr>
    				<tr>
    					<td>가입일자</td>
    					<td><input type="text" name="joindate"></td>
    				</tr>
    				<tr>
    					<td>고객등급</td>
    					<td><input type="text" name="grade"></td>
    				</tr>
    				<tr>
    					<td>도시코드</td>
    					<td><input type="text" name="city"></td>
    				</tr>
    				<tr>
    					<td colspan="2"><center><input type="submit" value="등록"> <input
    						type="button" value="조회"></center></td>
    				</tr>
    			</table>
    		</form>
    	</center>
    </body>
    </html>

     

    index.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    	pageEncoding="UTF-8"%>
    <%
    	request.setCharacterEncoding("UTF-8");
    %>
    <!DOCTYPE html>
    <html>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <head>
    <title>Hi</title>
    </head>
    <body>
    	<% response.sendRedirect("joinNum.me"); %>
    </body>
    </html>

     

     

     

    전체 목록


    [정보처리산업기사 과정평가형] 시험보기 앞서

    [정보처리산업기사 과정평가형] 0. 만드려는 모습

    [정보처리산업 과정평가형 - 실기] DB 만들기

    [정보처리산업 과정평가형 - 실기]JSP 화면 만들기

    [정보처리산업 과정평가형 - 실기] Java 만들기

    [정보처리산업기사 과정평가형 - 실기] DAO 만들기

    [정보처리산업기사 과정평가형 - 실기] 회원가입 만들기

    [정보처리산업기사 과정평가형 - 실기] 회원가입 만들기2

    [정보처리산업기사 과정평가형 - 실기] 회원가입 만들기3

    [정보처리산업기사 과정평가형 - 실기] 회원 목록 만들기

    [정보처리산업기사 과정평가형 - 실기] 회원 정보 가져오기

    [정보처리산업기사 과정평가형 - 실기] 회원 정보 수정하기

    [정보처리산업기사 과정평가형 - 실기] 매출 표현하기

    [정보처리산업기사 과정평가형 - 실기] 코드 가져가기


     

    반응형

    댓글

    Designed by JB FACTORY