jsp常用内置对象及其使用范围

来源:互联网 发布:c linux ide工具 编辑:程序博客网 时间:2024/05/22 10:28

jsp内置对象是为了简化用户的开发而由容器自动为用户进行的实例化对象,使得用户可以不必向Java当中那样使用关键字new一个实例化对象之后才能够进行使用

常用的jsp内置对象主要有5种:

pageContext(jsp的页面容器),request,response,session,application

page对象:只在一个页面当中保存属性值,跳转之后无效。

request对象:只在一次请求当中保存属性值,服务器跳转之后依然有用。

session对象:在一次会话范围内进行保存,无论进行任何跳转都可以进行属性值的使用操作,但是再重新打开一个新的浏览器时将无法再使用。

application对象:在整个服务器对象当中都起作用,只要不进行服务器的关闭操作即可。



使用jsp指令进行页面的跳转操作和使用超链接进行页面的跳转操作之间的区别:

首先定义一个通过jsp指令来进行页面的跳转操作:

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%><%@ page import="java.util.*" %>    <html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>设置request属性的范围属性值</title></head><body><%request.setAttribute("name", "青之羽");request.setAttribute("birthday",new Date());%><!--通过jsp来进行页面的跳转操作--><jsp:forward page="request_scope_02.jsp"/></body></html>
下面代码为进行跳转后的页面代码:
<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%><%@ page import="java.util.*" %><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>request范围的属性值,用于接收request对象传递过来的值</title></head><body><%//获取request对象传递过来的参数值对象String username=(String)request.getAttribute("name");Date userbirthday=(Date)request.getAttribute("birthday");%><!--对从request对象当中所获取到的属性变量值进行输出操作--><h2>姓名:<%=username %></h2><br><h2>生日:<%=userbirthday %></h2></body></html>
程序运行后的结果为:

如上图当中可以看到页面的rul地址依然是进行请求发处时的地址,而非 跳转后的地址值,表明了页面的跳转是在服务器内部所进行的跳转操作,即客户端只向服务器发送一次请求,然后服务器根据jsp当中的页面跳转指令来自动将所接收到的请求发送到目标网页当中去。

但是如果使用超链接来进行页面的跳转操作时,则相当于客户端第一次自动将设置有属性变量值得request对象发送给了服务器,但是tomcat服务器只是接收了该request对象,但是并不做任何处理,但是当用户点击超链接时,此时客户端将会再次发送一个request对象到目标网页当中去,但是此时的request对象当中将不会含有上一次request对象当中所设置的属性变量值参数,所以在超链接跳转后的页面当中所输出的request对象当中的属性值为空值。

如下:

先建立一个通过超链接来进行页面的跳转实现指定网页的访问:

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%><%@ page import="java.util.*" %><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Insert title here</title></head><body><%request.setAttribute("name", "青之羽");request.setAttribute("birthday",new Date());%><a href="request_scope_02.jsp">通过超链接来进行页面的跳转操作</a></body></html>
要跳转的页面:

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%><%@ page import="java.util.*" %><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>request范围的属性值,用于接收request对象传递过来的值</title></head><body><%//获取request对象传递过来的参数值对象String username=(String)request.getAttribute("name");Date userbirthday=(Date)request.getAttribute("birthday");%><!--对从request对象当中所获取到的属性变量值进行输出操作--><h2>姓名:<%=username %></h2><br><h2>生日:<%=userbirthday %></h2></body></html>
程序的运行结果:


如上图所示的,页面在跳转前后的网页地址值不同,且跳转之后将无法进行request对象当中属性变量值得接收操作。表明了使用超链接是发送了一个新的请求操作对象。






0 0
原创粉丝点击