728x90
세션(Session)이란?
- 클라이언트가 서버에 정보를 요청할 때 생성되는 상태정보
- 서버에 데이터를 저장
LoginServlet.java
package com.controller;
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1. 로그인 폼에서 전송되는 아이디와 비밀번호 읽어오기
String userid = request.getParameter("userid");
String passwd = request.getParameter("passwd");
// 2. DB에서 회원의 아이디 및 비밀번호 일치 여부 확인 (인증되었다고 가정)
// 3. 세션 얻기
HttpSession session = request.getSession();
// 4. 세션에 로그인 정보 저장
session.setAttribute("user", userid);
// 5. 로그인 성공 후 응답처리
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.print("<html><head>");
out.print("<meta charset=\"UTF-8\">");
out.print("<title>Insert title here</title>");
out.print("</head>");
out.print("<body>");
out.print("<h1>로그인성공</h1>");
out.print("안녕하세요. " + userid +"님<br>");
out.print("<form action='logout' method='get'>");
out.print("<input type='submit' value='로그아웃'></form>");
out.print("</body></html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
doGet(request, response);
}
}
MyPageServlet.java
package com.controller;
import java.io.IOException;
import java.io.PrintWriter;
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;
@WebServlet("/mypage")
public class MyPageServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 세션 얻기
HttpSession session = request.getSession();
// 세션의 로그인 정보 얻기
String id = (String)session.getAttribute("user");
if(id != null) {
// 로그인 한 경우로서 응답처리
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.print("<html><head>");
out.print("<meta charset=\"UTF-8\">");
out.print("<title>Insert title here</title>");
out.print("</head>");
out.print("<body>");
out.print("<h1>mypage</h1>");
out.print("안녕하세요. " + id +"님<br>");
out.print("<form action='logout' method='get'>");
out.print("<input type='submit' value='로그아웃'></form>");
out.print("</body></html>");
}else {
// id값이 null이면 로그인을 안한 경우 또는 했는데 time-out
response.sendRedirect("LoginForm.html");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
LogoutServlet.java
package com.controller;
@WebServlet("/logout")
public class LogoutServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 세션 얻기
HttpSession session = request.getSession();
// 세션 영역 제거 (로그아웃)
session.invalidate();
response.sendRedirect("LoginForm.html");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
728x90
'WebServer > JSP&Servlet' 카테고리의 다른 글
[JSP&Servlet] 파일 업로드 (File upload) (0) | 2023.08.21 |
---|---|
[JSP&Servlet] 쿠키를 이용한 간단한 로그인&로그아웃 (0) | 2023.08.21 |
[JSP&Servlet] 쿠키 관리 (Cookie) (0) | 2023.08.17 |
[JSP&Servlet] 세션 관리 (Session) (0) | 2023.08.17 |
[Servlet] 요청 위임 (0) | 2023.08.16 |