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() %>&nbsp
<%=new Date(session.getCreationTime()) %>
<br>
session的Id号:<%=session.getId()%>
<br>
客户最近一次访问时间是:<%=session.getLastAccessedTime() %>&nbsp
<%=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对象的主要内容,如果未能解决你的问题,请参考以下文章

JSP内置对象的使用

JSP内置对象

JSP-JSP内置对象

jsp内置对象session出错问题

JSP内置对象及常用方法

jsp中页面间对象传递的方法有哪几种?