编译指令Page和include

基本的动作指令

内置工具

jsp获取指定key的值Java EE基本之JSP二 Vue.js

一、两个编译指令

Page指令顾名思义,操作当前页面的。
首先我们要知道利用编译指令的格式:<%@ page 属性名=\"大众属性值\"大众%>,关于page的属性有哪些,如下图所示:

这里写图片描述

大略解释一下,language指定的是本页面利用的脚本措辞,contentType指定了本页面的类型,有text/html,img/png等。
import可以引入指定的包,默认情形下已经为我们引入了java.lang.,javax.servlet.jsp.,javax.servlet.http.。
所有在jsp页面引入的包,都会对应到servlet实例中。
session指定当前页面是否支持会话(后面详细先容),errorPage指定了当前页面如果涌现非常调用的页面,如果没有为当前页面指定errorPage页面,就会直接抛出非常信息个浏览器(这是我们所不愿意看到的),isErrorPage指定了当前页面是否是缺点页面,如果是,当别的页面出错的时候就会跳转到此页面,默认为false。
这么多的属性,我们只要轻微有点印象,实际用的时候再过来参考即可。

我们说jsp页面中是不须要处理任何非常的,乃至是检讨类非常都是不须要处理的。
我们来看看为什么。
从servlet类的源代码中找缘故原由,由于这是实质。

public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)

我们就看看这个用来响运用户要求的方法,_jspservice(),不知道大家看到没有,全体输出html页面信息的代码块都被try....catch了,而看到catch捕捉的非常时非常机制的源头Throwable ,所有的非常都是继续自它的。
而我们看到捕捉到非常之后所进行的操作是,如果当前工具不为空,就调用该工具的处理方法,处理方法便是判断当前页面是否制订的errorPage页面,如果没有抛非常给浏览器,如果有,跳向缺点页面。
以是无论你jsp页面会抛出什么非常,在被编译到servlet实例中,已经做了处理了,这便是为什么jsp页面不须要处理非常的缘故原由。

第二个指令是include指令,这是一个用来包含指定页面的内容的编译指令,<%@include file=\公众文件路径\"大众%>,我们来看一个例子:

<html>

运行结果的图片就不贴了,从servlet实例中可以明显看出,这统统都做了什么。

out.write(\公众\n\"大众);

不知道大家看出来了没有,一个页面里竟然包含了两个html标签和title和body标签,可见,这个编译指令便是在编译的时候将要引入的页面中的全部信息直接插入在指定位置上。

二、基本的事情指令

第一个动作指令是,forward指令,这个指令用来向其余的一个页面进行跳转。
用法如下:

<html>

从运行结果上看,至少可以看出两点。
第一,地址栏上的地址依然是index页面,也便是说页面并没有跳走,第二,我们看原来index页面的所有信息都被更换成convert页面的内容。
由此我们可以推断出,所谓的跳转指令,实在并没有完成跳转的操作,只是将目标页面的所有信息全部更换当前页面,这和我们之前说过的一个编译指令很是类似,他是include,我们该当可以记得,include编译指令是将目标页面中所有内容更换到当前页面的某个位置,也便是更换了当前页面中的部分内容。
而可以将跳转指令forward理解为更换了当前页面的所有内容。

out.write(\公众\n\"大众);

从servlet源代码中,我们可以看到,index中前面的代码正常加载,当加载到我们的跳转指令的时候,它实际上构建以个URL:convert.jsp?key=v,默默的要求了此页面然后将返回的结果显示在当前的页面中,实在便是去拿来目标页面中的内容覆盖当前页面,对付index页面的一些要求参数,不会丢失。
(关于要求参数的吸收,下文先容)

第二个动作指令,include指令,用来动态引入外部文件到当前页面,和我们的include编译指令相似,但是也有着显著的差异。
先看怎么利用:

<html>

out.write(\"大众\n\"大众);

我们可以看到,动作指令include实际上不想编译指令include将目标页面的所有信息全部插入到指定位置,动态include指令调用的是一个include方法,动态的将目标页面的body部分的内容拿过来,并且还许可传入参数。
可能结果和编译指令include一样,但是内部的实现确是截然不同的,各自有各自的适用场所。

第三个动作指令,param,这是我们之前一贯在利用的指令,只是一贯没有解释。
param指令一样平常都不会单独利用,常日都是结合jsp:include,jsp:forward等利用。
利用的格式如下:

<jsp:include page=\"大众convert.jsp\"大众>

name指定参数名,value指定参数数值。
至于怎么获取,我们在先容request工具的时候加以解释。
request工具便是一个专门用于处理用户要求的工具,以是所有的参数通报都是可以利用这个工具进行吸收的。
还有一些动作指令牵扯到javabean知识,暂时不说。

三、JSP内置工具

我们打开任意的servlet源代码,可以看到在用于响运用户要求的方法_jspservice();的头部有一些成员变量的定义和初始化。
看:

public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response){

接下来我们会详细先容这些工具的含义及其详细的操作。
由于篇幅限定,未完待续。

著作权归Walker_YAM所有,转载请联系“e安在线”