#04:セッションスコープ
このチャプターでは、セッションスコープについて学習します。
Integer num =
Optional
.ofNullable((Integer) session.getAttribute("num"))
.orElse(0);
【LoginServlet.java】package jp.paiza.servlet;
import java.io.*;
import java.util.*;
import java.time.*;
import java.time.format.*;
import jakarta.servlet.*;
import jakarta.servlet.annotation.*;
import jakarta.servlet.http.*;
import jp.paiza.model.*;
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
HttpSession session = req.getSession();
Integer num =
Optional
.ofNullable((Integer) session.getAttribute("num"))
.orElse(0);
session.setAttribute("num", ++num);
System.out.println(session.getAttribute("num"));
RequestDispatcher d =
req.getRequestDispatcher("/WEB-INF/jsp/login-input.jsp");
d.forward(req, res);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
String userId = req.getParameter("user-id");
String password = req.getParameter("password");
LoginModel m = new LoginModel();
if (m.login(userId, password)) {
RequestDispatcher d =
req.getRequestDispatcher("/WEB-INF/jsp/login-result.jsp");
d.forward(req, res);
} else {
req.setAttribute("r", 813);
req.getSession().setAttribute("s", 813);
res.sendRedirect("login");
}
}
}
【login-input.jsp】<%@ page contentType="text/html; charset=UTF-8" import="java.util.*" %>
<%
Integer num2 =
Optional
.ofNullable((Integer) session.getAttribute("num2"))
.orElse(0);
session.setAttribute("num2", ++num2);
%>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>ログインフォーム</title>
</head>
<body>
<div class="page-background">
<div class="form-container">
<h1>ログイン</h1>
<p><%= session.getAttribute("num") %></p>
<p><%= session.getAttribute("num2") %></p>
<p><%= request.getAttribute("r") %></p>
<p><%= session.getAttribute("s") %></p>
<p><%= session.getMaxInactiveInterval() %></p>
<form action="/learning/login" method="POST">
<div class="input-group">
<label for="user-id">ユーザーID</label>
<input type="text" id="user-id" name="user-id" required>
</div>
<div class="input-group">
<label for="password">パスワード</label>
<input type="password" id="password" name="password" required>
</div>
<div class="form-actions">
<button type="submit">ログイン</button>
</div>
</form>
</div>
</div>
</body>
</html>
Web技術入門編
https://paiza.jp/works/web_tech/primer
新・Java入門編
https://paiza.jp/works/java/new-primer
新・Java入門編33: ストリームAPIについて学習しよう > Optionalクラス
https://paiza.jp/works/java/new-primer/java-new-primer-33/102011