[정보처리산업기사 과정평가형 - 실기] 회원가입 만들기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