前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JSP简单入门(2)

JSP简单入门(2)

作者头像
Java帮帮
发布2018-03-16 17:44:21
1.6K0
发布2018-03-16 17:44:21
举报
六、行为元素(JSP标签,简述)

JSP提供了一种称之为Action的元素,在JSP页面中使用Action元素可以完成各种通用的JSP页面功能。Action元素采用XML元素的语法格式,所以,干脆将Action元素称之为JSP标签。

1、<jsp:include>标签

<jsp:include>标签用于把另外一个资源的输出内容插入进当前JSP页面的输出内容之中,这种在JSP页面执行时的引入方式称之为动态引入。简单理解是:翻译当前JSP页面时,遇到这条语句,调用一个include方法,把引入文件包含进来,并不会把引入的文件翻译后的Servlet代码包含在当前JSP页面翻译的Servlet中。其语法如下:

<code class="hljs erb" style=""><span class="xml" style=""><span class="hljs-tag" style=""><span class="xml" style=""><span class="hljs-tag" style=""><</span></span><span class="hljs-name" style=""><span class="xml" style=""><span class="hljs-tag" style=""><span class="hljs-name" style="">jsp:include</span></span></span></span><span class="xml" style=""><span class="hljs-tag" style=""> </span></span><span class="hljs-attr" style=""><span class="xml" style=""><span class="hljs-tag" style=""><span class="hljs-attr" style="">page</span></span></span></span><span class="xml" style=""><span class="hljs-tag" style="">=</span></span><span class="hljs-string" style=""><span class="xml" style=""><span class="hljs-tag" style=""><span class="hljs-string" style="">"relativeURL | <%=</span></span></span></span></span></span><span class="ruby" style="">表达式</span><span class="xml" style=""><span class="hljs-tag" style=""><span class="hljs-string" style=""><span class="xml" style=""><span class="hljs-tag" style=""><span class="hljs-string" style="">%>"</span></span></span></span><span class="xml" style=""><span class="hljs-tag" style=""> </span></span><span class="hljs-attr" style=""><span class="xml" style=""><span class="hljs-tag" style=""><span class="hljs-attr" style="">flush</span></span></span></span><span class="xml" style=""><span class="hljs-tag" style="">=</span></span><span class="hljs-string" style=""><span class="xml" style=""><span class="hljs-tag" style=""><span class="hljs-string" style="">"true | false"</span></span></span></span><span class="xml" style=""><span class="hljs-tag" style=""> /></span></span></span></span></code>  

其中,page属性用于指定被引入资源的相对路径,也可以通过执行一个表达式来获得,flush属性指定在插入其他资源的输出内容时,是否先将当前JSP页面已输出的内容刷新到客户端,其默认值是false,表示先不刷新已输出的内容。

<jsp:include>标签与include指令的比较:

<jsp:include>标签的作用类似RequestDispatcher.include方法,被引入页面不能改变响应状态码,也不能设置响应头。include指令没有这方面限制。

<jsp:include>标签的执行效率低于include指令,但灵活性要好很多。

<jsp:include>标签对JSP引擎翻译JSP页面的过程没有影响,例如,引入页面的page指令不影响被引入页面的page指令。include指令则对JSP引擎翻译JSP页面的过程起作用。

详细:http://www.jb51.net/article/47606.htm

注意:<jsp:include>标签的page属性的设置值必须使用相对路径,如果以“/”开头,表示相对于当前Web应用程序的根目录,否则表示相对于当前页面的访问路径(不是相对于文件的硬盘路径)。

<jsp:include>标签的特性

included.jsp

<code class="hljs erb" style=""><span class="xml" style=""><span class="hljs-tag" style=""><span class="xml" style=""><span class="hljs-tag" style=""><</span></span><span class="hljs-name" style=""><span class="xml" style=""><span class="hljs-tag" style=""><span class="hljs-name" style="">%</span></span></span></span></span></span><span class="ruby" style=""><span class="ruby" style="">@ page contentType=</span><span class="hljs-string" style=""><span class="ruby" style=""><span class="hljs-string" style="">"text/html;charset=GB2312"</span></span></span></span><span class="xml" style=""><span class="hljs-tag" style=""><span class="xml" style=""><span class="hljs-tag" style="">%></span></span></span><span class="xml" style="">  
</span><span class="hljs-tag" style=""><span class="xml" style=""><span class="hljs-tag" style=""><</span></span><span class="hljs-name" style=""><span class="xml" style=""><span class="hljs-tag" style=""><span class="hljs-name" style="">%</span></span></span></span></span></span><span class="ruby" style=""><span class="ruby" style="">Thread.sleep(</span><span class="hljs-number" style=""><span class="ruby" style=""><span class="hljs-number" style="">5000</span></span></span><span class="ruby" style="">);</span></span><span class="xml" style=""><span class="hljs-tag" style=""><span class="xml" style=""><span class="hljs-tag" style="">%></span></span></span><span class="xml" style="">  
included.jsp内的中文</span><span class="hljs-tag" style=""><span class="xml" style=""><span class="hljs-tag" style=""><</span></span><span class="hljs-name" style=""><span class="xml" style=""><span class="hljs-tag" style=""><span class="hljs-name" style="">br</span></span></span></span><span class="xml" style=""><span class="hljs-tag" style="">></span></span></span></span></code>  

dynamicInclude.jsp

<code class="hljs erb" style=""><span class="xml" style=""><span class="hljs-tag" style=""><span class="xml" style=""><span class="hljs-tag" style=""><</span></span><span class="hljs-name" style=""><span class="xml" style=""><span class="hljs-tag" style=""><span class="hljs-name" style="">%</span></span></span></span></span></span><span class="ruby" style=""><span class="ruby" style="">@ page contentType=</span><span class="hljs-string" style=""><span class="ruby" style=""><span class="hljs-string" style="">"text/html;charset=GB2312"</span></span></span></span><span class="xml" style=""><span class="hljs-tag" style=""><span class="xml" style=""><span class="hljs-tag" style="">%></span></span></span><span class="xml" style="">  
dynamicInclude.jsp内的中文</span><span class="hljs-tag" style=""><span class="xml" style=""><span class="hljs-tag" style=""><</span></span><span class="hljs-name" style=""><span class="xml" style=""><span class="hljs-tag" style=""><span class="hljs-name" style="">br</span></span></span></span><span class="xml" style=""><span class="hljs-tag" style="">></span></span></span><span class="xml" style="">  
</span><span class="hljs-tag" style=""><span class="xml" style=""><span class="hljs-tag" style=""><</span></span><span class="hljs-name" style=""><span class="xml" style=""><span class="hljs-tag" style=""><span class="hljs-name" style="">jsp:include</span></span></span></span><span class="xml" style=""><span class="hljs-tag" style=""> </span></span><span class="hljs-attr" style=""><span class="xml" style=""><span class="hljs-tag" style=""><span class="hljs-attr" style="">page</span></span></span></span><span class="xml" style=""><span class="hljs-tag" style="">=</span></span><span class="hljs-string" style=""><span class="xml" style=""><span class="hljs-tag" style=""><span class="hljs-string" style="">"included.jsp"</span></span></span></span><span class="xml" style=""><span class="hljs-tag" style=""> </span></span><span class="hljs-attr" style=""><span class="xml" style=""><span class="hljs-tag" style=""><span class="hljs-attr" style="">flush</span></span></span></span><span class="xml" style=""><span class="hljs-tag" style="">=</span></span><span class="hljs-string" style=""><span class="xml" style=""><span class="hljs-tag" style=""><span class="hljs-string" style="">"true"</span></span></span></span><span class="xml" style=""><span class="hljs-tag" style=""> /></span></span></span></span></code>  

用浏览器访问dynamicInclude.jsp页面,浏览器首先显示出dynamicInclude.jsp页面输出的内容,等待5秒后,才又显示出included.jsp页面的输出内容。

修改dynamicInclude.jsp文件,去掉flush属性设置,用浏览器重新访问dynamicInclude.jsp页面,浏览器等待5秒以后同时显示出了dynamicInclude.jsp和included.jsp页面的内容。

总结:

RequestDispatcher.include方法:调用该方法前后,写入到缓冲区的内容可以被输出到客户端。

RequestDispatcher.forward方法(不能有内容已经被输出到客户端):调用该方法前,写入到缓冲区的内容被清空,调用该方法后,写入操作被忽略。所以在调用者程序中写入到缓冲区的内容都不会被输出到客户端。

Request.sendRedirect方法(不能有内容已经被输出到客户端):在调用该方法前后写入到缓冲区的内容都会被清空。

2、<jsp:forward>标签

<jsp:forward>标签用于把请求转发给另外一个资源,其语法如下:

<code class="hljs erb" style=""><span class="xml" style=""><span class="hljs-tag" style=""><span class="xml" style=""><span class="hljs-tag" style=""><</span></span><span class="hljs-name" style=""><span class="xml" style=""><span class="hljs-tag" style=""><span class="hljs-name" style="">jsp:forward</span></span></span></span><span class="xml" style=""><span class="hljs-tag" style=""> </span></span><span class="hljs-attr" style=""><span class="xml" style=""><span class="hljs-tag" style=""><span class="hljs-attr" style="">page</span></span></span></span><span class="xml" style=""><span class="hljs-tag" style="">=</span></span><span class="hljs-string" style=""><span class="xml" style=""><span class="hljs-tag" style=""><span class="hljs-string" style="">"relativeURL | <%=</span></span></span></span></span></span><span class="ruby" style="">表达式</span><span class="xml" style=""><span class="hljs-tag" style=""><span class="hljs-string" style=""><span class="xml" style=""><span class="hljs-tag" style=""><span class="hljs-string" style="">%>"</span></span></span></span><span class="xml" style=""><span class="hljs-tag" style=""> /></span></span></span></span></code>  

其中,page属性用于指定请求转发到的资源的相对路径,它也可以通过执行一个表达式来获得。

<jsp:forward>标签实际上被翻译成了调用PageContext.forward方法的语句,并在调用forward方法后使用return语句结束了service方法的执行流程,从而不再执行<jsp:forward>标签后面的语句。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-12-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java帮帮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档