JSP常用内置对象——session对象
Posted ljn-note
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP常用内置对象——session对象相关的知识,希望对你有一定的参考价值。
1.session对象定义
session对象用于储存特定的用户会话所需的信息。当用户在应用程序的Web页之间跳转时,储存在sesion对象中的变量将不会丢失,而是在整个用户会话中一直存在。
当用户请求来自应用程序的Web页时,如果该用户还没有会话,则Web服务器将自动创建一个session对象。当会话过期或被放弃后,服务器将终止该会话。
具体解释为:
session对象用来保存每个用户的信息,以便跟踪每个用户的操作状态。其中,session信息保存在容器里,session的ID保存在客户计算机的Cookie中。用户首次登入系统时容器会给用户分配一个位于一个的session id标识用于区别其他的用户。当用户退出系统时,这个session就会自动消失。
当一个用户首次访问服务器上的一个JSP页面时,JSP引擎产生一个session对象,同时分配一个String类型的ID号,JSP引擎同时将这个ID号发送到客户端,存放在Cookie中,这样session对象和用户之间就建立了一一对应的关系。当用户再访问连接该服务器的其他页面时,不再分配给用户新的session对象。直到关闭浏览器后,服务器端该用户的session对象才取消,和用户的对应关系也一并消失。当重新打开浏览器再连接到该服务器时,服务器会为该用户再创建一个新的session对象。
2.session对象常用的方法
(1)setAttribute(String name,java.lang.Object value):用于设定指定名字的属性值,并且
(2)getAttribute(String name):用于获取与指定名字相联系的属性,如果属性不存在,将会返回null;
(3)getAttributeNames():用于返回session对象中储存的每一个属性对象,结果集是一个Enumeration类的实例;
(4)removeAttribute(String name):用于删除指定的属性(包含属性名、属性值)。如果在有效时间内,用户做出新的请求,那么服务器就会将其看作一个新的用户,此时,服务器将创建一个新的session,旧的session信息将会丢失;
3.session对象应用实例
(1)实现获取页面的访问次数
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% int number=1000; //从session对象获取number Object obj=session.getAttribute("number"); if(obj==null){ //设置session对象的变量值 session.setAttribute("number",String.valueOf(number)); //String.valueOf(number)是将number转化成String字符串类型 }else{ //取得session对象中的number变量 number=Integer.parseInt(obj.toString()); //Integer.parseInt()是把()里的内容转换成整数。 //obj.toString()是将obj对象转化为一个字符串并返回结果。 //统计页面访问次数 number+=1; //设定session对象的number变量值 session.setAttribute("number",String.valueOf(number)); } %> 你是第<%=number %>个用户访问本网站 </body> </html>
对应结果的图片为
不断刷新获得的结果为
(2)session综合方法实例
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.Date" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <hr> session的创建时间是:<%=session.getCreationTime() %>  <%=new Date(session.getCreationTime()) %> <br> session的Id号:<%=session.getId()%> <br> 客户最近一次访问时间是:<%=session.getLastAccessedTime() %>  <%=new java.sql.Time(session.getLastAccessedTime()) %> <br> <%=session.getMaxInactiveInterval() %> <br> 是否新创建的session:<%=session.isNew()?"是":"否" %> <hr> <% session.setAttribute("name","星火天涯"); session.setAttribute("password","666666"); %> 姓名:<%=session.getAttribute("name") %> <br> 密码:<%=session.getAttribute("password") %> <br> ID号:<%=session.getId() %> <br> <% session.setMaxInactiveInterval(500); %> 最大有效时间:<%=session.getMaxInactiveInterval() %> <br> <% session.removeAttribute("name"); %> 姓名:<%=session.getAttribute("name") %> <hr> </body> </html>
对应的结果图片为
刷新获得的结果为
(3)模拟网上购物,建立登入页面——login.jsp,购物页面——shop.jsp,结账页面——account.jsp
登入页面——login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>登入页面</title> </head> <body> <% session.setAttribute("customer","客户"); //为customer变量传值“客户” %> <h3>请先登入后购物:</h3> <hr> <form action="shop.jsp" method="get"> 客户名:<input type="text" name="loginName"> <input type="submit" value="提交"> </form> </body> </html>
购物页面——shop.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>购物页面</title> </head> <body> <% String na=request.getParameter("loginName"); session.setAttribute("name",na); %> <h3>请输入想购买的商品:</h3> <hr> <form action="account.jsp" method="get"> 要购买的商品:<input type="text" name="goodsName"> <input type="submit" value="购物"> </form> </body> </html>
结账页面——account.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>结账</title> </head> <body> <% String gn=request.getParameter("goodsName"); session.setAttribute("goods",gn); String 客户=(String)session.getAttribute("customer"); String 姓名=(String)session.getAttribute("name"); String 商品=(String)session.getAttribute("goods"); %> <h3>结账信息:</h3> <hr> <%=客户 %>的姓名是:<%=姓名 %> <br> 你购买的是商品是:<%=商品 %> </body> </html>
以上是关于JSP常用内置对象——session对象的主要内容,如果未能解决你的问题,请参考以下文章