JSP相关技术详解八(Jsp基础语法-Jsp的七个动作指令)

动作指令与编译指令不间,编译指令是通知 Servlet 引擎的处理消息,而动作指令只是运行时的脚本动作。编译指令在将JSP 编译成 Servlet 时起作用:处理指令通常可替换成 Java脚本,是 JSP脚本的标准化写法。

JSP7 个 动作指令如下 :

jsp:forward: 执行页面转向,将请求的处理转发到下一个页面。
jsp:param: 用于传递参数,必须与其他支持参数曲标签一起使用。
jsp:include: 用于动态引入一个 JSP 页面。
jsp:p1ugin: 用于下载 JavaBean 或 Applet 到客户端执行。
jsp:useBean: 使用 JavaBean。
jsp:setProperty: 修改 JavaBean 实例的属性值。
jsp:getProperty: 获取 JavaBean 实例的属性值。

[color=red]forward指令[/color]
forward指令用于将页面响应转发给另外的页面。既可以转发给静态的HTML页面,也可以转发到动态的JSP页面,或者转发到容器中的Servlet。

JSP的forward指令的格式如下。
对于JSP 1.0,使用如下语法:


对于JSP 1.1以上,可使用如下语法:

{}


第二种语法用于在转发时增加额外的请求参数。增加的请求参数的值可以通过HttpServletRequest类的getParameter()方法获取。
下面示例页面使用了forward动作指令来转发用户请求。





将客户端请求转发到forward-result.jsp页面,转发请求时增加了一个请求参数:参数名为age,参数值为29。
在forward-result.jsp页面中,使用request内置对象(request内置对象是HttpServletRequest的实例)来获取增加的请求参数值。


<%=request.getParameter("age")%>

执行forward指令转发请求时,客户端的请求参数不会丢失。
执行forward指令转发请求时,用户请求的地址没有发生变化,但页面内容完全变为被forward目标页的内容。

[color=red]include指令 [/color]

include指令是一个动态include指令,也用于导入某个页面,它不会导入被include页面的编译指令,仅仅将被导入页面的body内容插入本页面。

下面是include动作指令的语法格式:

或者




flush属性用于指定输出缓存是否转移到被导入文件中。如果指定为true,则包含在被导入文件中;如果指定为false,则包含在原文件中。对于JSP 1.1旧版本,只能设置为false。
对于第二种语法格式,则可在被导入页面中加入额外的请求参数。
下面页面使用了动态导入语法来导入指定JSP页面。




上面页面中粗体字代码使用了动态导入语法来导入了scriptlet.jsp。表面上看,该页面的执行效果与使用静态include导入的页面并没有什么不同。但查看jsp-include.jsp页面生成Servlet的源代码,可以看到如下片段:
//使用页面输出流,生成HTML标签内容
out.write("\r\n");
out.write("\r\n");
out.write("\r\n");
out.write("jsp-include测试\r\n");
out.write("\r\n");
out.write("\r\n");
//动态导入,直接引入scriptlet.jsp页面
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response,
"scriptlet.jsp", out);
out.write("\r\n");
out.write("\r\n");
out.write("\r\n");
out.write("\r\n");
上面代码片段中粗体字代码显示了动态导入的关键:动态导入只是使用一个include方法来插入目标页面的内容,而不是将目标页面完全融入本页面中。
[color=red]
归纳起来,静态导入和动态导入有如下两点区别: [/color]

 静态导入是将被导入页面的代码完全融入,两个页面融合成一个整体Servlet;而动态导入则在Servlet中使用include方法来引入被导入页面的内容。

 静态导入时被导入页面的编译指令会起作用;而动态导入时被导入页面的编译指令则失去作用,只是插入被导入页面的body内容。
除此之外,执行include动态指令时,还可增加额外的请求参数。

在上面的JSP页面中的粗体字代码同样使用jsp:include指令导入页面,而且在jsp:include指令中还使用param指令传入参数,该参数可以在forward-result.jsp页面中使用request对象获取。

[color=red]UseBean指令[/color]

标签表示用来在JSP页面中创建一个BEAN实例并指定它的名字以及作用范围。

语法:

其中typeSpec有以下几种可能的情况:
class="className" | class="className" type="typeName" | beanName="beanName" type="typeName" | type="typeName" |

注:
你必须使用class或type,而不能同时使用class和beanName。beanName表示Bean的名字,其形式为“a.b.c”。


[color=red]GetProperty指令[/color]

标签表示获取BEAN的属性的值并将之转化为一个字符串,然后将其插入到输出的页面中。

语法:


注:
1、在使用之前,必须用来创建它。
2、不能使用来检索一个已经被索引了的属性。
3、能够和JavaBeans组件一起使用,但是不能与Enterprise Java Bean一起使用。


[color=red]SetProperty指令[/color]

标签表示用来设置Bean中的属性值。

语法:

其中prop_expr有以下几种可能的情形:
property="*" | property="propertyName" | property="propertyName" param="parameterName" | property="propertyName" value="propertyValue"

[color=red]Plugin指令[/color]

标签表示执行一个applet或Bean,有可能的话还要下载一个Java插件用于执行它。

语法:
type="bean | applet"
code="classFileName"
codebase="classFileDirectoryName"
[ name="instanceName" ]
[ archive="URIToArchive, ..." ]
[ align="bottom | top | middle | left | right" ]
[ height="displayPixels" ]
[ width="displayPixels" ]
[ hspace="leftRightPixels" ]
[ vspace="topBottomPixels" ]
[ jreversion="JREVersionNumber | 1.1" ]
[ nspluginurl="URLToPlugin" ]
[ iepluginurl="URLToPlugin" ] >
[
[ ]+
]
[ text message for user ]


注:
元素用于在浏览器中播放或显示一个对象(典型的就是applet和Bean),而这种显示需要在浏览器的java插件。
当Jsp文件被编译,送往浏览器时,元素将会根据浏览器的版本替换成或者元素。注意,用于HTML 4.0 ,用于HTML 3.2。
一般来说,元素会指定对象是Applet还是Bean,同样也会指定class的名字,还有位置,另外还会指定将从哪里下载这个Java插件。


[color=red]param指令[/color]


param指令用于设置参数值,这个指令本身不能单独使用,单独的param没有实际意义,param指令可与一下三个指令结合使用:

jsp:include
jsp:forward
jsp:plugin

param指令的语法格式如下:

你可能感兴趣的:(JSP相关技术详解八(Jsp基础语法-Jsp的七个动作指令))