servlet_14 Session跟踪

HTTP 是一种"无状态"协议,这意味着每次客户端检索网页时,客户端打开一个单独的连接到 Web 服务器,服务器会自动不保留之前客户端请求的任何记录。


HttpSession对象:

Servlet 还提供了 HttpSession 接口,该接口提供了一种跨多个页面请求或访问网站时识别用户以及存储有关用户信息的方式。

HttpSession对象的获取:getSession()方法

HttpSession session=request.getSession();


HttpSession对象重要的方法:

1.public void setAttribute(String name,object value)

该方法绑定一个名为name的value对象到session会话

2.public object getAttribute(String name)

该方法从该session中获取名为name的对象

3.public Enumeration getAttributeNames()

该方法获取该session中所有对象的名称,返回一个枚举

4.public long getCreationTime()

该方法获取session会话创建的时间,以毫秒为单位

5.public long getLastAccessedTime()

该方法获取该session结束的时间,以毫秒为单位

6.public boolean isNew()

客户端还不知道该 session 会话,或者如果客户选择不参入该 session 会话,则该方法返回 true。

7.public void removeAttribute(String name)

该方法从session中移除名为name的对象


Session实例:

package MyServlet;

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;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Created by 1192126986 on 2017/1/19.
 */
@WebServlet(name = "SessionTrack")
public class SessionTrack extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取HttpSession对象
        HttpSession session=request.getSession(true);
        //Session会话创建时间
        Date createTime=new Date(session.getCreationTime());
        //Session会话结束时间
        Date lastAccessTime=new Date(session.getLastAccessedTime());
        //创建日期格式化对象
        SimpleDateFormat df=new SimpleDateFormat("yyyy-MM--dd HH:mm:ss");

        String title = "Servlet Session 实例";
        //创建visitCountKey键和visitCount值对
        Integer visitCount=new Integer(0);
        String visitCountKey=new String("visitCount");
        //创建userIDKey键和userID值对
        String userID=new String("userID");
        String uesrIDKey=new String("userID");

        //如果页面有新的访问者
        if(session.isNew()){
            title="Servlet Session 实例";
            //添加名称为userIDKey的对象uesrID到session会话
            session.setAttribute(uesrIDKey,userID);

        }else{
            //获取名称为visitCountKey的对象
            visitCount=(Integer) session.getAttribute("visitCountKey");
            visitCount+=1;
            //获取名称为uesrIDKey的对象
            userID=(String)session.getAttribute("userIDKey");

        }
        session.setAttribute("visitCountKey",visitCount);

        // 设置响应内容类型
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();

        String docType = "<!DOCTYPE html>\n";
        out.println(docType +
                "<html>\n" +
                "<head><title>" + title + "</title></head>\n" +
                "<body bgcolor=\"#f0f0f0\">\n" +
                "<h1 align=\"center\">" + title + "</h1>\n" +
                "<h2 align=\"center\">Session 信息</h2>\n" +
                "<table border=\"1\" align=\"center\">\n" +
                "<tr bgcolor=\"#949494\">\n" +
                "  <th>Session 信息</th><th>值</th></tr>\n" +
                "<tr>\n" +
                "  <td>id</td>\n" +
                "  <td>" + session.getId() + "</td></tr>\n" +
                "<tr>\n" +
                "  <td>创建时间</td>\n" +
                "  <td>" +  df.format(createTime) +
                "  </td></tr>\n" +
                "<tr>\n" +
                "  <td>最后访问时间</td>\n" +
                "  <td>" + df.format(lastAccessTime) +
                "  </td></tr>\n" +
                "<tr>\n" +
                "  <td>用户 ID</td>\n" +
                "  <td>" + userID +
                "  </td></tr>\n" +
                "<tr>\n" +
                "  <td>访问统计:</td>\n" +
                "  <td>" + visitCount + "</td></tr>\n" +
                "</table>\n" +
                "</body></html>");
    }
}


删除Session会话:

1.移除一个session属性:public void removeArrtribute(String name)删除与特定键关联的值

2.删除整个session会话:public void invalidate()

3.设置session会话过期时间:public void setMaxInactiveInterval(int interval)


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值