深入体验JavaWeb开发内幕——pageContext对象与JSP中标签的简介和相关应用
2016-10-27 11:19
741 查看
前面我们提到了JSP中的其他八个对象及其简单的应用,但是pageContext对象是JSP技术中最重要的一个对象,它代表JSP页面的运行环境,这个对象不仅封装了对其它8大隐式对象的引用,它自身还是一个域对象,可以用来保存数据。并且,这个对象还封装了web开发中经常涉及到的一些常用操作,例如引入和跳转其它资源、检索其它域对象中的属性等。
下面,我们就来看一看这个在JSP中占有重要地位的隐式对象pageContent吧。
一、pageConten
之所以说它最重要,是因为在JSP中它可以随意调用其它几大隐式对象。PageContent只需通过这些方法如:
getException方法返回exception隐式对象
getPage方法返回page隐式对象
getRequest方法返回request隐式对象
getResponse方法返回response隐式对象
getServletConfig方法返回config隐式对象
getServletContext方法返回application隐式对象
getSession方法返回session隐式对象
getOut方法返回out隐式对象
就可以很快地完成对其他隐式对象的调用了。那么,为什么要规定一个可以封装其他八点隐式对象的PageContent对象呢?
我们可以这样设想,我们在当前的JSP页面中很可能会用到许多个隐式对象,那么当在自定义的方法中,我们就必须向方法中传递相应的隐式对象作为参数,那么这样一来操 作 就十分不方便了,而PageContent恰好帮助我们解决了这一问题,因为,我们只需要将一个PageContent对象传递进去便可以根据需要产生出人意的隐式对象,以供使用。
PageContent除了可以作为其他隐式对象的调用者之外,其自身也作为一个重要的域对象,也有一些自己的方法。
如:
pageContext对象的方法
[java] view
plain copy
public void setAttribute(java.lang.String name,java.lang.Object value)
public java.lang.Object getAttribute(java.lang.String name)
public void removeAttribute(java.lang.String name)
pageContext对象中还封装了访问其它域的方法
[java] view
plain copy
public java.lang.Object getAttribute(java.lang.String name,int scope)
public void setAttribute(java.lang.String name, java.lang.Object value,int scope)
public void removeAttribute(java.lang.String name,int scope)
代表各个域的常量
[java] view
plain copy
PageContext.APPLICATION_SCOPE
PageContext.SESSION_SCOPE
PageContext.REQUEST_SCOPE
PageContext.PAGE_SCOPE
findAttribute方法 (*重点,查找各个域中的属性)
引入和跳转到其他资源
PageContext类中定义了一个forward方法和两个include方法来分别简化和替代RequestDispatcher.forward方法和include方法。
例:include方法测试
主代码:
[java] view
plain copy
PageContextInclude.jsp
<body>
<%pageContext.include("/PageContextInclude1.jsp");%>
这里是PageContextInclude测试! <br>
<%pageContext.include("/PageContextInclude2.jsp");%>
</body>
[java] view
plain copy
PageContextInclude1.jsp
<body>
这里是动态包含头!<br/>
</body>
[java] view
plain copy
PageContextInclude2.jsp
<body>
这里是动态包含尾!<br>
</body>
效果如图:
forward方法测试:
主要代码:
[java] view
plain copy
<body>
<%
pageContext.forward("/PageContextForward1.jsp");
%>
这里是PageContextForward测试!<br>
</body>
PageContextForward1.jsp主代码:
[java] view
plain copy
<body>
PageContextForward1动态转发! <br>
</body>
效果如图:
注意:
方法接收的资源如果以“/”开头, “/”代表当前web应用。
二、JSP中的标签
JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护。
关于JSP的常用标签
<jsp:include>标签
<jsp:forward>标签
<jsp:param>标签
<jsp:include>标签
<jsp:include>标签用于把另外一个资源的输出内容插入进当前JSP页面的输出内容之中,这种在JSP页面执行时的引入方式称之为动态引入。
语法:
<jsp:includepage="relativeURL | <%=expression%>"flush="true|false" />
page属性用于指定被引入资源的相对路径,它也可以通过执行一个表达式来获得。
f lush属性指定在插入其他资源的输出内容时,是否先将当前JSP页面的已输出的内容刷新到客户端。
<jsp:include>与include指令的比较
1、<jsp:include>标签是动态引入, <jsp:include>标签涉及到的2个JSP页面会被翻译成2个servlet,这2个servlet的内容在执行时进行合并。
2、 而include指令是静态引入,涉及到的2个JSP页面会被翻译成一个servlet,其内容是在源文件级别进行合并。
3、不管是<jsp:include>标签,还是include指令,它们都会把两个JSP页面内容合并输出,所以这两个页面不要出现重复的HTML全局架构标签,否则输出给客户端的内容将会是一个格式混乱的HTML文档。
我们来看一看关于它们的具体应用:
Include指令:
IncludeCommand.jsp主要的代码:
[java] view
plain copy
<body>
<%@include file="IncludeHead.jsp" %>
这是一个include指令实现!<br>
<%@include file="IncludeFoot.jsp" %>
</body>
[java] view
plain copy
IncludeHead.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
我是头! <br>
[java] view
plain copy
IncludeFoot.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
我是尾! <br>
效果如图:
DElementInclude.jsp主代码:
[java] view
plain copy
<body>
<%request.setCharacterEncoding("utf-8"); %>
<jsp:include page="/Include.jsp">
<jsp:param value="十年" name="pass"/>
</jsp:include>
这里是Include的测试! <br>
</body>
Include.jsp主代码:
[java] view
plain copy
<body>
<%=request.getParameter("pass") %>
Include! <br>
</body>
效果如图:
<jsp:forward>标签
<jsp:forward>标签用于把请求转发给另外一个资源。
语法:
<jsp:forward page="relativeURL | <%=expression%>" />
page属性用于指定请求转发到的资源的相对路径,它也可以通过执行一个表达式来获得。
forward标签测试:
DElement.jsp主代码:
[java] view
plain copy
<body>
这里是JSP动作元素测试!<br/>
<%request.setCharacterEncoding("utf-8"); %>
<jsp:forward page="/Forward.jsp">
<jsp:param value="lijizh" name="name"/>
</jsp:forward>
</body>
Forward.jsp
[java] view
plain copy
<body>
<%=request.getParameter("name") %>
</body>
效果如图:
<jsp:param>标签
当使用<jsp:include>和<jsp:forward>标签引入或将请求转发给其它资源时,可以使用<jsp:param>标签向这个资源传递参数。
语法1:
<jsp:includepage="relativeURL | <%=expression%>">
<jsp:paramname="parameterName" value="parameterValue|<%= expression%>" />
</jsp:include>
语法2:
<jsp:forwardpage="relativeURL | <%=expression%>">
<jsp:paramname="parameterName" value="parameterValue|<%= expression%>" />
</jsp:include>
<jsp:param>标签的name属性用于指定参数名,value属性用于指定参数值。在<jsp:include>和<jsp:forward>标签中可以使用多个<jsp:param>标签来传递多个参数。
注意:
<jsp:param>标签一般不单独使用,而是结合<jsp:include>和<jsp:forward>标签使用。
<jsp:param>实例:
DElement.jsp主代码:
[java] view
plain copy
<body>
这里是JSP动作元素测试!<br/>
<%request.setCharacterEncoding("utf-8"); %>
<jsp:forward page="/Forward.jsp">
<jsp:param value="lijizh" name="name"/>
</jsp:forward>
</body>
Forward.jsp
[java] view
plain copy
<body>
<%=request.getParameter("name") %>
</body>
关于JSP中的相关知识是比较松散的,掌握起来不是很容易,但是它是非常重要的,因此,初学者应当多加练习,熟练掌握每一个知识点。
OK,到这里吧!
下面,我们就来看一看这个在JSP中占有重要地位的隐式对象pageContent吧。
一、pageConten
之所以说它最重要,是因为在JSP中它可以随意调用其它几大隐式对象。PageContent只需通过这些方法如:
getException方法返回exception隐式对象
getPage方法返回page隐式对象
getRequest方法返回request隐式对象
getResponse方法返回response隐式对象
getServletConfig方法返回config隐式对象
getServletContext方法返回application隐式对象
getSession方法返回session隐式对象
getOut方法返回out隐式对象
就可以很快地完成对其他隐式对象的调用了。那么,为什么要规定一个可以封装其他八点隐式对象的PageContent对象呢?
我们可以这样设想,我们在当前的JSP页面中很可能会用到许多个隐式对象,那么当在自定义的方法中,我们就必须向方法中传递相应的隐式对象作为参数,那么这样一来操 作 就十分不方便了,而PageContent恰好帮助我们解决了这一问题,因为,我们只需要将一个PageContent对象传递进去便可以根据需要产生出人意的隐式对象,以供使用。
PageContent除了可以作为其他隐式对象的调用者之外,其自身也作为一个重要的域对象,也有一些自己的方法。
如:
pageContext对象的方法
[java] view
plain copy
public void setAttribute(java.lang.String name,java.lang.Object value)
public java.lang.Object getAttribute(java.lang.String name)
public void removeAttribute(java.lang.String name)
pageContext对象中还封装了访问其它域的方法
[java] view
plain copy
public java.lang.Object getAttribute(java.lang.String name,int scope)
public void setAttribute(java.lang.String name, java.lang.Object value,int scope)
public void removeAttribute(java.lang.String name,int scope)
代表各个域的常量
[java] view
plain copy
PageContext.APPLICATION_SCOPE
PageContext.SESSION_SCOPE
PageContext.REQUEST_SCOPE
PageContext.PAGE_SCOPE
findAttribute方法 (*重点,查找各个域中的属性)
引入和跳转到其他资源
PageContext类中定义了一个forward方法和两个include方法来分别简化和替代RequestDispatcher.forward方法和include方法。
例:include方法测试
主代码:
[java] view
plain copy
PageContextInclude.jsp
<body>
<%pageContext.include("/PageContextInclude1.jsp");%>
这里是PageContextInclude测试! <br>
<%pageContext.include("/PageContextInclude2.jsp");%>
</body>
[java] view
plain copy
PageContextInclude1.jsp
<body>
这里是动态包含头!<br/>
</body>
[java] view
plain copy
PageContextInclude2.jsp
<body>
这里是动态包含尾!<br>
</body>
效果如图:
forward方法测试:
主要代码:
[java] view
plain copy
<body>
<%
pageContext.forward("/PageContextForward1.jsp");
%>
这里是PageContextForward测试!<br>
</body>
PageContextForward1.jsp主代码:
[java] view
plain copy
<body>
PageContextForward1动态转发! <br>
</body>
效果如图:
注意:
方法接收的资源如果以“/”开头, “/”代表当前web应用。
二、JSP中的标签
JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护。
关于JSP的常用标签
<jsp:include>标签
<jsp:forward>标签
<jsp:param>标签
<jsp:include>标签
<jsp:include>标签用于把另外一个资源的输出内容插入进当前JSP页面的输出内容之中,这种在JSP页面执行时的引入方式称之为动态引入。
语法:
<jsp:includepage="relativeURL | <%=expression%>"flush="true|false" />
page属性用于指定被引入资源的相对路径,它也可以通过执行一个表达式来获得。
f lush属性指定在插入其他资源的输出内容时,是否先将当前JSP页面的已输出的内容刷新到客户端。
<jsp:include>与include指令的比较
1、<jsp:include>标签是动态引入, <jsp:include>标签涉及到的2个JSP页面会被翻译成2个servlet,这2个servlet的内容在执行时进行合并。
2、 而include指令是静态引入,涉及到的2个JSP页面会被翻译成一个servlet,其内容是在源文件级别进行合并。
3、不管是<jsp:include>标签,还是include指令,它们都会把两个JSP页面内容合并输出,所以这两个页面不要出现重复的HTML全局架构标签,否则输出给客户端的内容将会是一个格式混乱的HTML文档。
我们来看一看关于它们的具体应用:
Include指令:
IncludeCommand.jsp主要的代码:
[java] view
plain copy
<body>
<%@include file="IncludeHead.jsp" %>
这是一个include指令实现!<br>
<%@include file="IncludeFoot.jsp" %>
</body>
[java] view
plain copy
IncludeHead.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
我是头! <br>
[java] view
plain copy
IncludeFoot.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
我是尾! <br>
效果如图:
DElementInclude.jsp主代码:
[java] view
plain copy
<body>
<%request.setCharacterEncoding("utf-8"); %>
<jsp:include page="/Include.jsp">
<jsp:param value="十年" name="pass"/>
</jsp:include>
这里是Include的测试! <br>
</body>
Include.jsp主代码:
[java] view
plain copy
<body>
<%=request.getParameter("pass") %>
Include! <br>
</body>
效果如图:
<jsp:forward>标签
<jsp:forward>标签用于把请求转发给另外一个资源。
语法:
<jsp:forward page="relativeURL | <%=expression%>" />
page属性用于指定请求转发到的资源的相对路径,它也可以通过执行一个表达式来获得。
forward标签测试:
DElement.jsp主代码:
[java] view
plain copy
<body>
这里是JSP动作元素测试!<br/>
<%request.setCharacterEncoding("utf-8"); %>
<jsp:forward page="/Forward.jsp">
<jsp:param value="lijizh" name="name"/>
</jsp:forward>
</body>
Forward.jsp
[java] view
plain copy
<body>
<%=request.getParameter("name") %>
</body>
效果如图:
<jsp:param>标签
当使用<jsp:include>和<jsp:forward>标签引入或将请求转发给其它资源时,可以使用<jsp:param>标签向这个资源传递参数。
语法1:
<jsp:includepage="relativeURL | <%=expression%>">
<jsp:paramname="parameterName" value="parameterValue|<%= expression%>" />
</jsp:include>
语法2:
<jsp:forwardpage="relativeURL | <%=expression%>">
<jsp:paramname="parameterName" value="parameterValue|<%= expression%>" />
</jsp:include>
<jsp:param>标签的name属性用于指定参数名,value属性用于指定参数值。在<jsp:include>和<jsp:forward>标签中可以使用多个<jsp:param>标签来传递多个参数。
注意:
<jsp:param>标签一般不单独使用,而是结合<jsp:include>和<jsp:forward>标签使用。
<jsp:param>实例:
DElement.jsp主代码:
[java] view
plain copy
<body>
这里是JSP动作元素测试!<br/>
<%request.setCharacterEncoding("utf-8"); %>
<jsp:forward page="/Forward.jsp">
<jsp:param value="lijizh" name="name"/>
</jsp:forward>
</body>
Forward.jsp
[java] view
plain copy
<body>
<%=request.getParameter("name") %>
</body>
关于JSP中的相关知识是比较松散的,掌握起来不是很容易,但是它是非常重要的,因此,初学者应当多加练习,熟练掌握每一个知识点。
OK,到这里吧!
相关文章推荐
- 深入体验JavaWeb开发内幕——pageContext对象与JSP中标签的简介和相关应用
- 深入体验JavaWeb开发内幕——pageContext对象与JSP中标签的简介和相关应用
- 深入体验JavaWeb开发内幕——JSP技术相关案例应用
- pageContext对象、JSP标签、如何查找JSP页面中的错误
- 深入体验JavaWeb开发内幕——JSP技术简介之二JSP中的指令和out隐式对象
- pageContext对象、JSP的标签和映射
- jsp的九大内置对象的简介及其应用
- pageContext对象、JSP标签
- JSP—JSP简介(JSP语法、九大隐式对象、常用标签)
- 浪潮优派培训笔记:JSP的9大内置对象之(三).与数据通信相关的4个内置对象:pageContext、request、session、application
- pageContext对象与域对象 JSP标签 20111101
- jsp内置对象application、exception、pageContext、config方法
- [教程]自定义JSP中的Taglib标签之六Taglib中常用的属性值与tld常用标签简介与web.xml设置自定义标签的uri
- 轻量级标签JSTL在Jsp中的重磅应用
- 轻量级标签JSTL在Jsp中的重磅应用
- JSP内置对象之八——pageContext
- JSP内置九个对象;pageContext对象;JSP的7个动作指令
- jsp中相关应用
- Servlet,JSP,过滤器和监听器,四个作用域和九个内置对象,EL表达式语言,自定义标签,JSTL
- 掌握 JSP 九大隐式对象--(Servlet 中使用的对象在 JSP 中的应用)