JSP动作元素
JSP动作元象用来控制JSP的行为,执行一些常用的JSP页面动作。通过动作元素可以重既使用多行Java代码能够实现的效果,如包含页面文件、实现请求转发等。
6.5.1 jsp:include动作元素
在JSP页面中,为了把其他资源的输出内容插入到当前JSP页面的输出内容中,JSP技术提供了动作元素,动作元素的具体语法格式如下所示。
<jsp:include page=“relativeURL” flush=“true | false” />
在上述通法格式中。page属性用于指定被引入资源的相对路径; flush 属性用于指定是否将当前页面的输出内容刷新到客户端,默认情况下,flush属性的值为false。
包含的原理是将被包含的页面编译处理后将结果包含在页面中。当浏览器第1次通求个使用包含 其他页面的页面时,Web容器首先会编译被包含的页面, 然后将编泽处理后的返回结果包含在页面中,之后编译包含页面,最后将两个页面组合的结果回应给测览器。为了使读者更好地理解jsp:include动作元素,接下来,通过一个案例来演示动作元素的使用,具体如下。
(1)在chapter06项目的WebContent目录下编写两个JSP文件,分别是included.jsp和dynamicncludejsp.其中,dynamicInclude,jsp 页面用于引入included,jsp 页面。included isp作为被引入的文件,让它暂停5秒钟后才输出内容,这样,可以方便测试jsp:include标签的flush属性。included jsp的具体代码如文件6- 10所示,dynamicInclude jsp具体代码如下所示。
included.jsp
(2)启动Tomcat服务器,访问地址ht:p:/ts//th//ioiaihnclidre sp"后,发现浏览器首先会显示dynamicInclude.jsp 页面中的输出内容,等待5秒后,才会显示included.jsp页面的输出内容。说明被引用的资源included.jsp在当前JSP页面输出内容后才被调用。其最后显示结果如图所示。
6.5.2 jsp:forward动作元素
jsp:forward动作元素将当前请求转发到其他Web资源(HTML页面、JSP页面和Servlet等),在执行请求转发之后的当前页面将不再执行,而是执行该元素指定的目标页面。其具体语法格式如下所示。
<jsp: forward page=“relativeURL” />
在上述语法格式中,page属性用于指定请求转发到的资源的相对路径,该路径是相对于当前JSP页面的URL。
为了使读者更好地理解jsp:forward动作元素,接下来,通过一个案例来学习jsp:forward动作元素的具体用法。
首先编写一个用于实现转发功能的jspforward.jsp 页面和一个用于显示当前时间的welcome.jsp页面,具体如文件6-12和文件所示。
jspforward.jsp
启动Tomeal服务器,通过浏览器访问 http://localhost:9999/chapter08/jspforward.jsp" ,浏览器的显示界面如图所示。
6.6阶段案例:传智书城JSP页面
[实现步骤]
1.首页设置
在capter08项目的WebContent目录下创建一一个名称为ndex sP的页面文件,该文件使用ispforword>动作元素跳转到项目客户端展示的首页,其主要代码如下所示。
<%@page language=“java” contentType=“text/html; charset=UTF-8” pageEncoding=“UTF-8”%>
添加page指令后,重新启动Tomcat服务器,再次访问index.jsp 页面,这时所有中文就可以正确显示了。
3.修改JSP页面中的地址和链接
虽然此时表面上看,index.jsp可以正常访问了,但是当点击页面右上角的“新用户注册”时,会发现浏览器未显示出注册页面,而是报出“404" 错误,如图6-19所示。
从图6-19中可以看出,当点击“新用户注册”链接后,所访问的链接路径是/chapter06/register.jsp,而项目中注册页面的真实路径是/chapter06/client/register.jsp,所以出现了“404"错误。要解决此问题,只需在index.jsp页面文件中的链接和图片等路径前,加入“ p a g e C o n t e x t . r e q u e s t . c o n t e x t P a t h / c l i e n t / ” ∗ ∗ 即 可 。 修 改 后 的