JSP的7个动作指令

动作指定于编译指令不同,编译指令是通知Servlet引擎的处理消息,而动作指令只是运作时的动作。编译指令在将JSP编译成Servlet时起作用;而处理指令通常可替换成JSP脚本,它只是JSP脚本的变准写法。

JSP动作指令主要有如下7个

1. jsp:forward  执行页面转向,将请求的处理转发到下一个页面。

2. jsp:param  用于传递参数,必须与其他支持参数的标签一起使用。

3. jsp:include  用于动态引入一个Jsp页面。

4. jsp:plugin  用于下载JavaBean或Applet到客户端执行。

5. jsp:userBean 创建一个JavaBean的实例。

6. jsp:setProperty  设置JavaBean实例的属性。

7. jsp:getProperty 输出JavaBean实例的属性值。

一、forward指令用于将页面响应转发到另外的页面。既可以转发到静态的HTML页面,也可以转发到动态页的JSP页面,或者转发到容器中的Servlet.

对于JSP1.0,使用如下语法:

  
对于JSP1.1以上,可使用如下语法:

  
    {}  
  
第二种语法用于在转发时增加额外的请求参数。增加的请求参数的值可以通过HttpServletRequest类的getParameter方法获取。

举例:

页面jsp-forward.jsp将所有客户端请求转发到forward-result.jsp页面。转发时,增加一个请求参数:参数名为age,参数值为NULL。页面jsp-forward.jsp的源代码如下:

<%@ page contentType="text/html; charset=gb2312" language="java"%>  
  
  
  
  
  
  
  
  
在forward-result.jsp页面中,使用request内置对象来获取增加的请求参数值。forward-result.jsp的代码如下:

<%@ page contentType="text/html; charset=gb2312" language="java" errorPage="ErrorPage.jsp"%>  
  
  
  
<%=request.getParameter("username")%>  
  
  

二、include指令是一个动态include指令,也用于包含某个页面,它不会导入被inclue页面的编译指令,仅仅将被导入页面的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方法来插入目标页面的内容,而不是将目标页面完全融入本页面中。

归纳起来,静态导入和动态导入有如下两点区别:  

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

   静态导入时被导入页面的编译指令会起作用;而动态导入时被导入页面的编译指令则失去作用,只是插入被导入页面的body内容。  

除此之外,执行include动态指令时,还可增加额外的请求参数。  

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

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

语法:

其中typeSpec有以下几种可能的情况

class="className" | class="className" type="typeName" | beanName="beanName" type="typeName" | type="typeName" |
其中id属性是JavaBean的实例名,class属性确定JavaBean的实体类。scope属性用于指定JavaBean实例的作用范围,该范围有一下4个值:

1.page 该JavaBean实例仅在该页面有效。

2.request 该JavaBean实例在本次请求有效。

3.session 该JavaBean实例在本次session有效。

4.application 该JavaBean实例在本应用内一直有效。

四、setProperty表示用来设置Bean中的属性值

语法:

其中prop_expr有以下几种可能的情形

property="*" | property="propertyName" | property="propertyName" param="parameterName" | property="propertyName" value="propertyValue"
其中,name属性确定需要确定JavaBean的实例名;property属性确定需要设置的属性名;value属性则确定需要设置的属性值。

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

语法:

注:

1、在使用之前,必须用来创建它。

2、不能使用来检索一个已经被索引了的属性。

3、能够和JavaBeans组件一起使用,但是不能与Enterprise Java Bean一起使用。

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

语法:



      [ 

         [  ]+

       ]

      [  text message for user  ]

注:

元素用于在浏览器中播放或显示一个对象(典型的就是applet和Bean),而这种显示需要在浏览器的java插件。

当Jsp文件被编译,送往浏览器时,元素将会根据浏览器的版本替换成或者元素。注意,用于HTML 4.0 ,用于HTML 3.2。

一般来说,元素会指定对象是Applet还是Bean,同样也会指定class的名字,还有位置,另外还会指定将从哪里下载这个Java插件。

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

sp:include

jsp:forward

jsp:plugin

 

param指令的语法格式如下:


你可能感兴趣的:(JSP+Servlet,jsp,servlet,脚本,javabean,java)