JSP教程(五)—— JSP内置对象(下)

1  session对象

1.1  session简介

  • session表示客户端与服务器的一次会话。
  • Web中的session指的是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。
  • 从上述定义中可以看到,session实际上是一个特定的时间概念。
  • 在服务器的内存中保存着不同用户的session。

1.2  session对象

  • session对象是一个JSP内置对象。
  • session对象在第一个JSP页面被装载时自动创建,完成会话期管理。
  • 从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。
  • 当一个客户访问一个服务器时,可能会在服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要session对象。
  • session对象是HttpSession类的实例。

session对象常用方法:

  • long getCreationTime():返回session创建时间
  • public String getId():返回session创建时JSP引擎为它设的唯一ID号
  • public Object setAttribute(String name,Object value):使用指定名称将对象绑定到此会话
  • public Object getAttribute(String name):返回与此会话中的指定名称绑定在一起的对象,如果没有对象绑定在该名称下,则返回null
  • String[] getValueNames():返回一个包含此session种所有可用属性的数组
  • int getMaxInactiveInterval():返回两次请求间隔多长时间此session被取消(单位秒)

实例1

 1 <%@ page language="java" import="java.util.*,java.text.*" contentType="text/html; charset=utf-8"%>
 2 
 3 <body>
 4     <h1>session对象</h1>
 5     <hr>
 6     <%
 7         SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
 8         Date d = new Date(session.getCreationTime());    
 9         %>
10     session创建时间:<%= sdf.format(d) %><br>
11 </body>

运行结果:

(如果不加入时间类,则时间是以一串数字的形式输出)

实例2

 1 <%@ page language="java" import="java.util.*,java.text.*" contentType="text/html; charset=utf-8"%>
 2 
 3 <body>
 4     <h1>session对象</h1>
 5     <hr>
 6     <%
 7         SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
 8         Date d = new Date(session.getCreationTime());
 9         session.setAttribute("username", "qijunhui");
10     %>
11     session创建时间:<%= sdf.format(d) %><br>
12     session的ID编号:<%= session.getId() %><br>
13     从session中获取用户名:<%= session.getAttribute("username") %><br>
14 </body>

运行结果:

实例3

 1 <%@ page language="java" import="java.util.*,java.text.*" contentType="text/html; charset=utf-8"%>
 2 
 3 <body>
 4     <h1>session对象</h1>
 5     <hr>
 6     <%
 7         SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
 8         Date d = new Date(session.getCreationTime());
 9         session.setAttribute("username", "qijunhui");
10     %>
11     session创建时间:<%= sdf.format(d) %><br>
12     session的ID编号:<%= session.getId() %><br>
13     从session中获取用户名:<%= session.getAttribute("username") %><br>
14     <a href="session_page.jsp" target="_blank">跳转到新的session页面</a>
15 </body>
1 <%@ page language="java" import="java.util.*,java.text.*" contentType="text/html; charset=utf-8"%>
2 
3 <body>
4     <h1>session对象</h1>
5     <hr>
6     session的ID编号:<%= session.getId() %><br>
7     从session中获取用户名:<%= session.getAttribute("username") %><br>
8 </body>

运行结果:

实例4

 1 <%@ page language="java" import="java.util.*,java.text.*" contentType="text/html; charset=utf-8"%>
 2 
 3 <body>
 4     <h1>session对象</h1>
 5     <hr>
 6     <%
 7         SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
 8         Date d = new Date(session.getCreationTime());
 9         session.setAttribute("username", "qijunhui");
10         session.setAttribute("password", "123456");
11         session.setAttribute("username", "qijunhui");
12     %>
13     session创建时间:<%= sdf.format(d) %><br>
14     session的ID编号:<%= session.getId() %><br>
15     从session中获取用户名:<%= session.getAttribute("username") %><br>
16     session中保存的属性有:<%
17         String[] names = session.getValueNames();
18         for(int i=0;i<names.length;i++){
19             out.println(names[i]+"  ");
20         }
21     %>
22     <br>
23     <a href="session_page.jsp" target="_blank">跳转到新的session页面</a>
24 </body>

运行结果:

实例5

 1 <%@ page language="java" import="java.util.*,java.text.*" contentType="text/html; charset=utf-8"%>
 2 
 3 <body>
 4     <h1>session对象</h1>
 5     <hr>
 6     <%
 7         SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
 8         Date d = new Date(session.getCreationTime());
 9         session.setAttribute("username", "qijunhui");
10         session.setAttribute("password", "123456");
11         session.setAttribute("username", "qijunhui");
12         //设置当前session最大生命周期,单位是秒
13         session.setMaxInactiveInterval(10);
14     %>
15     session创建时间:<%= sdf.format(d) %><br>
16     session的ID编号:<%= session.getId() %><br>
17     从session中获取用户名:<%= session.getAttribute("username") %><br>
18     session中保存的属性有:<%
19         String[] names = session.getValueNames();
20         for(int i=0;i<names.length;i++){
21             out.println(names[i]+"  ");
22         }
23     %>
24     <br>
25     <a href="session_page.jsp" target="_blank">跳转到新的session页面</a>
26 </body>

运行结果:

1.3  Session生命周期

创建:

  • 当客户端第一次访问某个JSP或者servlet时候,服务器会为当前会话创建一个sessionId,每次客户端向服务器发送请求时,都会将此sessionId携带过去,服务器会对此sessionId进行效验。

活动:

  • 某次会话当中通过超连接打开的新页面属于同一此会话。
  • 只要当前会话页面没有全部关闭,重新打开新的浏览器窗口访问同一项目资源时属于同一此会话。
  • 除非本次会话的所有页面都关闭后再重新访问某个JSP或者servlet,将会创建新的会话。
  • 注意:原有会话仍存在,但只是这个旧的sessionId仍存在于服务器端,只不过再也没有客户端回携带它然后交予服务端效验。

销毁(三种方法):

  1. 调用了session.invalidate()方法
  2. session过期(超时)
  3. 服务器重新启动
  • 注意:Tomcat默认session超时时间为30分钟。
  1. 设置session超时有两种方式:
  2. 在web.xml配置
    1 <session-config>
    2     <session-timeout>
    3         10
    4     </session-timeout>
    5 </session-config>//单位是分钟

2  application对象

  • application对象实现了用户间数据的共享,可存放全局变量。
  • application开始于服务器的启动,终止于服务器的关闭。
  • 在用户的前后链接或不同用户之间的连接中,可以对application对象的同一属相进行操作。
  • 在任何地方对application对象属性的操作,都将影响到其他用户对此的访问。
  • 服务器的启动和关闭决定了application对象的生命。
  • application对象是SerbletContext类的实例。
  • (与Java的静态变量相似)

常用方法:

  • public void setAttribute(String name,Object value)使用指定名称将对象绑定到此会话。
  • publicObject getAttribute(String name)返回与此会话中的指定名称绑定在一起的对象,如果没有对象绑定在该名称下,则返回null。
  • Enumeration getAttributeNames()返回所有可用属性名的枚举。
  • String getServerInfo()返回JSP(SERVLET)引擎名及版本号。
 1 <body>
 2     <h1>APPLICATION内置对象</h1>
 3     <%
 4         application.setAttribute("city", "昆明");
 5         application.setAttribute("postcode", "111111");
 6         application.setAttribute("email", "qce.hui@qq.com");
 7     %>
 8     所在城市是:<%=application.getAttribute("city") %><br>
 9     application中的属性有:<%
10         Enumeration attributes = application.getAttributeNames();
11         while(attributes.hasMoreElements()){
12             out.println(attributes.nextElement()+"  ");
13         }
14     %><br>
15     JSP(SERVLET)引擎名及版本号:<%=application.getServerInfo() %><br>
16 </body>

运行结果:

3  page对象

实例1

1 <body>
2     <h1>page内置对象</h1>
3     当前page页面对象的字符串描述<%=page.toString() %>
4 </body> 

运行结果:

4  pageContext对象和config对象

4.1   pageContext对象实例

4.2  config对象

5  exception对象

posted @ 2018-02-19 15:16  祁俊辉  阅读(236)  评论(0编辑  收藏  举报