Servlet和Jsp中的session技术

1、什么是session?

当用户打开浏览器,访问某个网站时,服务器就会在服务器的内存为该服务器分配一个空间,该空间被这个浏览器独占。这个空间就是session,该空间的数据默认保留时间30min。

2、session可以用来做什么?

1)、网上商城中的购物车

2)、保存登录用户的信息

3)、将某些数据放入到session中,供同一用户的各个页面使用。

4)、防止用户非法登录到某个页面

......

3、如何使用session(这里我们谈一下与Servlet中的对比)

(1)得到session

Servlet中:HttpSession hs=request.getSession(true);(这里的HttpSession其实和session是一回事)

jsp中:session是一个内置对象,可以直接使用(session其实java九大内置对象之一)

(2)向session添加属性

Servlet中:hs.setAttribute(String name,Object val);

jsp中:session.setAttribute(String name,Object o);

(3)从session得到某个属性

Servlet中:hs.getAttribute(String name);

jsp中:session.getAttribute(String name);

(4)从session删除某个属性

Servlet:hs.removeAttribute(String name);

jsp中:session.removeAttribute(String name);


session的时效性30分钟,这是指的发呆时间。


示例:

sessionTest1.jsp页面

<body>
    <h1>给session添加属性</h1>
    <%
      session.setAttribute("myname","景陈勇");
      session.setMaxInactiveInterval(20);//这里20指的是20秒,只要在20秒之内一直没有访问过session,那么session就失效了。
      out.println("添加了一个属性,名字是myName:对应的值是:景陈勇");
    %>

</body>

sessionTest2.jsp页面

<body>
    <h1>得到某个属性</h1>
    <%
    String name=(String)session.getAttribute("myname");
    out.println("得到的属性是:"+name);

        out.println("session id="+session.getId());//每一个session id都是唯一的
     %>
 </body>

4、session技术防止非法登录

比如我有个login.jsp页面,一个wel.jsp页面,原本是这样的,用户访问login.jsp页面,输入用户名和密码后登录wel.jsp页面。但是当用户直接访问wel.jsp页面时就也可以访问。这种情况下就可以用session解决。可以在登录login.jsp经过控制器验证通过时,在session中添加用户名:request.getSession().setAttribute("myName", u)。那么我们在wel.jsp时,先获取这个session,看看是不是为空,如果为空的话,就跳转到login.jsp界面。这样就可以防止用户直接访问wel.jsp也能登录的情况。wel.jsp获得session验证代码如下:
<body>
<%
  //防止用户非法登录
  String u=(String)session.getAttribute("myName");
  //如果用户没有登录
  if(u==null){
  //返回登录界面
  response.sendRedirect("login.jsp?err=1");
  return; //这个不能少,否则的话还会执行下面的代码
  }
%>
......
</body>

补充:因为我在跳转到login.jsp设置了err=1状态码。那么我的login.jsp页面也添加了点东西。如下面所示:
<%
  String err=request.getParameter("err");
 
  if(err!=null){
  if(err.equals("1")){
  out.println("<font color=red size=7>用户没有正常登录,请登录!</font><br/>");
  }
  }
%>

5、session技术的缺点:

因为session的各个属性要占用内存,因此软件公司都是在迫不得已的情况下,才使用。

一般使用情况:

a:保存用户信息;b:保存购物车; 

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Henry_Jing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值