servlet中如何使用Session?

servlet中Session的用法

使用Servlet中的request对象获取session对象并输出其属性:HttpSession session = request.getSession();

request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
// 调用 HttpServletRequest 的公共方法 getSession() 来获取 HttpSession 对象,如果没有,则创建一个
HttpSession session = request.getSession();

什么是Session?

服务器端为了保存用户的状态而创建的一个特殊的对象(即session对象)。

当浏览器第一次访问服务器时,服务器会创建session对象(该对象有一个唯一的id,一般称之为sessionId),接下来服务器会将
sessionId以cookie的方式发送给浏览器。当浏览器再次访问服务器时,会将sessionId发送过来,服务器就可以依据sessionId找到对应的sessinon对象。

如何获得session对象?

HttpSession s = request.getSession(boolean flag);

HttpSession是一个接口。
a.当flag为true时,先查看请求当中有没有sessionId,如果没有,就会创建一个session对象。如果有sessionId,就会依据sessionId去查找对应的session对象,如果找到了就返回该对象,找不到则会创建一个新的session对象。
b.当flag为false时,先查看请求当中有没有sessionId,如果没有,返回null。如果有sessionId,就会依据sessionId去查找对应的session对象,如果找到了就返回该对象,找不到,返回null。

HttpSession s = request.getSession();等价于 request.getSession(true);

session常用方法

  • session.setAttribute(String name,Object obj);
  • Object session.getAttribute(String name);
  • session.removeAttribute(String name);

session超时

服务器会将空闲时间过长的session对象删除掉。
注:
为了节省内存空间。
大部分服务器默认的超时时间长度为30分钟。

如何修改超时时间长度?

方式一 修改web.xml

方式二 编程的方式

session.setMaxInactiveInterval(int seconds);
设置两次请求之间最大的时间间隔

删除session

session.invalidate();

session验证

step1. 登录成功之后,在session对象上绑订一些数据,比如

session.setAttribute("user",user);

step2.当用户访问需要保护的资源时,进行session验证,比如

Object obj = session.getAttribute("user");
if(obj == null){
          //没有登录
         response.sendRedirect("login.jsp");
}

session与cookie比较

session相对于cookie,优点:安全、可以存放大量的数据、支持更丰富的数据类型。

缺点是session会占用服务器端的内存空间,如果session对象过多,会占用过多的内存空间。

练习:

写一个servlet,输出用户上一次访问的时间。如果是第一次访问,输出“你是第一次访问”。

125jz网原创文章。发布者:江山如画,转载请注明出处:http://www.125jz.com/4593.html

(1)
江山如画的头像江山如画管理团队
上一篇 2020年4月4日 下午6:33
下一篇 2020年4月5日 上午8:10

99%的人还看了以下文章

  • opencv 图像旋转 cv2.rotate和np.rot90案例精讲

    OpenCV 方法 OpenCV 中带有一个旋转图像的函数 cv2.rotate rotate(src, rotateCode[, dst]) -> dst参数:src:输入图像rotateCode:旋转方式1、cv2.ROTATE_90_CLOCKWISE:顺时针 90 度2、cv2.ROTATE_180:顺时针 180 度3、cv2.ROTATE_…

    2022年12月1日
    2.2K0
  • 最全!jsp连接各种数据库代码及读取数据实例

    有好多jsp初学者经常会问数据库怎么连接?我怎么连接不上数据库、语句怎么总是出错?所以中国网页设计写篇文章供大家参考,主要包括以下7种数据库的链接。 一、jsp连接MySQL数据库 二、jsp连接Sql Server7.0/2000数据库 三、jsp连接DB2数据库 四、jsp连接Informix数据库 五、jsp连接Sybase数据库 六、jsp连接Pos…

    2020年12月6日
    3.7K0
  • python 初学者练手上机实操七-列表、元组练习

    一、定义列表fruits 其中元素包[‘苹果’,’梨’,’香蕉’,’菠萝’,’草莓’,’桔子’,’橙子’,’木瓜’,’西瓜’,’哈密瓜’,’香瓜’,使用循环语句输出列表中的元素,但不输出菠萝。 要求: 1、新建一个“list.py”文件。 2、编写程序。 3、调试程序。 4、排除错误。 二、创建一个名称为list1的空列表 创建一个包含整形数据1,2,3的l…

    2023年6月15日
    7960
  • 跟永哥学MVC:Jsp+Servlet+JavaBean开发后台登录程序

    跟永哥学MVC:Jsp+Servlet+JavaBean开发后台登录程序,125建站网原创,转载请务必注明出版。 Jsp+Servlet+JavaBean开发后台登录程序-实现一 login.html(视图) <form action=”loginServlet” method=”post”> 用户名: <input type=”text”…

    2018年2月22日
    3.7K0
  • 基于jspSmartUpload的Jsp文件上传实例

    SmartUpload是一个免费的文件上传下载组件1、使用简单:仅三五行代码就可以搞定文件的上传2、方便存取:利用组件提供的对象,可以获得全部上传文件的信息(包括文件名,大小,类型,扩展名,文件数据等)。3、能对上传的文件在大小、类型等方面做出限制。如此可以滤掉不符合要求的文件。 下载jsmartcom_zh_CN.jar文件:http://www.125j…

    2018年12月11日
    2.3K0
  • JSP一次上传多个文件(基于jspSmartUpload)

    支持中文的jsp文件上传组件:jspSmartUpload.jar下载 可以一次上传多个文件 upload.html <html> <head> <title>网页设计:文件上传</title> <meta http-equiv=”Content-Type” content=”text/html; cha…

    编程开发 2021年11月25日
    9410

发表回复

登录后才能评论