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
强!在线自动抠图网站-最强大的AI去背景神器
下一篇 2020年4月5日 上午8:10

99%的人还看了以下文章

  • Tomcat8启动一闪而过、Tomcat8启动闪退的解决办法(精)

    Tomcat8启动一闪而过、Tomcat8启动闪退的解决办法(精)Tomcat8启动一闪而过、Tomcat8启动闪退的解决办法(精)Tomcat8启动一闪而过、Tomcat8启动闪退的解决办法(精)Tomcat8启动一闪而过、Tomcat8启动闪退的解决办法(精)

    下载了Tomcat8,在CMD命令下输入命令:startup,Tomcat8启动一闪而过,测试http://localhost:8080/ 无法打开,网上找了很多文章都没解决,后来折腾出来了,特写教程分享给大家! Tomcat8.0 解压缩完,运行tomcat8.exe屏幕一闪就没了,运行tomcat8w.exe弹出个筐:  Unable to open t…

    2019年4月8日 编程开发
    24.1K0
  • python turtle绘画0基础练习

    一、题目:导入turtle包(import turtle),绘制边长为100的正方形。 要求: 1、新建一个“turtle2.py”文件 2、编写程序。 3、调试程序。 4、排除错误。 二、导入turtle包(import turtle),绘制半径为40的圆(circle)。 三、题目:导入turtle包(import turtle),绘制边长为60的等边三…

    2023年6月15日
    12.4K0
  • 图片上传并压缩源码免费下载(等比例压缩或者原尺寸压缩)-java

    项目开发时,需要手机拍照,然后上传图片,因为项目记录数非常多,每条记录需要3张照片,而手机相机越来越好,分辨率也高,就要压缩后再上传。 中国网页设计今天分享的图片上传并压缩方法支持等比例压缩或者原尺寸压缩两种。 可自行设置图片质量参数quality,能够同时处理jpg和png格式,也可把PNG转jpg或jpg转PNG。 宽度和高度可以根据项目实际需求自行设置…

    2019年6月24日
    11.4K0
  • 赞!1条语句快速将python程序打包成可执行文件

    python程序编写好后,如何将python程序打包成成可执行文件呢? 今天125建站网教大家使用pyinstaller打包命令将python程序打包,希望大家有所收获。 一、安装pyinstaller pip3 installer pyinstaller # 清华镜像安装 # pip3 install -i https://pypi.tuna.tsingh…

    2023年2月3日
    2.4K0
  • 上机实战七:EL和JSTL的使用

    建议学时:2 一、使用EL表达式简化javaBean的开发 编写一个用户登录的JavaBean,用户信息包括用户名和密码。 编写user.jsp,使用setProperty设置用户名为125jz,密码为123。 使用EL获取用户名和密码并显示。 二、使用EL实现问卷调查 用户输入昵称、所在城市,并且以多选的方式让用户选择所使用的开发语言,然后使用EL表达式显…

    2018年12月4日
    9.4K0
  • Python安装-小白图文教程(精)

    Python安装-小白图文教程(精)Python安装-小白图文教程(精)Python安装-小白图文教程(精)Python安装-小白图文教程(精)

    python优点 python非常简单,易学。 python虽然是用c语言写的,但是它摈弃了c中非常复杂的指针,简化了python的语法。 Python程序无需修改就可以在任何平台上面运行。 Python既支持面向过程的函数编程也支持面向对象的抽象编程。 你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。你可以把Python嵌入你的…

    2019年3月15日 编程开发
    9.9K1

发表回复

登录后才能评论