Servlet和Jsp中的session技术

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/JCY1009015337/article/details/53769593

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:保存购物车; 

猜你喜欢

转载自blog.csdn.net/JCY1009015337/article/details/53769593
今日推荐