์์ด๋ ์ ์ฅ
ํ๋ฉด
์์ ์์
1.
UserServlet.java
2.
LoginServlet.java
3.
login.jsp
์ฝ๋
UserServlet.java
โข
์ฃผ์ ์ฝ๋
// ์์ด๋ ์ ์ฅ ---------------------------------------------------
String rememberId = request.getParameter("rememberId");
Cookie cookieRememberId = new Cookie("rememberId", "");
Cookie cookieUsername = new Cookie("username", "");
cookieRememberId.setPath("/");
cookieUsername.setPath("/");
System.out.println("rememberId : " + rememberId);
// ์์ด๋ ์ ์ฅ ์ฒดํฌ ์ - ๊ฐ : on
if( rememberId != null && rememberId.equals("on") ) {
// ์ฟ ํค ์์ฑ
cookieRememberId.setValue( URLEncoder.encode(rememberId, "UTF-8") );
cookieUsername.setValue( URLEncoder.encode(username, "UTF-8") );
// ์ฟ ํค ๋ง๋ฃ์๊ฐ ์ค์ - 7์ผ (/์ด)
cookieRememberId.setMaxAge(60*60*24*7);
cookieUsername.setMaxAge(60*60*24*7);
}
// ์์ด๋ ์ ์ฅ ์ฒดํฌ ํด์ ์
else {
// ์ฟ ํค ์ญ์ - ์ฟ ํค ์ ํจ์๊ฐ์ 0์ผ๋ก ํ๊ณ ์๋ต
cookieRememberId.setMaxAge(0);
cookieUsername.setMaxAge(0);
}
// ์๋ต์ ์ฟ ํค ๋ฑ๋ก
response.addCookie(cookieRememberId);
response.addCookie(cookieUsername);
// ์์ด๋ ์ ์ฅ ๋ ---------------------------------------------------
Java
๋ณต์ฌ
โข
์ ์ฒด ์ฝ๋
package board.servlet;
import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.UUID;
import board.DTO.Users;
import board.Service.UserService;
import board.Service.UserServiceImpl;
@WebServlet("/users/*")
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private UserService userService = new UserServiceImpl();
/**
* [GET]
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// url : /users/idCheck
String root = request.getContextPath();
String path = request.getPathInfo();
String page = "";
// /idCheck - ์์ด๋ ์ค๋ณต ํ์ธ
if( path.equals("/idCheck") ) {
System.out.println("์์ด๋ ์ค๋ณต ํ์ธ...");
String username = request.getParameter("username");
boolean check = userService.idCheck(username);
response.getWriter().print(check);
}
// /logout - ๋ก๊ทธ์์
if( path.equals("/logout") ) {
System.out.println("๋ก๊ทธ์์...");
HttpSession session = request.getSession();
session.invalidate();
response.sendRedirect(root + "/");
}
}
/**
* [POST]
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String root = request.getContextPath(); // /Board
String path = request.getPathInfo(); // /idCheck
// /join - ํ์๊ฐ์
if( path.equals("/join") ) {
System.out.println("ํ์๊ฐ์
์์ฒญ ์ฒ๋ฆฌ...");
String username = request.getParameter("username");
String password = request.getParameter("password");
String name = request.getParameter("name");
String email = request.getParameter("email");
Users user = Users.builder()
.id( UUID.randomUUID().toString() )
.username(username)
.password(password)
.name(name)
.email(email)
.build();
int result = userService.join(user);
// ํ์๊ฐ์
์ฑ๊ณต
if( result > 0 ) {
response.sendRedirect(root + "/");
}
// ํ์๊ฐ์
์คํจ
else {
response.sendRedirect(root + "/join.jsp?error=true");
}
}
// /login - ๋ก๊ทธ์ธ
if( path.equals("/login") ) {
String username = request.getParameter("username");
String password = request.getParameter("password");
// ์์ด๋ ์ ์ฅ ---------------------------------------------------
String rememberId = request.getParameter("rememberId");
Cookie cookieRememberId = new Cookie("rememberId", "");
Cookie cookieUsername = new Cookie("username", "");
cookieRememberId.setPath("/");
cookieUsername.setPath("/");
System.out.println("rememberId : " + rememberId);
// ์์ด๋ ์ ์ฅ ์ฒดํฌ ์ - ๊ฐ : on
if( rememberId != null && rememberId.equals("on") ) {
// ์ฟ ํค ์์ฑ
cookieRememberId.setValue( URLEncoder.encode(rememberId, "UTF-8") );
cookieUsername.setValue( URLEncoder.encode(username, "UTF-8") );
// ์ฟ ํค ๋ง๋ฃ์๊ฐ ์ค์ - 7์ผ (/์ด)
cookieRememberId.setMaxAge(60*60*24*7);
cookieUsername.setMaxAge(60*60*24*7);
}
// ์์ด๋ ์ ์ฅ ์ฒดํฌ ํด์ ์
else {
// ์ฟ ํค ์ญ์ - ์ฟ ํค ์ ํจ์๊ฐ์ 0์ผ๋ก ํ๊ณ ์๋ต
cookieRememberId.setMaxAge(0);
cookieUsername.setMaxAge(0);
}
// ์๋ต์ ์ฟ ํค ๋ฑ๋ก
response.addCookie(cookieRememberId);
response.addCookie(cookieUsername);
// ์์ด๋ ์ ์ฅ ๋ ---------------------------------------------------
// ๋ก๊ทธ์ธ ์ฒ๋ฆฌ
Users user = Users.builder()
.username(username)
.password(password)
.build();
boolean result = userService.login(user);
// ๋ก๊ทธ์ธ ์ฑ๊ณต
if( result ) {
// ํ์ ์กฐํ
Users loginUser = userService.selectByUsername(username);
loginUser.setPassword(null);
// ์ธ์
์ ์ฌ์ฉ์ ์ ๋ณด ๋ฑ๋ก
HttpSession session = request.getSession();
session.setAttribute("loginId", user.getUsername());
session.setAttribute("loginUser", loginUser);
response.sendRedirect(root + "/");
}
// ๋ก๊ทธ์ธ ์คํจ
else {
response.sendRedirect(root + "/login.jsp?error=true");
}
}
}
}
Java
๋ณต์ฌ
LoginServlet.java
package board.servlet;
import java.io.IOException;
import java.net.URLDecoder;
import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@WebServlet({"/login", "/login.jsp"})
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String page = "";
// ์์ด๋ ์ ์ฅ ์ฟ ํค ํ์ธ
System.out.println("์์ด๋ ์ ์ฅ ์ฟ ํค ํ์ธ ...");
String rememberId = "";
String username = "";
Cookie[] cookies = request.getCookies();
if( cookies != null ) {
for( Cookie cookie : cookies ) {
String cookieName = cookie.getName();
String cookieValue = URLDecoder.decode( cookie.getValue(), "UTF-8" );
switch(cookieName) {
case "username" : username = cookieValue; break;
case "rememberId" : rememberId = cookieValue; break;
}
}
}
request.setAttribute("username", username);
request.setAttribute("rememberId", rememberId);
page = "/page/login.jsp";
RequestDispatcher dispatcher = request.getRequestDispatcher(page);
dispatcher.forward(request, response);
}
}
Java
๋ณต์ฌ
login.jsp
โข
์ฃผ์ ์ฝ๋
<div class="mb-3">
<input class="form-control" type="text" name="username" id="username" placeholder="์์ด๋" value="${ username }">
</div>
<div class="mb-3">
<input class="form-control" type="password" name="password" id="password" placeholder="๋น๋ฐ๋ฒํธ">
</div>
<div class="row">
<div class="mb-3 col-6">
<c:if test="${ rememberId == null || rememberId == '' }">
<input type="checkbox" class="form-check-input" name="rememberId" id="remember-id">
</c:if>
<c:if test="${ rememberId != null && rememberId == 'on' }">
<input type="checkbox" class="form-check-input" name="rememberId" id="remember-id" checked>
</c:if>
<label class="form-check-label" for="remember-id">์์ด๋ ์ ์ฅ</label>
</div>
<div class="mb-3 col-6">
<input type="checkbox" class="form-check-input" name="rememberMe" id="remember-me">
<label class="form-check-label" for="remember-me">์๋ ๋ก๊ทธ์ธ</label>
</div>
</div>
Java
๋ณต์ฌ
โข
์ ์ฒด ์ฝ๋
<%@ include file="/layout/jstl.jsp" %>
<%@ include file="/layout/common.jsp" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>project๐ป - ALOHA CLASS๐ด</title>
<jsp:include page="/layout/meta.jsp" />
<jsp:include page="/layout/link.jsp" />
</head>
<body>
<jsp:include page="/layout/header.jsp" />
<%-- [Contents] ######################################################### --%>
<main>
<div class="container">
<div class="px-4 pt-5 my-5 text-center">
<div class="col-lg-6 mx-auto">
<form action="${ root }/users/login" method="post">
<div class="row justify-content-center">
<div class="card p-5">
<h2 class="display-4 fw-bold">Login</h2>
<div class="card-body">
<div class="mb-3">
<input class="form-control" type="text" name="username" id="username" placeholder="์์ด๋" value="${ username }">
</div>
<div class="mb-3">
<input class="form-control" type="password" name="password" id="password" placeholder="๋น๋ฐ๋ฒํธ">
</div>
<div class="row">
<div class="mb-3 col-6">
<c:if test="${ rememberId == null || rememberId == '' }">
<input type="checkbox" class="form-check-input" name="rememberId" id="remember-id">
</c:if>
<c:if test="${ rememberId != null && rememberId == 'on' }">
<input type="checkbox" class="form-check-input" name="rememberId" id="remember-id" checked>
</c:if>
<label class="form-check-label" for="remember-id">์์ด๋ ์ ์ฅ</label>
</div>
<div class="mb-3 col-6">
<input type="checkbox" class="form-check-input" name="rememberMe" id="remember-me">
<label class="form-check-label" for="remember-me">์๋ ๋ก๊ทธ์ธ</label>
</div>
</div>
<div class="d-grid gap-2">
<button type="submit" class="btn btn-primary">๋ก๊ทธ์ธ</button>
<a href="${ root }/join.jsp" class="btn btn-success">ํ์๊ฐ์
</a>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</main>
<%-- [Contents] ######################################################### --%>
<jsp:include page="/layout/footer.jsp" />
<jsp:include page="/layout/script.jsp" />
</body>
</html>
HTML
๋ณต์ฌ



