cookie实现会话跟踪,只用setValue()不能更新cookie值
注意:下划线部分后三行是郝玉龙书上没有的,加上才能更新cookie的值。 package com.servlet; import java.io.IOException; /**
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
* Servlet implementation class for Servlet: CookieTrackServlet
*
* @web.servlet
* name="CookieTrackServlet"
* display-name="CookieTrackServlet"
*
* @web.servlet-mapping
* url-pattern="/cookieTrack"
*
*/
public class CookieTrackServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#HttpServlet()
*/
public CookieTrackServlet() {
super();
}
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Cookie cookie = null;
//获取请求相关的cookie
Cookie[] cookies = request.getCookies( );
//判断Cookie VisitTimes是否存在
//如果存在,其值加1
if (cookies != null){
for (int i = 0; i < cookies.length; i++){
if (cookies[i].getName( ).equals("VisitTimes")){
String v=cookies[i].getValue();
int value="/Integer.parseInt(v)+1;
cookies[i].setValue(Integer.toString(value));
cookies[i].setMaxAge(100*60);
cookies[i].setPath(request.getContextPath());
response.addCookie(cookies[i]);
cookie=cookies[i];
}
}//end for
}//end if
//不存在,创建cookie
if (cookie == null){
int maxAge=10000;
//Create the Cookie object
cookie = new Cookie("VisitTimes","1");
cookie.setPath(request.getContextPath( ));
cookie.setMaxAge(maxAge);
response.addCookie(cookie);
}//end if
// 显示信息
response.setContentType("text/html;charset=gb2312");
java.io.PrintWriter out = response.getWriter( );
out.println("<html>");
out.println("<head>");
out.println("<title>Cookie跟踪会话 </title>");
out.println("</head>");
out.println("<body>");
out.println(
"<h2> 您好!</h2>");
out.println("欢迎您第 "+cookie.getValue( )+"次访问本页面<br>");
out.println("</body>");
out.println("</html>");
}
/* (non-Java-doc)
* @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request,response);
}
}
没有评论:
发表评论