고래씌

[JSP] 4-2. 로그아웃, 회원가입 페이지 만들기 본문

Server/JSP과 Servlet

[JSP] 4-2. 로그아웃, 회원가입 페이지 만들기

고래씌 2023. 12. 7. 10:53

4-1. 과 내용 이어집니다.

 

resource : 모든페이지에 공통적으로 적용되는 css 파일이 들어간 폴더

 

1. 로그아웃 페이지 만들기

 

=> 아까 menubar.jsp파일에서 로그아웃을 클릭했을 때 다음으로 이동하도록 설정해두었으니 LogoutController 서블렛 파일을 생성하여 페이지 이동하도록 만들어주도록 하겠다.

 

 

■ LogoutController.java 파일

package com.kh.member.controller;

import java.io.IOException;
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 LogoutController
 */
@WebServlet("/logout.me")
public class LogoutController extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LogoutController() {
        super();
        // TODO Auto-generated constructor stub
    }


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	// a태그(앵커태그)를 통한 페이지 이동은 get으로 요청을 보내는 것
    	// 로그아웃 요청처리 => session데이터 만료시키기
    	
    	// request.getSession().removeAttribute("loginUser");
    	request.getSession().invalidate();
    	
    	// 응답페이지는 메인페이지로 페이지 재요청 보내기 -- 현재 logout.me에 머물러 있음
    	response.sendRedirect(request.getContextPath());
	}


	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		doGet(request, response);
	}

}

 

-  request.getSessoin().invalidate();   => 모든 내용 싹 다 지움

 

=> 로그아웃 클릭시 메인페이지로 다시 이동하도록 설정

 

 


2. 회원가입 페이지 만들기

 

 

 

 

=> menubar.jsp에 다음 CSS 가 적용되도록 링크 설정

 

 

 

■ common.css 파일

@charset "UTF-8";
/* 모든 페이지에 공통으로 들어갈 페이지 */
.outer{
	background : black;
	color : white;
	width : 1000px;
	margin : auto;
	margin-top : 50px;	
}

/* 회원가입 폼 */
#enroll-form table{margin:auto;}
#enroll-form input{margin:5px;}

 

 

■ memberEnrollForm.java 파일

<%@ 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>

</head>
<body>
	<%@ include file="../common/menubar.jsp" %>
	
	<div class="outer">
		<br>
		<h2 align="center">회원가입</h2>
		
		<form action="<%= contextPath %>/enroll.me" method="post" id="enroll-form">
			<!-- 
				아이디, 비번, 이름, 전화번호, 이메일, 주소, 취미
			 -->
			 
			 <table>
			 	<tr>
			 		<td>* 아이디</td>
			 		<td><input type="text" name="userId" maxlength="12" required></td>
			 		<td><button onclick="idCheck();" 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="interest1" value="운동"><label for="interest1">운동</label>
			 			<input type="checkbox" name="interest" id="interest2" value="등산"><label for="interest2">등산</label>
			 			<input type="checkbox" name="interest" id="interest3" value="낚시"><label for="interest3">낚시</label>
			 			<input type="checkbox" name="interest" id="interest4" value="요리"><label for="interest4">요리</label>
			 			<input type="checkbox" name="interest" id="interest5" value="게임"><label for="interest5">게임</label>
			 			<input type="checkbox" name="interest" id="interest6" value="영화"><label for="interest6">영화</label>
			 		</td>
			 	</tr>
			 </table>
			 
			 <br><br>
			 
			 <div align="center">
			 	<button type="submit" onclick="return validate();">회원가입</button>
			 
			 </div>
			 
		</form>
	</div>
	

</body>
</html>

 

=> 회원가입 버튼 클릭시 화면

 

 

 

■ memberInsertController.java 파일

package com.kh.member.controller;

import java.io.IOException;

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.kh.member.model.service.MemberService;
import com.kh.member.model.vo.Member;

/**
 * Servlet implementation class memberInsertController
 */
@WebServlet("/enroll.me")
public class memberInsertController extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public memberInsertController() {
        super();
    }


	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.getRequestDispatcher("views/member/memberEnrollForm.jsp").forward(request, response);
	}


	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		// 1) 인코딩 작업
		request.setCharacterEncoding("UTF-8");
		
		// 2) 요청시 전달값을 뽑아서 변수 및 객체에 기록하기
		// 아이디, 비번, 이름, 전화번호, 이메일, 주소, 취미
		String userId = request.getParameter("userId");
		String userPwd = request.getParameter("userPwd");
		String userName = request.getParameter("userName");
		String phone = request.getParameter("phone");
		String email = request.getParameter("email");
		String address = request.getParameter("address");
		String[] interestArr = request.getParameterValues("interest");
		
		String interest = "";
		if(interestArr != null) {
			interest = String.join(",", interestArr);    // ,로 하나로 연결해줄 것이다.
		}
		
		// 매개변수 생성자를 이용해서 Member객체 만들어보기
		Member m = new Member(userId, userPwd, userName, phone, email, address, interest);
		// 우리는 Member 클래스에 7개의 값만 담는 메소드를 생성한 적 없기 때문에 Member클래스로 가서 생성해주어야 한다.
		
		// 가공처리한 Member 객체를 service로 보냄
		// 회원가입 요청처리
		int result = new MemberService().insertMember(m);
		
		// 처리결과(result)를 가지고 사용자가 보게될 응답화면 지정.
		if(result > 0) {  // 정상 회원가입
			HttpSession session = request.getSession();
			session.setAttribute("alertMsg", "회원가입에 성공했습니다.");
			
			response.sendRedirect(request.getContextPath());
		}else {   // 실패
			request.setAttribute("errorMsg", "회원가입에 실패했습니다.");
			request.getRequestDispatcher("views/common/errorPage.jsp").forward(request, response);
		}
		
		
	}

}

 

 

 

=> 우리는 Member 클래스에 7개의 값만 담는 메소드를 생성한 적 없기 때문에 Member클래스로 가서 생성해주어야 한다.

 

▶ Member 클래스에 메소드 추가

 

 

 

■ MemberService.java 파일에 insertMember 메소드 생성

 

 

■ MemberDao.java 파일에 insertMember 메소드 생성

 

 

■ member-mapper.xml 파일에 회원가입 기능과 관련된 쿼리문 추가