Servletの研修にて。HttpServletRequestとHttpSessionの違いをお手軽に試すサンプル。
複数ブラウザを使用してリロードすることで,Sessionが維持される様子が分かる。
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("/counter") public class CounterServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); Integer reqCounter = (Integer) request.getAttribute("counter"); if (reqCounter == null) { request.setAttribute("counter", 0); } else { request.setAttribute("counter", reqCounter + 1); } Integer sesCounter = (Integer) session.getAttribute("counter"); if (sesCounter == null) { session.setAttribute("counter", 0); } else { session.setAttribute("counter", sesCounter + 1); } PrintWriter out = response.getWriter(); out.println("request counter: " + (Integer) request.getAttribute("counter")); out.println("session counter: " + (Integer) session.getAttribute("counter")); } }