对于jsp中的内置对象-工作日志感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解jsp内置对象总结,并且为您提供关于javaweb-JSP中的九个内置对象、JavaWEB中JSP的内置对象出
对于jsp中的内置对象-工作日志感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解jsp内置对象总结,并且为您提供关于javaweb-JSP中的九个内置对象、JavaWEB中JSP的内置对象出现的原因及九个内置对象详解、JavaWeb学习总结(十七)——JSP中的九个内置对象、java中jsp的内置对象是什么的宝贵知识。
本文目录一览:- jsp中的内置对象-工作日志(jsp内置对象总结)
- javaweb-JSP中的九个内置对象
- JavaWEB中JSP的内置对象出现的原因及九个内置对象详解
- JavaWeb学习总结(十七)——JSP中的九个内置对象
- java中jsp的内置对象是什么
jsp中的内置对象-工作日志(jsp内置对象总结)
jsp中常用到的内置对象
1:out输出对象,他的实现对象是javax.servlet.jsp.JspWriter他的作用域主要为page,用户请求访问的当前页面,
2:request请求对象,javax.servlet.ServletRequest的子类型,对象内封装了客户端或者是WEB浏览器产生的HTTP请求,他的作用域是request(客户请求过程中),
3:response相应对象,javax.servlet.ServletResponse的子类型,对象内封装了返回HTTP客户端的输出,向页面作者提供了设置相应头标和状态码的方式,经常用来设置HTTP标题,添加cookie,设置相应内容的状态和类型,也可以用于重定向和编码url,他的作用域为page,
4:pageContext 上下文对象,javax.servlet.jsp.PageContext(抽象类)类型,他的作用域为page,
5:session会话对象,javax.servlet.http.HttpSession类型,主要用于跟踪对话,如果不需要在请求之间跟踪会话,可以在page指令中设置session="false",他的作用域为session,
6:application应用程序对象,javax.servlet.ServletContext类型,servlet欢迎通过调用getServletConfig().getContext()方法获得,他的作用域为程序运行期,它提供了关于服务器版本,应用级初始化参数以及应用内资源的绝对路径,注册信息的方式。
7:config配置对象,他的类型是javax.servlet.ServletConfig ,他的作用域是page,
8:exception异常对象,他的类型是java.lang.Throwable,通过jsp页面钟一个catch块已经溢出但是没有捕获java.lang.Throwable的一个实例,传向了errorpage的URI,作用域为page,注意exception对象只有在page指令中具有属性isErrorPage="true"时才有效,
9:page页面对象,java.lang.Object对象,指向页面自身的方式,他的作用域为page
javaweb-JSP中的九个内置对象
一、JSP原理
所以当访问一个jsp页面时,其实也是在访问一个Servlet,服务器在执行jsp的时候,首先把jsp翻译成一个_jspServlet,然后按照servlet的调用方式进行调用。
于JSP第一次访问时会翻译成servlet,所以第一次访问通常会比较慢,但第二次访问,JSP引擎如果发现JSP没有变化,就不再翻译,而是直接调用,所以程序的执行效率不会受到影响。
JSP引擎在调用JSP对应的_jspServlet时,会传递或创建9个与web开发相关的对象供_jspServlet使用。JSP技术的设计者为便于开发人员在编写JSP页面时获得这些web对象的引用,特意定义了9个相应的变量,开发人员在JSP页面中通过这些变量就可以快速获得这9大对象的引用。
二、认识九个内置对象
request,response,session,application,config这些对象在前面都已经做了详细的介绍,这里重点介绍一下剩下的pageContext对象,out对象,page对象。
三、内置对象使用说明
3.1、page对象
page对象表示当前一个JSP页面,可以理解为一个对象本身,即:把JSP当作一个对象来看待。page对象在开发中几乎不用,了解一下即可。
3.2、out对象
out对象用于向客户端发送文本数据。
out对象是通过调用pageContext对象的getOut方法返回的,其作用和用法与ServletResponse.getWriter方法返回的PrintWriter对象非常相似。
JSP页面中的out对象的类型为JspWriter,JspWriter相当于一种带缓存功能的PrintWriter,设置JSP页面的page指令的buffer属性可以调整它的缓存大小,甚至关闭它的缓存。
只有向out对象中写入了内容,且满足如下任何一个条件时,out对象才去调用ServletResponse.getWriter方法,并通过该方法返回的PrintWriter对象将out对象的缓冲区中的内容真正写入到Servlet引擎提供的缓冲区中:
- 设置page指令的buffer属性关闭了out对象的缓存功能
- out对象的缓冲区已满
- 整个JSP页面结束
out对象的工作原理图
3.3、pageContext对象
pageContext对象是JSP技术中最重要的一个对象,它代表JSP页面的运行环境,这个对象不仅封装了对其它8大隐式对象的引用,它自身还是一个域对象(容器),可以用来保存数据。并且,这个对象还封装了web开发中经常涉及到的一些常用操作,例如引入和跳转其它资源、检索其它域对象中的属性等。
3.4、通过pageContext获得其他对象
- getException方法返回exception隐式对象
- getPage方法返回page隐式对象
- getRequest方法返回request隐式对象
- getResponse方法返回response隐式对象
- getServletConfig方法返回config隐式对象
- getServletContext方法返回application隐式对象
- getSession方法返回session隐式对象
- getOut方法返回out隐式对象
3.5、pageContext封装其它8大内置对象的意义
如果在编程过程中,把pageContext对象传递给一个普通java对象,那么这个java对象将可以获取8大隐式对象,此时这个java对象就可以和浏览器交互了,此时这个java对象就成为了一个动态web资源了,这就是pageContext封装其它8大内置对象的意义,把pageContext传递给谁,谁就能成为一个动态web资源,那么什么情况下需要把pageContext传递给另外一个java类呢,什么情况下需要使用这种技术呢,在比较正规的开发中,jsp页面是不允许出现java代码的,如果jsp页面出现了java代码,那么就应该想办法把java代码移除掉,我们可以开发一个自定义标签来移除jsp页面上的java代码,首先围绕自定义标签写一个java类,jsp引擎在执行自定义标签的时候就会调用围绕自定义标签写的那个java类,在调用java类的时候就会把pageContext对象传递给这个java类,由于pageContext对象封装了对其它8大隐式对象的引用,因此在这个java类中就可以使用jsp页面中的8大隐式对象(request,response,config,application,exception,Session,page,out)了,pageContext对象在jsp自定义标签开发中特别重要。
3.6、pageContext作为域对象
pageContext对象可以作为容器来使用,因此可以将一些数据存储在pageContext对象中。
pageContext对象的常用方法
1 public void setAttribute(java.lang.String name,java.lang.Object value)
2 public java.lang.Object getAttribute(java.lang.String name)
3 public void removeAttribute(java.lang.String name)
4 public java.lang.Object findAttribute(java.lang.String name)
重点介绍一下findAttribute方法,这个方法是用来查找各个域中的属性的,查看这个方法的API可以看到关于这个方法的描述:
Searches for the named attribute in page, request, session (if valid), and application scope(s) in order and returns the value associated or null.
当要查找某个属性时,findAttribute方法按照查找顺序"page→request→session→application"在这四个对象中去查找,只要找到了就返回属性值,如果四个对象都没有找到要查找的属性,则返回一个null。
范例:使用pageContext的findAttribute方法查找属性值
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
4 <html>
5 <head>
6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
7 <title>pageContext的findAttribute方法查找属性值</title>
8 </head>
9 <%
10 pageContext.setAttribute("name1", "张三");
11 request.setAttribute("name2", "李四");
12 session.setAttribute("name3", "王五");
13 application.setAttribute("name4", "小六");
14 %>
15 <%
16 //使用pageContext的findAttribute方法查找属性,由于取得的值为Object类型,因此必须使用String强制向下转型,转换成String类型
17 //查找name1属性,按照顺序"page→request→session→application"在这四个对象中去查找
18 String value1 = (String)pageContext.findAttribute("name1");
19 String value2 = (String)pageContext.findAttribute("name2");
20 String value3 = (String)pageContext.findAttribute("name3");
21 String value4 = (String)pageContext.findAttribute("name4");
22 String value5 = (String)pageContext.findAttribute("name5"); //查找不存在的属性
23 %>
24 <h1>pagecontext.findAttribute方法查找到的属性值:</h1>
25 <h3>pageContext对象的name1属性值:<%=value1%></h3>
26 <h3>request对象的name2属性值:<%=value2%></h3>
27 <h3>session对象的name3属性值:<%=value3%></h3>
28 <h3>application对象的name4属性值:<%=value4%></h3>
29 <h3>查找不存在的name5属性值:<%=value5%></h3>
30
31 <h1>使用EL表达式进行输出</h1>
32 <h3>pageContext对象的name1属性值:${name1}</h3>
33 <h3>request对象的name2属性值:${name2}</h3>
34 <h3>session对象的name3属性值:${name3}</h3>
35 <h3>application对象的name4属性值:${name4}</h3>
36 <h3>查找不存在的name5属性值:${name5}</h3>
37 <body>
38 </body>
39 </html>
运行结果:
EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、 session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回”” (注意,不是null,而是空字符串)。
pageContext对象中封装了访问其它域的方法
1 public java.lang.Object getAttribute(java.lang.String name,int scope)
2 public void setAttribute(java.lang.String name, java.lang.Object value,int scope)
3 public void removeAttribute(java.lang.String name,int scope)
代表各个域的常量
1 1 PageContext.APPLICATION_SCOPE
2 2 PageContext.SESSION_SCOPE
3 3 PageContext.REQUEST_SCOPE
4 4 PageContext.PAGE_SCOPE
范例:pageContext访问其它域
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
4 <html>
5 <head>
6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
7 <title>pageContext访问其它域</title>
8 </head>
9 <body>
10 <%
11 //此时相当于session对象中存放了一个name属性,等价于session.setAttribute("name","张三");
12 pageContext.setAttribute("name", "张三", PageContext.SESSION_SCOPE);
13 %>
14 <%
15 //取得session对象的属性,使用pageContext对象获取
16 String s1 = (String)pageContext.getAttribute("name", PageContext.SESSION_SCOPE);
17 //由于取得的值为Object类型,因此必须使用String强制向下转型,转换成String类型
18 String s2 = (String)session.getAttribute("name");
19 %>
20 <h1>取出存放在session对象中的属性值:</h1>
21 <p>第一种做法:使用pageContex.getAttribute("attributeName",pageContex.SESSION_SCOPE)</p>
22 <h3>姓名:<%=s1 %></h3>
23 <p>第二种做法:使用session.getAttribute("attributeName");去取出session对象中值</p>
24 <h3>姓名:<%=s2 %></h3>
25 </body>
26 </html>
3.7、PageContext引入和跳转到其他资源
PageContext类中定义了一个forward方法(用来跳转页面)和两个include方法(用来引入页面)来分别简化和替代RequestDispatcher.forward方法和include方法。
方法接收的资源如果以“/”开头, “/”代表当前webContent应用。
范例:使用pageContext的forward方法跳转到其他页面
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
4 <html>
5 <head>
6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
7 <title>使用pageContext的forwrd方法跳转页面</title>
8 </head>
9 <body>
10 <%
11 //使用pageContext的forward方法跳转到page02.jsp页面, /相对webContent
12 pageContext.forward("/page02.jsp");
13 //使用pageContext.forward(relativeUrlPath)替代RequestDispatcher.forward(relativeUrlPath)
14 //使用替代RequestDispatcher的forward方法实现的跳转方式
15 //pageContext.getRequest().getRequestDispatcher("/page02.jsp").forward(request, response);
16 %>
17 </body>
18 </html>
运行结果如下:
1 pageContext.forward("/page02.jsp");
这种写法是用来简化和替代pageContext.getRequest().getRequestDispatcher("/pageContextDemo05.jsp").forward(request, response);这种写法的。在实际开发中,使用pageContext.forward(relativeUrlPath)方法跳转页面用得不多,主要是因为要在Jsp页面中嵌套java代码,所以这种做法简单了解一下即可,在开发中,要想从一个Jsp页面采用服务器端跳转的方式跳转到另一个Jsp页面,那么一般会使用<jsp:forward>标签,<jsp:forward>标签用于把请求转发给另外一个资源。
范例:使用pageContext的include方法引入资源
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
4 <html>
5 <head>
6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
7 <title>使用pageContext的include方法引入资源</title>
8 </head>
9 <body>
10 <%
11 pageContext.include("/jsp/head.jsp");
12 %>
13 <h1>主体部分</h1>
14 <%
15 pageContext.include("/jsp/foot.jsp");
16 %>
17 </body>
18 </html>
运行结果:
在实际开发中,使用pageContext的include方法引入页面这种做法也很少用,一般都使用jsp:include标签引入资源,因此这种做法了解一下即可。
JavaWEB中JSP的内置对象出现的原因及九个内置对象详解
一:内置对象的出现原因
当JSP页面被请求是, JSP会被Web转换成_jspServlet(实质上就是:Servlet), 然后按照Servlet的调用方式进行调用
因为有了这个转换过程,所以动态页面被访问时,第一次会比较慢, 但是在以后被打开是会比较快, 因为JSP文件已经被转化过,不需要再次转换,
在转化的过程中自动生成创建且生成9个对象来供_jspServlet使用.
二:九个内置对象详解
-
out
立即学习“Java免费学习笔记(深入)”;
request
response
session
pageContext
application
config
pageex
ception
其中out request response session 是比较常用的,
其中有四个作用域,就是这个对象的生命周期, request、session、application、page
三:内置对象详解
1:out
类型:Javax.servlet.jsp.JspWriter
作用;主要用于向客户端输出数据
作用域:page 及每个页面都有自己的out对象
out中的重要方法:print()/println()/write() 向客户端输送数据
可以这样理解,一个Jsp文件编译之后就是一个类,而out就对应一个页面对象。
2:request
类型:Javax.servlet.http.HttpServletRequest
描述:来自客户端的请求经Servlet容器处理后,由request对象进行封装。(客户端和服务器的一次通信就是一次请求(发送请求或得到相应)。
作用域:request。 这次请求结束后,它的生命周期 就结束了。
重要方法:
getParameter(key) 获取提交表单的数据
getParameterValues(key) 获取提交表单的一组数据
request.getRequestDispatcher("list.jsp").forward(request,response) 转发(通过代码的方式进行转发)
request.setAttribute(key,object) 设置请求对象的属性
request.gettAttribute(key) 获取请求对象的属性
request.setCharacterEncoding("UTF-8") 对请求数据重新编码
3:resonpse
类型:Javax.servlet.http. HttpServletResponse
描述:它封闭了JSP 的响应,然后被发送到客户端以响应客户的请求。
作用域:page
方法:
response.sendRedirect("页面"):页面跳转。 response.setCharacterEncoding("gbk"):设置响应编码
4:session
类型:Javax.servlet.http.HttpSession
描述:表示一个会话,用来保存用户信息,以便跟踪每个用户的状态。
定义:是指在一段时间内客户端和服务器之间的一连串的相关的交互过程。
作用域:session。
客户端与服务器之间可能需要不断地进行数据交互(请求与相应),这个过程就可以理解为一段回话。Tomcat默认的会话时间为30分钟,这段时间内如果没有交互,会话结束;下次客户端一旦发送请求,重新创建会话。当客户端第一次发送请求的时候,才会创建一个会话。session的生命周期比request长
会话结束的条件的条件:服务器关闭 会话过期 手动终止 (满足一个即可)
方法:
session.getid():取得session的id号.id由tomcat自动分配。
session.isnew():判断session时候是新建的
session.setAttribute(key,object):往当前会话中设置一个属性
session.getAttribute(key):获取当前会话中的一个属性
session.removeAttribute(key):删除当前会话中的属性
session.setMaxInactiveInterval(1000*60*30):设置当前会话失效时间(ms) 。Tomcat默认的会话时间为30分钟。
session.invalidate():初始化当前会话对象(一般在推出的时候使用,可以删除当前会话的数据)
5.pageContext
类型:javax.servlet.jsp.PageContext
描述:本JSP的页面上下文。(上下文可以联系到当前页面所有的信息。)
作用域:page
6:config
类型:javax.servlet.ServletConfig
描述:本JSP的 ServletConfig
作用域:page
7:page
类型:java.1ang.Object
描述:实现处理本页当前请求的类的实例(javax.servlet.jsp.HttpJspPage),转换后的Servlet类本身
作用域:page
8:exception
类型:java.lang.Exception
描述:本JSP页面的异常对象
作用域:page
9:application
类型:javax.servlet.ServletContext
描述:从servlet配置对象获得的servlet上下文
作用域:application
这个对象的生命周期是最长的。服务器启动的时候就会创建application对象。从服务器存在到服务器终止,都一直存在,且只保留一个对象,所有用户共享一个application。
相关文章:
JSP的内部对象_MySQL
JavaWeb之JSP基础小结
相关视频:
JSP参考手册
以上就是JavaWEB中JSP的内置对象出现的原因及九个内置对象详解的详细内容,更多请关注php中文网其它相关文章!
JavaWeb学习总结(十七)——JSP中的九个内置对象
一、JSP运行原理
每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理。JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet) ,然后按照servlet的调用方式进行调用。
由于JSP第一次访问时会翻译成servlet,所以第一次访问通常会比较慢,但第二次访问,JSP引擎如果发现JSP没有变化,就不再翻译,而是直接调用,所以程序的执行效率不会受到影响。
JSP引擎在调用JSP对应的_jspServlet时,会传递或创建9个与web开发相关的对象供_jspServlet使用。JSP技术的设计者为便于开发人员在编写JSP页面时获得这些web对象的引用,特意定义了9个相应的变量,开发人员在JSP页面中通过这些变量就可以快速获得这9大对象的引用。
二、认识九个内置对象
request,response,session,application,config这些对象在前面都已经作了详细的介绍,这里重点介绍一下剩下的pageContext对象,out对象,page对象。
三、内置对象使用说明
3.1、page对象
page对象表示当前一个JSP页面,可以理解为一个对象本身,即:把一个JSP当作一个对象来看待。page对象在开发中几乎不用,了解一下即可
3.2、out对象
out对象用于向客户端发送文本数据。
out对象是通过调用pageContext对象的getOut方法返回的,其作用和用法与ServletResponse.getWriter方法返回的PrintWriter对象非常相似。
JSP页面中的out对象的类型为JspWriter,JspWriter相当于一种带缓存功能的PrintWriter,设置JSP页面的page指令的buffer属性可以调整它的缓存大小,甚至关闭它的缓存。
只有向out对象中写入了内容,且满足如下任何一个条件时,out对象才去调用ServletResponse.getWriter方法,并通过该方法返回的PrintWriter对象将out对象的缓冲区中的内容真正写入到Servlet引擎提供的缓冲区中:
- 设置page指令的buffer属性关闭了out对象的缓存功能
- out对象的缓冲区已满
- 整个JSP页面结束
out对象的工作原理图
3.3、pageContext对象
pageContext对象是JSP技术中最重要的一个对象,它代表JSP页面的运行环境,这个对象不仅封装了对其它8大隐式对象的引用,它自身还是一个域对象(容器),可以用来保存数据。并且,这个对象还封装了web开发中经常涉及到的一些常用操作,例如引入和跳转其它资源、检索其它域对象中的属性等。
3.4、通过pageContext获得其他对象
- getException方法返回exception隐式对象
- getPage方法返回page隐式对象
- getRequest方法返回request隐式对象
- getResponse方法返回response隐式对象
- getServletConfig方法返回config隐式对象
- getServletContext方法返回application隐式对象
- getSession方法返回session隐式对象
- getOut方法返回out隐式对象
3.5、pageContext封装其它8大内置对象的意义
如果在编程过程中,把pageContext对象传递给一个普通java对象,那么这个java对象将可以获取8大隐式对象,此时这个java对象就可以和浏览器交互了,此时这个java对象就成为了一个动态web资源了,这就是pageContext封装其它8大内置对象的意义,把pageContext传递给谁,谁就能成为一个动态web资源,那么什么情况下需要把pageContext传递给另外一个java类呢,什么情况下需要使用这种技术呢,在比较正规的开发中,jsp页面是不允许出现java代码的,如果jsp页面出现了java代码,那么就应该想办法把java代码移除掉,我们可以开发一个自定义标签来移除jsp页面上的java代码,首先围绕自定义标签写一个java类,jsp引擎在执行自定义标签的时候就会调用围绕自定义标签写的那个java类,在调用java类的时候就会把pageContext对象传递给这个java类,由于pageContext对象封装了对其它8大隐式对象的引用,因此在这个java类中就可以使用jsp页面中的8大隐式对象(request,response,config,application,exception,Session,page,out)了,pageContext对象在jsp自定义标签开发中特别重要。
3.6、pageContext作为域对象
pageContext对象可以作为容器来使用,因此可以将一些数据存储在pageContext对象中。
pageContext对象的常用方法
1 public void setAttribute(java.lang.String name,java.lang.Object value)
2 public java.lang.Object getAttribute(java.lang.String name)
3 public void removeAttribute(java.lang.String name)
4 public java.lang.Object findAttribute(java.lang.String name)
重点介绍一下findAttribute方法,这个方法是用来查找各个域中的属性的,查看这个方法的API可以看到关于这个方法的描述:
Searches for the named attribute in page, request, session (if valid), and application scope(s) in order and returns the value associated or null.
当要查找某个属性时,findAttribute方法按照查找顺序"page→request→session→application"在这四个对象中去查找,只要找到了就返回属性值,如果四个对象都没有找到要查找的属性,则返回一个null。
范例:使用pageContext的findAttribute方法查找属性值
1 <%@page contentType="text/html;charset=UTF-8"%>
2 <%@page import="java.util.*"%>
3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4 <head>
5 <title>pageContext的findAttribute方法查找属性值</title>
6 </head>
7 <%
8 pageContext.setAttribute("name1", "孤傲苍狼");
9 request.setAttribute("name2", "白虎神皇");
10 session.setAttribute("name3", "玄天邪帝");
11 application.setAttribute("name4", "灭世魔尊");
12 %>
13 <%
14 //使用pageContext的findAttribute方法查找属性,由于取得的值为Object类型,因此必须使用String强制向下转型,转换成String类型
15 //查找name1属性,按照顺序"page→request→session→application"在这四个对象中去查找
16 String refName1 = (String)pageContext.findAttribute("name1");
17 String refName2 = (String)pageContext.findAttribute("name2");
18 String refName3 = (String)pageContext.findAttribute("name3");
19 String refName4 = (String)pageContext.findAttribute("name4");
20 String refName5 = (String)pageContext.findAttribute("name5");//查找一个不存在的属性
21 %>
22 <h1>pageContext.findAttribute方法查找到的属性值:</h1>
23 <h3>pageContext对象的name1属性:<%=refName1%></h3>
24 <h3>request对象的name2属性:<%=refName2%></h3>
25 <h3>session对象的name3属性:<%=refName3%></h3>
26 <h3>application对象的name4属性:<%=refName4%></h3>
27 <h3>查找不存在的name5属性:<%=refName5%></h3>
28 <hr/>
29 <h1>使用EL表达式进行输出:</h1>
30 <h3>pageContext对象的name1属性:${name1}</h3>
31 <h3>request对象的name2属性:${name2}</h3>
32 <h3>session对象的name3属性:${name3}</h3>
33 <h3>application对象的name4属性:${name4}</h3>
34 <h3>不存在的name5属性:${name5}</h3>
运行结果:
EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、 session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回”” (注意,不是null,而是空字符串)。
pageContext对象中封装了访问其它域的方法
1 public java.lang.Object getAttribute(java.lang.String name,int scope)
2 public void setAttribute(java.lang.String name, java.lang.Object value,int scope)
3 public void removeAttribute(java.lang.String name,int scope)
代表各个域的常量
1 PageContext.APPLICATION_SCOPE
2 PageContext.SESSION_SCOPE
3 PageContext.REQUEST_SCOPE
4 PageContext.PAGE_SCOPE
范例:pageContext访问其它域
1 <%@page contentType="text/html;charset=UTF-8"%>
2 <%@page import="java.util.*"%>
3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4 <head>
5 <title>pageContext访问其它域</title>
6 </head>
7 <%
8 //此时相当于往session对象中存放了一个name属性,等价于 session.setAttribute("name","孤傲苍狼");
9 pageContext.setAttribute("name","孤傲苍狼",PageContext.SESSION_SCOPE);
10 %>
11 <%
12 //取得session对象的属性,使用pageContext对象获取
13 String refName1 = (String)pageContext.getAttribute("name",PageContext.SESSION_SCOPE);
14 //由于取得的值为Object类型,因此必须使用String强制向下转型,转换成String类型
15 String refName2 = (String)session.getAttribute("name");
16 %>
17 <h1>取出存放在session对象中的属性值:</h1>
18 <p>第一种做法:使用pageContext.getAttribute("attributeName",PageContext.SESSION_SCOPE);去取出session对象中值</p>
19 <h3>姓名:<%=refName1%></h3>
20 <p>第二种做法:使用session.getAttribute("attributeName");去取出session对象中值</p>
21 <h3>姓名:<%=refName2%></h3>
3.7、PageContext引入和跳转到其他资源
PageContext类中定义了一个forward方法(用来跳转页面)和两个include方法(用来引入页面)来分别简化和替代RequestDispatcher.forward方法和include方法。
方法接收的资源如果以“/”开头, “/”代表当前web应用。
范例:使用pageContext的forward方法跳转到其他页面
1 <%@page contentType="text/html;charset=UTF-8"%>
2 <%@page import="java.util.*"%>
3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
4 <head>
5 <title>使用pageContext的forward方法跳转页面</title>
6 </head>
7 <%
8 //使用pageContext的forward方法跳转到pageContextDemo05.jsp页面,/代表了当前的web应用
9 pageContext.forward("/pageContextDemo05.jsp");
10 //使用pageContext.forward(relativeUrlPath)替代RequestDispatcher.forward(relativeUrlPath)
11 //使用RequestDispatcher的forward方法实现的跳转方式
12 //pageContext.getRequest().getRequestDispatcher("/pageContextDemo05.jsp").forward(request, response);
13 %>
运行结果如下:
1 pageContext.forward("/pageContextDemo05.jsp");
这种写法是用来简化和替代pageContext.getRequest().getRequestDispatcher("/pageContextDemo05.jsp").forward(request, response);这种写法的。在实际开发中,使用pageContext.forward(relativeUrlPath)方法跳转页面用得不多,主要是因为要在Jsp页面中嵌套java代码,所以这种做法简单了解一下即可,在开发中,要想从一个Jsp页面采用服务器端跳转的方式跳转到另一个Jsp页面,那么一般会使用<jsp:forward>标签,<jsp:forward>标签用于把请求转发给另外一个资源。
范例:使用pageContext的include方法引入资源
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
3 <head>
4 <title>使用pageContext的include方法引入资源</title>
5 </head>
6 <%
7 pageContext.include("/jspfragments/head.jsp");
8 %>
9 使用pageContext的include方法引入资源
10 <%
11 pageContext.include("/jspfragments/foot.jsp");
12 %>
13 <hr/>
14 <%--
15 <jsp:include page="/jspfragments/head.jsp"/>
16 使用jsp:include标签引入资源
17 <jsp:include page="/jspfragments/foot.jsp"/>
18 --%>
运行结果:
在实际开发中,使用pageContext的include方法引入页面这种做法也很少用,一般都使用jsp:include标签引入资源,因此这种做法了解一下即可。
java中jsp的内置对象是什么
1、HttpServletRequet类的Request对象:代表请求对象,主要用于接受客户端通过HTTP协议连接传输服务器端的数据。
2、HttpSevletResponse类的Response对象:代表响应对象,主要用于向客户端发送数据。
3、JspWriter类的out对象:主要用于向客户端输出数据,out的基类是jspWriter
4、HttpSession类的session对象:主要用来分别保存每个月的信息与请求关联的会话;会话状态的维持是web应用开发者必须面对的问题。
5、ServletContext类的application对象:主要用于保存用户信息,代码片段的运行环境;它是一个共享的内置对象,即一个容器中的多个用户共享一个application,故其保存的信息被所有用户所共享。
6、PageContext类的PageContext对象:管理网页属性,为jsp页面包装页面的上下文,管理对属于jsp的特殊可见部分中已经命名对象的访问,它的创建和初始化都是由容器来完成的。
7、ServletConfig类的Config对象:代码片段配置对象,标识Servlet的配置。
8、Object类的Page对象,处理jsp页面,是object类的一个实例,指的是jsp实现类的实例
9、Exception对象:处理jsp文件执行时发生的错误和异常,只有在错误页面里才使用,前提是在页面指令里要有isErrorPage=true。
以上就是java中jsp的内置对象是什么的详细内容,更多请关注php中文网其它相关文章!
今天关于jsp中的内置对象-工作日志和jsp内置对象总结的讲解已经结束,谢谢您的阅读,如果想了解更多关于javaweb-JSP中的九个内置对象、JavaWEB中JSP的内置对象出现的原因及九个内置对象详解、JavaWeb学习总结(十七)——JSP中的九个内置对象、java中jsp的内置对象是什么的相关知识,请在本站搜索。
本文标签: