JSP常见编译及动作指令

1、forward

forward是服务器端去访问目标资源,然后将获取的目标资源返回给客户端(浏览器),客户端不知道目标资源的地址,所以客户端的地址栏不会发生变化。forward要访问的资源必须是同一服务器应用程序的资源,是同一次request请求访问,原服务器页面和目标资源页面可以共享request请求中的数据。jsp:forward只有一个page属性用法如下:

<jsp:forward page="相对 URL 地址" />
常见应用场景:用户登录的时候,根据用户的角色名转发至不同的模块

和forward有个类似功能的东西是redirect,redirect是服务器端根据逻辑发送包含状态码和新url的response包,客户端根据状态码重新向新的url发送request请求,客户端的地址栏会显示新的url地址。redirect要访问的资源可以是服务器应用程序的内部资源,也可以是服务器下不同应用程序的资源,甚至可以使不同站点的资源。因为redirect相当于是两次独立的request和response,因此Redirect没有共享request数据资源的说法。redirect用法是response.sendRedirect("要跳转的路径");  forward也有类似的用法request.getrequestDispatcher("跳转的路径").forward(响应对象,请求对象);

其中request是jsp内置对象。


2、page

jsp页面通常会被转化为一个Servlet,page 指令允许通过类的导入、servlet 超类的定制、内容类型的设置、以及诸如此类的事物来控制servlet的结构,page指令可以放在文档中的任何地方。page 指令可以定义下面这些大小写敏感的属性(大致按照使用的频率列出):import、contentType、pageEncoding、session、isELIgnored(只限 JSP 2.0)、buffer、autoFlush、info、errorPage、isErrorPage、isThreadSafe、language 和 extends。这些属性的用法可以参见:http://blog.csdn.net/microfhu/article/details/6944368


3、include

jsp中有两个include标签,一个是编译指令,一个是动作指令。

编译指令的用法是:<%@include file="resourcefile"%>

动作指令的用法是:<jsp:include page="resourcefile" flush="true" />(其中flush定义在包含资源前是否刷新缓存区)

使用include编译指令,可以将一个外部文件嵌入到当前JSP文件中,同时解析这个页面中的JSP语句。include既可以包含静态的文本,也可以包含动态的JSP页面。静态的编译指令include,是将被包含的页面加入进来,生成一个完整的页面。静态的include语句不会检查所包含JSP页面的变化。

使用jsp:include动作指令是在主页面被请求时,将次级页面的输出包含进来。尽管被包含的页面的输出中不能含有jsp,但这些页面可以是其他资源所产生的结果。服务器按照正常的方式对jsp:include包含的URL所对应的资源进行解释,因而这个URL可以是Servlet或JSP页面。服务器以通常的方式运行被包含的页面,将产生的输出放到主页面中,这种方式与RequestDispatcher类的include方法一致。它的优点是在被包含的页面发生更改时,无须对主页面做出修改。它的缺点是所包含的是次级页面的输出,而非次级页面的实际代码,所以在被包含的页面中不能使用任何有可能在整体上影响主页面的JSP构造。

include编译指令和include动作指令都可以满足需求的情况下,优先使用include动作指令。因为include编译指令是硬插入,直接将外部文件嵌入到当前页面中,不检查外部文件是否有错,然后将被嵌入的页面一起进行编译,转化为Servlet再转成.class文件,整个过程只有一次编译。include动作指令是将外部文件执行后(编译、转为Servlet、.class文件),将结果插入到当前页面中然后继续执行当前页面后面的操作,相当于有两次编译过程。两种方式在可维护性和执行速度上各有优势,但是通常我们会优先考虑include动作指令。

可参见:http://qingfeng825.iteye.com/blog/231873


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值