Search on the blog

2012年12月9日日曜日

Server-side Java(1) Servletでセッションを使う

使用機能
HttpSession HttpServletRequest#getSession(boolean create) セッションを取得。引数にtrueを指定すると、セッションが取得できなかった場合に新しいセッションを作成する。
void HttpSession#setAttribute(String name, Object value) セッションに値を格納する。
Object HttpSession#getAttribute(String name) セッションから値を取り出す。

サンプル
Tomcat Version 7.0.33で動作確認。アクセス回数をカウントアップしていきます。
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;

/**
 * Servlet implementation class SessionServlet
 */
@WebServlet("/SessionServlet")
public class SessionServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        
        response.setContentType("text/html; charset=Shift_JIS");
        PrintWriter out = response.getWriter();
        HttpSession session = request.getSession(true);

        out.println("<html>");
        out.println("<head>");
        out.println("<title>Session Test</title>");
        out.println("</head>");
        out.println("<body>");

        int cnt = 1;
        Object visCnt = session.getAttribute("visit");
        if (visCnt != null)
            cnt = (int) visCnt + 1;
        
        out.println(cnt + "-th visit!!");
        session.setAttribute("visit", cnt);

        out.println("</body>");
        out.println("</html>");
    }
}

0 件のコメント:

コメントを投稿