今回は、「セッション―複数のページでデータを共有―」です。
web全般の話ではありますが、HTTPプロトコルは、ステートレスなプロトコルなので、リクエスト単位で処理が完結してしまいます。
ですので、複数のページ間でユーザーのデータを共有することはできません。
そんなときに役立つのがセッションです。
■動画はこちら
■動画で使用しているソースコード
1つ目のページ(セッションに値をセット)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | package yurufuwa.prog.sample; import java.io.IOException; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpSession; public class Sv1 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //パラメータを取得 String data = req.getParameter("param"); //セッションを生成 HttpSession session = req.getSession(true); //セッションに値をセット session.setAttribute("param", data); //HTMLを返す String html = "<html><head><meta charset=\"UTF-8\"></head><body>" + "セッションに保存しました<br />" + "名前:param<br />" + "値:" + data + "</body></html>"; resp.getWriter().append(html); } } |
2つ目のページ(セッションから値を取得)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | package yurufuwa.prog.sample; import java.io.IOException; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpSession; public class Sv2 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //セッションを取得 HttpSession session = req.getSession(false); //セッションから値を取得 String data = (String)session.getAttribute("param"); //HTMLを返す String html = "<html><head><meta charset=\"UTF-8\"></head><body>" + "セッションから取り出しました<br />" + "名前:param<br />" + "値:" + data + "</body></html>"; resp.getWriter().append(html); } } |
web.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd" id="WebApp_ID" version="5.0"> <display-name>testWeb</display-name> <servlet> <description></description> <display-name>Sv1</display-name> <servlet-name>Sv1</servlet-name> <servlet-class>yurufuwa.prog.sample.Sv1</servlet-class> </servlet> <servlet> <description></description> <display-name>Sv2</display-name> <servlet-name>Sv2</servlet-name> <servlet-class>yurufuwa.prog.sample.Sv2</servlet-class> </servlet> <servlet-mapping> <servlet-name>Sv1</servlet-name> <url-pattern>/sv1</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Sv2</servlet-name> <url-pattern>/sv2</url-pattern> </servlet-mapping> <session-config> <session-timeout>10</session-timeout> </session-config> </web-app> |