세션
웹에서 사용하는 http 프로토콜의 특징은 커넥션을 계속 유지하지 않는 프로토콜이기 때문에 클라이언트(브라우저)와 서버(톰캣)와 통신의 연속성을 유지하기 위해 사용되는 기술이 세션이다. JSP에서 세션을 사용하기 때문에 당연히 서블릿에서도 세션을 많이 사용한다. 이번 글에서는 세션을 서블릿에서 어떻게 사용하는지 알아보자.
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String id = (String)session.getAttribute("idkey");
%>
<html>
<body>
<h1>Servlet 세션</h1>
<%
if(id != null){
%>
<%=id%>님 반갑습니다.<p/>
<a href='logout.jsp'>로그아웃</a>
<%
}else{
%>
<form method="post" action="ch08/LoginServlet">
id : <input name ="id"><br/>
pwd : <input type="password" name="pwd"><br/>
<input type="submit" value="로그인">
</form>
<%} %>
</body>
</html>
LoginServlet.java
package ch08;
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;
@WebServlet("/ch08/LoginServlet")
public class LoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
if(id!=null && pwd!=null) {
HttpSession session = request.getSession();
session.setAttribute("idkey", id);
}
response.sendRedirect("/myapp/login.jsp");
}
}
logout.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
session.invalidate();
response.sendRedirect("login.jsp");
%>
출력 결과


로그아웃 버튼 클릭 시 로그인 화면으로 이동

연습문제
test4.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>계산기</h2>
<form method="post" action="TestServlet4">
숫자1 : <input name="num1"><br/>
숫자2 : <input name="num2"><br/>
<input type="submit" value="계산">
</form>
</body>
</html>
TestServlet4.java
package ch08;
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;
@WebServlet("/TestServlet4")
public class TestServlet4 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int num1 = Integer.parseInt(request.getParameter("num1"));
int num2 = Integer.parseInt(request.getParameter("num2"));
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<h1>계산기</h1>");
out.println(num1 + " + " + num2 + " = " + (num1+num2));
out.println("</body>");
out.println("</html>");
}
}
출력 결과


'Web Programming > JSP' 카테고리의 다른 글
| [JSP] 데이터베이스 설치 (0) | 2024.10.08 |
|---|---|
| [JSP] 자바빈즈 (0) | 2024.10.07 |
| [JSP] 서블릿의 요청 방식 (0) | 2024.10.07 |
| [JSP] 서블릿 기초 문법 (1) | 2024.10.04 |
| [JSP] 에러 처리 (0) | 2024.10.04 |