SessionTrackServlet.java
package com.web1.hello;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* Servlet implementation class SessionTrackServlet
*/
@WebServlet("/SessionTrackServlet")
public class SessionTrackServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public static final String USER_KEY = "userName";
public static final String VISITOR_KEY = "visitorCount";
/**
* @see HttpServlet#HttpServlet()
*/
public SessionTrackServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession(true);
String sessionId = session.getId();
//获取创建时间
Date createDate = new Date(session.getCreationTime());
//上次访问时间
Date lastAccessDate = new Date(session.getLastAccessedTime());
String userName = "gloomyfish";
Integer visitCount = 1;
if (session.isNew()) {
session.setMaxInactiveInterval(120);
session.setAttribute(USER_KEY, userName);
session.setAttribute(VISITOR_KEY, visitCount);
}else{
userName = (String) session.getAttribute(USER_KEY);
visitCount = (Integer) session.getAttribute(VISITOR_KEY);
visitCount++;
session.setAttribute(VISITOR_KEY, visitCount);
}
// start to response
response.setHeader("Content-type", "text/html;charset=UTF-8");
response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
Cookie cookie = new Cookie("JSESSIONID", sessionId);
cookie.setHttpOnly(true);
response.addCookie(cookie);
PrintWriter writer = response.getWriter();
startWebPage(writer);
writer.print("<p>");
writer.print("Session ID:" + sessionId);
writer.print("</p>");
writer.print("<p>");
writer.print("创建时间:" + createDate.toString());
writer.print("</p>");
writer.print("<p>");
writer.print("上次访问时间:" + lastAccessDate.toString());
writer.print("</p>");
writer.print("<p>");
writer.print("访问次数:" + visitCount);
writer.print("</p>");
writer.print("<p>");
writer.print("访问用户:" + userName);
writer.print("</p>");
endWebPage(writer);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
private void startWebPage(PrintWriter writer){
writer.print("<html>");
writer.print("<head>");
writer.print("<title>");
writer.print("Session Tracking Demo...");
writer.print("</title>");
writer.print("</head>");
writer.print("<body>");
writer.print("<h1>Session Tracking Example</h1>");
}
private void endWebPage(PrintWriter writer){
writer.print("</body>");
writer.print("</html>");
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" metadata-complete="true" version="3.0">
<description>
Hello World Servlet
</description>
<display-name>Hello World Servlet</display-name>
<filter>
<filter-name>Encode Filter</filter-name>
<filter-class>com.web1.util.RequestEncodeFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Encode Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>URLOverFilter Filter</filter-name>
<filter-class>com.web1.util.URLOverWriteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>URLOverFilter Filter</filter-name>
<url-pattern>/home.html</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>helloWorld</servlet-name>
<servlet-class>com.web1.hello.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloWorld</servlet-name>
<url-pattern>/helloWorld</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>helloImage</servlet-name>
<servlet-class>com.web1.hello.ImageServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloImage</servlet-name>
<url-pattern>/helloImage</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Session Track</servlet-name>
<servlet-class>com.web1.hello.SessionTrackServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Session Track</servlet-name>
<url-pattern>/sessionTrack</url-pattern>
</servlet-mapping>
</web-app>