회원가입 폼 만들기
WebContent/views/member/memberEnrollForm.jsp 생성
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
.outer {
background-color: #C7A9CC;
color: white;
width: 1000px;
margin: auto;
margin-top: 50px;
}
#enroll-form table {margin: auto;}
#enroll-form input {margin: 5px;}
</style>
</head>
<body>
<%@ include file="../common/menubar.jsp" %>
<div class="outer">
<br>
<h2 align="center">회원가입</h2>
<form id="enroll-form" action="<%= contextPath %>/insert.me" method="post">
<table>
<tr>
<td>* 아이디</td>
<td><input type="text" name="userId" maxlength="12" required></td>
<td><button type="button">중복확인</button></td>
</tr>
<tr>
<td>* 비밀번호</td>
<td><input type="password" name="userPwd" maxlength="15" required></td>
<td></td>
</tr>
<tr>
<td>* 비밀번호 확인</td>
<td><input type="password" maxlength="15" required></td>
<td></td>
</tr>
<tr>
<td>* 이름</td>
<td><input type="text" name="userName" maxlength="6" required></td>
<td></td>
</tr>
<tr>
<td> 전화번호</td>
<td><input type="text" name="phone" placeholder="- 포함해서 입력"></td>
<td></td>
</tr>
<tr>
<td> 이메일</td>
<td><input type="email" name="email"></td>
<td></td>
</tr>
<tr>
<td> 주소</td>
<td><input type="text" name="address"></td>
<td></td>
</tr>
<tr>
<td> 관심분야</td>
<td colspan="2">
<input type="checkbox" name="interest" id="sports" value="운동">
<label for="sports">운동</label>
<input type="checkbox" name="interest" id="hiking" value="등산">
<label for="hiking">등산</label>
<input type="checkbox" name="interest" id="fishing" value="낚시">
<label for="fishing">낚시</label>
<br>
<input type="checkbox" name="interest" id="cooking" value="요리">
<label for="cooking">요리</label>
<input type="checkbox" name="interest" id="game" value="게임">
<label for="game">게임</label>
<input type="checkbox" name="interest" id="movie" value="영화">
<label for="movie">영화</label>
</td>
</tr>
</table>
<br><br>
<div align="center">
<button type="submit">회원가입</button>
<button type="reset">초기화</button>
</div>
<br>
</form>
</div>
</body>
</html>
MemberEnrollFormController
src/com/yh/member/controller/MemberEnrollFormController.java 생성
package com.yh.member.controller;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class MemberEnrollFormController
*/
@WebServlet("/enrollForm.me")
public class MemberEnrollFormController extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public MemberEnrollFormController() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 응답페이지 (회원가입 페이지)
// 포워딩 방식
RequestDispatcher view = request.getRequestDispatcher("views/member/memberEnrollForm.jsp");
view.forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
MemberInsertController
src/com/kh/member/controller/MemberInsertController.java 생성
package com.yh.member.controller;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.yh.member.model.service.MemberService;
import com.yh.member.model.vo.Member;
/**
* Servlet implementation class MemberInsertController
*/
@WebServlet("/insert.me")
public class MemberInsertController extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public MemberInsertController() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1) 인코딩 작업
request.setCharacterEncoding("UTF-8");
// 2) 요청시 전달값 뽑아서 변수 및 객체에 기록하기
String userId = request.getParameter("userId"); // "user03"
String userPwd = request.getParameter("userPwd"); // "pass03"
String userName = request.getParameter("userName"); // "홍길동"
String phone = request.getParameter("phone"); // "010-1111-2222" | ""
String email = request.getParameter("email"); // "a@naver.com" | ""
String address = request.getParameter("address"); // "서울시" | ""
String[] interestArr = request.getParameterValues("interest"); // ["운동", "등산"] | null
// String[] --> String
// ["운동", "등산"] --> "운동, 등산"
String interest = "";
if (interestArr != null) {
interest = String.join(", ", interestArr);
}
// 기본 생성자로 생성한 후 setter 메소드 이용해서 담기 => 담으려고 하는게 소량일 때
// 매개변수 생성자를 이용해서 생성과 동시에 담기 => 담으려고 하는게 많을 때
Member m = new Member(userId, userPwd, userName, phone, email, address, interest);
// 3) 요청처리(db에 sql문 실행) => 서비스 메소드 호출 및 결과받기
int result = new MemberService().insertMember(m);
// 4) 처리결과를 가지고 사용자가 보게될 응답 뷰 지정 후 포워딩 or url 재요청
if (result > 0) {
// 세션활용
HttpSession session = request.getSession();
session.setAttribute("alertMsg", "성공적으로 회원가입이 되었습니다.");
// 성공 => index 페이지 => /jsp url재요청 방식
response.sendRedirect(request.getContextPath());
} else {
// 실패 => 에러 문구가 보여지는 에러 페이지
request.setAttribute("errorMsg", "회원가입에 실패했습니다.");
RequestDispatcher view = request.getRequestDispatcher("/views/common/errorPage.jsp");
view.forward(request, response);
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
Member Vo에 매개변수 생성자 추가하기
public Member(String userId, String userPwd, String userName, String phone, String email, String address,
String interest) {
super();
this.userId = userId;
this.userPwd = userPwd;
this.userName = userName;
this.phone = phone;
this.email = email;
this.address = address;
this.interest = interest;
}
Member mapper
<entry key="insertMember">
INSERT
INTO MEMBER
(
USER_NO
, USER_ID
, USER_PWD
, USER_NAME
, PHONE
, EMAIL
, ADDRESS
, INTEREST
)
VALUES
(
SEQ_UNO.NEXTVAL
, ?
, ?
, ?
, ?
, ?
, ?
, ?
)
</entry>
Member Dao
public int insertMember(Connection conn, Member m) {
// insert문 => 처리된 행수 => 트랜젝션 처리
int result = 0;
PreparedStatement pstmt = null;
String sql = prop.getProperty("insertMember");
try {
pstmt = conn.prepareStatement(sql); // 미완성된 sql문
pstmt.setString(1, m.getUserId());
pstmt.setString(2, m.getUserPwd());
pstmt.setString(3, m.getUserName());
pstmt.setString(4, m.getPhone());
pstmt.setString(5, m.getEmail());
pstmt.setString(6, m.getAddress());
pstmt.setString(7, m.getInterest());
result = pstmt.executeUpdate(); // 0 | 1
} catch (SQLException e) {
e.printStackTrace();
} finally {
close(pstmt);
}
return result;
}
Member Service
public int insertMember(Member m) {
Connection conn = getConnection();
int result = new MemberDao().insertMember(conn, m);
// 트랜젝션 처리
if (result > 0) {
// 성공
commit(conn);
} else {
// 실패
rollback(conn);
}
close(conn);
return result;
}
실행화면
회원가입 페이지
아이디 중복확인
회원가입 성공시
회원가입 실패시
'Study' 카테고리의 다른 글
[JSP] 게시판 만들기 - 게시글 목록 조회 + 페이징 처리 (0) | 2023.01.19 |
---|---|
[Spring] 스프링 개발 환경 구축 (0) | 2023.01.18 |
[JSP] 게시판 만들기 - 로그인 (0) | 2023.01.10 |
[Oracle/오라클] 인라인뷰 (INLINE-VIEW) / ROWNUM / RANK() OVER / DENSE_RANK() OVER (0) | 2023.01.07 |
[Oracle/오라클] 서브쿼리 (SUBQUERY) (0) | 2023.01.02 |