JSP动作指令

来源:互联网 发布:sql注入漏洞 编辑:程序博客网 时间:2024/06/05 21:03

总结:

1.JSP指令有page指令和include指令两种。page指令定义JSP页面的全局属性;include动作指令与include指令不同,后者是静态包含,用来在指令处静态插入一个文件,将包含文件与被包含文件组合形成一个文件;而前者是动态包含,原理不同,使用时也会有差别。include动作指令用来包含JSP页面中动态包含一个文件,包含的文件可以是动态文件也可以是静态文件。

jsp中两种包含文件的区别:

相同点:两者逗能包含一个页面
不同点:
区别1:
<jsp:include page="b.jsp" />(先执行,后包含)
此标签表示法:能动态区别加进来的是动态页面还是静态页面
对于静态页面则直接将资源包含(仅取其文本)。
对于动态页面则先处理各自资源,之后将处理过的结果包含在一起。

<%@ include file="b.jsp">
此指令表示:静态地包含页面,不管其内容如何,不过是静态页面还是动态页面都首先将页面的内容先加进来。
然后一起处理,再将所有内容发给客户端。
实例挑战:
有b.jsp页面
<%int i = 10 ;%>
<%=i%>
主界面a.jsp也有
<%int i = 100 ;%>        <%=i%>
如果是加载
<%@ include file="b.jsp">,则是先包含后执行,就会发现报错,i被重新定义,
但如果是加载
<jsp:include page="b.jsp" />则是先执行结果,然后将结果包括到主页面。不会报错。
区别2:
<jsp:include page="b.jsp" />可以分开写成:
<jsp:include page="b.jsp" >
<jsp:param name="参数名" value="参数值"/>
</jsp:include>
这样就可以传递参数。

2.forward动作指令用来重定向网页;
3.param动作指令配合include动作指令和forward动作指令使用,用来设置这两个动作指令的参数值。
4.plugin动作指令用来在JSP中加载JAVA APPLET小程序;
5.useBean在JSP中创建并使用一个JavaBean;
6.setProperty和getProperty分别用来设置和获得bean的属性值。

在JSP中的动作指令包括:IncludeForwardUseBeanGetPropertySetPropertyPlugin

一、Include指令

<jsp:include>标签表示包含一个静态的或者动态的文件。

语法:
            <jsp:include page="path" flush="true" />
            or
            <jsp:include page="path" flush="true">
                  <jsp:param name="paramName" value="paramValue" />
            </jsp:include>

注:
1、page="path" 为相对路径,或者代表相对路径的表达式。
2、flush="true" 必须使用flush为true,它默认值是false。
3、<jsp:param>子句能让你传递一个或多个参数给动态文件,也可在一个页面中使用多个<jsp:param>来传递多个参数给动态文件。

二、Forward指令

<jsp:forward>标签表示重定向一个静态html/jsp的文件,或者是一个程序段。

语法:
            <jsp:forward page="path"} />
            or
            <jsp:forward page="path"} >
                  <jsp:param name="paramName" value="paramValue" />……
            </jsp:forward>

注:
1、page="path" 为一个表达式,或者一个字符串。
2、<jsp:param> name 指定参数名,value指定参数值。参数被发送到一个动态文件,参数可以是一个或多个值,而这个文件却必须是动态文件。要传递多个参数,则可以在一个JSP文件中使用多个<jsp:param>将多个参数发送到一个动态文件中。

三、UseBean指令

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

语法:
<jsp:useBean id="name" scope="page | request | session | application" typeSpec />
其中typeSpec有以下几种可能的情况:
class="className" | class="className" type="typeName" | beanName="beanName" type="typeName" | type="typeName" |

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

四、GetProperty指令

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

语法:
<jsp:getProperty name="name" property="propertyName" />

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

五、SetProperty指令

<jsp:setProperty>标签表示用来设置Bean中的属性值。

语法:
<jsp:setProperty name="beanName" prop_expr />
其中prop_expr有以下几种可能的情形:
property="*" | property="propertyName" | property="propertyName" param="parameterName" | property="propertyName" value="propertyValue"

六、Plugin指令

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

语法:
<jsp:plugin 
      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" ] > 
      [ <jsp:params> 
         [ <jsp:param name="parameterName" value="{parameterValue | <%= expression %>}" /> ]+ 
      </jsp:params> ] 
      [ <jsp:fallback> text message for user </jsp:fallback> ]
</jsp:plugin>

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

 

注:
使用 jsp:setProperty 来为一个Bean的属性赋值;可以使用两种方式来实现。
1、在jsp:useBean后使用jsp:setProperty:
      <jsp:useBean id="myUser" … />
      …
      <jsp:setProperty name="user" property="user" … />
在这种方式中,jsp:setProperty将被执行。
2、jsp:setProperty出现在jsp:useBean标签内:
      <jsp:useBean id="myUser" … >
      …
      <jsp:setProperty name="user" property="user" … />
      </jsp:useBean>
在这种方式中,jsp:setProperty只会在新的对象被实例化时才将被执行。

* 在<jsp:setProperty>中的name值应当和<jsp:useBean>中的id值相同。