[정보처리산업기사 과정평가형 - 실기] 회원가입 만들기2
- 정보처리산업기사 과정평가형/실기
- 2021. 4. 10.
회원가입 만들기 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>
전체 목록
[정보처리산업기사 과정평가형 - 실기] 회원가입 만들기
[정보처리산업기사 과정평가형 - 실기] 회원가입 만들기2
[정보처리산업기사 과정평가형 - 실기] 회원가입 만들기3
[정보처리산업기사 과정평가형 - 실기] 회원 목록 만들기
[정보처리산업기사 과정평가형 - 실기] 회원 정보 가져오기
[정보처리산업기사 과정평가형 - 실기] 회원 정보 수정하기
'정보처리산업기사 과정평가형 > 실기' 카테고리의 다른 글
[정보처리산업기사 과정평가형 - 실기] 회원 목록 만들기 (0) | 2021.04.10 |
---|---|
[정보처리산업기사 과정평가형 - 실기] 회원가입 만들기3 (0) | 2021.04.10 |
[정보처리산업기사 과정평가형 - 실기] 회원가입 만들기 (13) | 2021.04.10 |
[정보처리산업기사 과정평가형 - 실기] DAO 만들기 (0) | 2020.08.29 |
[정보처리산업 과정평가형 - 실기] Java 만들기 (0) | 2020.08.29 |