Servlet中 Session的学习(写下Cookie和不写入Cookie)

Servlet中 Session的学习(写入Cookie和不写入Cookie)1.利用写入Cookie查看Session的例子。import java.io.*

Servlet中 Session的学习(写入Cookie和不写入Cookie)
1.利用写入Cookie查看Session的例子。
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.net.*;
import java.util.*;

//Session追踪

public class ShowSession extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
   response.setContentType("text/html");
   PrintWriter out = response.getWriter();
   String title = "Session Tracking Example";
   HttpSession session = request.getSession(true);//
   String heading;
   // Use getAttribute instead of getValue in version 2.2.
   Integer accessCount = (Integer) session.getAttribute("accessCount");//取accessCount的值。并转换成整行(integer)
   if (accessCount == null) {
    accessCount = new Integer(0);     //如果是每一次进入,新NEW一个accesscount对像,值为整行数0

    heading = "Welcome, Newcomer"; 

   } else {
    heading = "Welcome Back";
    accessCount = new Integer(accessCount.intValue() + 1); //如果不是第一次,accessCount自动加1,heading的值转变
   }
   // Use setAttribute instead of putValue in version 2.2.
   session.setAttribute("accessCount", accessCount);//写入值,name叫accessCount (红色) 值是accessCount(绿色)

   out.println("<html><head><title>Session追踪</title></head>"
     + "<BODY BGCOLOR="#FDF5E6">\n" + "<H1 ALIGN="CENTER">"
     + heading + "</H1>\n"
     + "<H2>Information on Your Session:</H2>\n"
     + "<TABLE BORDER=1 ALIGN="CENTER">\n"
     + "<TR BGCOLOR="#FFAD00">\n" + " <TH>Info Type<TH>Value\n"
     + "<TR>\n" + " <TD>ID\n" + " <TD>" + session.getId() + "\n"                  //如果Cookie被禁止,每次刷新,得到的session.getId()都发生变化。
     + "<TR>\n" + " <TD>Creation Time\n" + " <TD>"
     + new Date(session.getCreationTime()) + "\n" + "<TR>\n"   //新建Session时的时间,如果Cookie被禁止,每次刷新转变。
     + " <TD>Time of Last Access\n" + " <TD>"
     + new Date(session.getLastAccessedTime()) + "\n" + "<TR>\n" //最后一次访问的时间。如果Cookie被禁止,每次刷新转变。
     + " <TD>Number of Previous Accesses\n" + " <TD>"
     + accessCount + "\n" + "</TABLE>\n" + "</BODY></HTML>"); //访问次数。如果Cookie被禁止,每次刷新为0。


}

/** Handle GET and POST requests identically. */

public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
   doGet(request, response);
}
}

2。如果Cookie被禁止。利用URL重写方法的Session追踪小例子。


import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.net.*;
import java.util.*;

//Session追踪

public class URLSession extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
   response.setContentType("text/html");
   PrintWriter out = response.getWriter();
 
   HttpSession session = request.getSession(true);

   out.println("<html><head><title>Session追踪</title></head>"
     + "<BODY>\n"
     + "session id:" + session.getId() + "<br>"
     + "from url:" + request.isRequestedSessionIdFromURL() + "<br>"
     + "from cookie:" + request.isRequestedSessionIdFromCookie() + "<br>"
     + "<a href=" + response.encodeURL(request.getRequestURL().toString()) + ">test</a>"
     + "</BODY></HTML>");    //URL重写。连接记住刚的Session的ID ,cookie被禁止,点次连接,Session的ID 不会改变。

}

/** Handle GET and POST requests identically. */

public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
   doGet(request, response);
}
}