专栏首页小小码农一个。JSP中的四种作用域

JSP中的四种作用域

JSP中的四种作用域包括page、request、session和application,具体来说:

page代表与一个页面相关的对象和属性。 request代表与Web客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个Web组件;需要在页面显示的临时数据可以置于此作用域。 session代表与某个用户与服务器建立的一次会话相关的对象和属性。跟某个用户相关的数据应该放在用户自己的session中。 application代表与整个Web应用程序相关的对象和属性,它实质上是跨越整个Web应用程序,包括多个页面、请求和会话的一个全局作用域。

如何实现JSP或Servlet的单线程模式

对于JSP页面,可以通过page指令进行设置。 <%@page isThreadSafe="false"%>

对于Servlet,可以让自定义的Servlet实现SingleThreadModel标识接口。

说明:如果将JSP或Servlet设置成单线程工作模式,会导致每个请求创建一个Servlet实例,这种实践将导致严重的性能问题(服务器的内存压力很大,还会导致频繁的垃圾回收),所以通常情况下并不会这么做。

实现会话跟踪的技术有哪些

使用Cookie 向客户端发送Cookie

Cookie c =new Cookie("name","value"); //创建Cookie 
c.setMaxAge(60*60*24); //设置最大时效,此处设置的最大时效为一天
response.addCookie(c); //把Cookie放入到HTTP响应中

从客户端读取Cookie

String name ="name"; 
Cookie[]cookies =request.getCookies(); 
if(cookies !=null){ 
   for(int i= 0;i<cookies.length;i++){ 
    Cookie cookie =cookies[i]; 
    if(name.equals(cookis.getName())) 
    //something is here. 
    //you can get the value 
    cookie.getValue(); 

   }
 }

优点: 数据可以持久保存,不需要服务器资源,简单,基于文本的Key-Value

缺点: 大小受到限制,用户可以禁用Cookie功能,由于保存在本地,有一定的安全风险。

URL 重写 在URL中添加用户会话的信息作为请求的参数,或者将唯一的会话ID添加到URL结尾以标识一个会话。

优点: 在Cookie被禁用的时候依然可以使用

缺点: 必须对网站的URL进行编码,所有页面必须动态生成,不能用预先记录下来的URL进行访问。

3.隐藏的表单域

<input type="hidden" name ="session" value="..."/>

优点: Cookie被禁时可以使用

缺点: 所有页面必须是表单提交之后的结果。

HttpSession 在所有会话跟踪技术中,HttpSession对象是最强大也是功能最多的。当一个用户第一次访问某个网站时会自动创建 HttpSession,每个用户可以访问他自己的HttpSession。可以通过HttpServletRequest对象的getSession方 法获得HttpSession,通过HttpSession的setAttribute方法可以将一个值放在HttpSession中,通过调用 HttpSession对象的getAttribute方法,同时传入属性名就可以获取保存在HttpSession中的对象。与上面三种方式不同的 是,HttpSession放在服务器的内存中,因此不要将过大的对象放在里面,即使目前的Servlet容器可以在内存将满时将HttpSession 中的对象移到其他存储设备中,但是这样势必影响性能。添加到HttpSession中的值可以是任意Java对象,这个对象最好实现了 Serializable接口,这样Servlet容器在必要的时候可以将其序列化到文件中,否则在序列化时就会出现异常。

Cookie和Session的的区别

Cookie 和 Session都是用来跟踪浏览器用户身份的会话方式,但是两者的应用场景不太一样。

Cookie 一般用来保存用户信息 比如①我们在 Cookie 中保存已经登录过得用户信息,下次访问网站的时候页面可以自动帮你登录的一些基本信息给填了;②一般的网站都会有保持登录也就是说下次你再访问网站的时候就不需要重新登录了,这是因为用户登录的时候我们可以存放了一个 Token 在 Cookie 中,下次登录的时候只需要根据 Token 值来查找用户即可(为了安全考虑,重新登录一般要将 Token 重写);③登录一次网站后访问网站其他页面不需要重新登录。Session 的主要作用就是通过服务端记录用户的状态。 典型的场景是购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后就可以标识这个用户并且跟踪这个用户了。

Cookie 数据保存在客户端(浏览器端),Session 数据保存在服务器端。

Cookie 存储在客户端中,而Session存储在服务器上,相对来说 Session 安全性更高。如果使用 Cookie 的一些敏感信息不要写入 Cookie 中,最好能将 Cookie 信息加密然后使用到的时候再去服务器端解密。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python爬取猫眼电影TOP100榜

    给大家演示下关于python爬取猫眼电影TOP100榜相关信息的实例,包含电影排名,电影名称,主演,上映时间,评分等信息,及讲解下爬取过程中遇到的相关知识点。 ...

    崔笑颜
  • 关于数字雨特效的学习

    关于数字雨特效的学习 数字雨特效在很多场景都得到应用,看起来非常具有科技感。因此,一次偶然的机会在CSDN中学习了如何制作特效雨,下面分享一下学习数字特效雨的...

    崔笑颜
  • 清理Redis病毒程序kdevtmpfsi

    一个redis 程序占用cpu 46%,虽然redis-server 有定时清理过期的键,但也不会占用这么高的CPU吧,一般都是0.3% 看看这个进程什么鬼 ...

    崔笑颜
  • asp.net Forms身份验证详解

      在做网站的时候,都会用到用户登录的功能。对于一些敏感的资源,我们只希望被授权的用户才能够访问,这让然需要用户的身份验证。对于初学者,通常将用户登录信息存放在...

    thz
  • Session

    类比:session相当于发会员卡,会员卡上只有卡号(sessionID)。下次去健身房的时候,只要看卡号上,就能确定你本人的去他信息。 而cookie相当于把...

    代码之风
  • “小苹果”风靡全国的背后:网络大数据分析

    在12月16日举行的第二届中国网络视听大会上,百度提前发布了2014年的部分“大数据”。“视听类”榜单上,“古剑奇谭”、“鹿晗”、“杨幂”、“TFBoys”分别...

    CDA数据分析师
  • “小苹果”风靡全国的背后:互联网大数据分析

    PPV课大数据 在12月16日举行的第二届中国网络视听大会上,百度提前发布了2014年的部分“大数据”。“视听类”榜单上,“古剑奇谭”、“鹿晗”、“杨幂”、“T...

    小莹莹
  • 宏与C预处理器

    通常的目标是:书写一个像包含一个单独的函数调用语句的宏, 这意味着:调用者需要提供最终的分号,而宏体则不需要。因此宏体不能为简单的括弧包围的复合语句,因为如果这...

    闫小林
  • Cookie设置HttpOnly属性

    在Servlet 3.0中增加对Cookie(请注意,这里所说的Cookie,仅指和Session互动的Cookie,即人们常说的会话Cookie)较为全面的操...

    JavaEdge
  • HDUOJ----1250 Hat's Fibonacci

    Hat's Fibonacci Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32...

    Gxjun

扫码关注云+社区

领取腾讯云代金券