代码改变世界

jsp05 指令与动作

2017-10-14 10:26  晨曦曙光  阅读(363)  评论(0编辑  收藏  举报

 

 

JSP7个动作指令如下 :

 

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

 

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

 

jsp:include: 用于动态引入一个 JSP 页面。

 

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

 

jsp:useBean: 使用 JavaBean。

 

jsp:setProperty: 修改 JavaBean 实例的属性值。

 

jsp:getProperty: 获取 JavaBean 实例的属性值。

1.include 指令

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

语法:<%@ include file="index.jsp" %>

 include可以在JSP页面转换成Servlet之前,将JSP代码插入其中。它的主要优点是功能强大,所包含的代码可以含有总体上影响主页面的JSP构造,比如属性、方法的定义和文档类型的设定。它的缺点是难于维护只要被包含的页面发生更改,就得更改主页面,这是因为主页面不会自动地查看被包含的页面是否发生更改。

 2.include 动作

jsp:include动作是在主页面被请求时,将次级页面的输出包含进来。尽管被包含的页面的输出中不能含有JSP,但这些页面可以是其他资源所产生的 结果。服务器按照正常的方式对指向被包含资源的URL进行解释,因而这个URL可以是Servlet或JSP页面。服务器以通常的方式运行被包含的页面, 将产生的输出放到主页面中,这种方式与RequestDispatcher类的include方法一致。

语法: <jsp:include page="sample.jsp" flush="true"> <jsp:param name="name" value="value"/> </jsp:include>

   其中参数设置可以没有,如果没有参数设置,则必须采用<jsp:include page="sample.jsp" flush="true"/>形式

 

3.include 指令与include  动作比较

include 的指令把包含页面的内容转换为一个Servlet文件。

include  的动作:主页面和包含页面是分开的单独Servlet文件,只是在主页面中增加了一条链接,当要用到包含页面是才会取出包含页面中的内容。

4.include 的代码实例:

4.1 include 指令代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>include_command 指令</h1>

<%@ include file = "index.jsp" %>
</body>
</html>
View Code

4.2 include 动作代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>include_action 动作</h1>
<jsp:include page="index.jsp" flush="true"></jsp:include>
</body>
</html>
View Code

5. 使用include动作还是include指令?

  使用include指令,如果被包含的文件发生改变,那么,用到它的所有Jsp页面都需要更新。

  仅当include动作不能满足要求时,我们才应该使用include指令。

  有 些开发人员认为include指令生成的代码执行起来比使用include动作的代码更快。尽管原则上由可能的确如此,但性能上的差异很小,以致难以测 量,同时,include动作在维护上的优势十分巨大,当两种方法都可以使用时,include动作几乎肯定是首选的方法

  对于文件包含,应该尽可能地使用include动作。仅在所包含的文件中定义了主页面要用到的字段或方法,或所包含的文件设置了主页面的响应报头时,才应该使用include指令。

既然include指令产生难以维护的代码,为什么人们还要使用它呢?
  因为include指令更为强大。include指令允许所包含的文件中含有影响主页面的Jsp代码,比如响应报头的设置和字段、方法的定义。

6.forward 动作

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

语法:<jsp:forward page = "index.jsp" />

等同于:request 转发

request.getRequestDispatcher("/index.jsp").forward(request,response);

 6.1forward 动作代码的实例:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>forward_action.jsp</title>
</head>
<body>


 <% request.setCharacterEncoding("utf-8");  %> 
 
 
 <%

  request.setAttribute("name", "王五");

request.getRequestDispatcher("index.jsp").forward(request, response);
%>
 
 
 
<h1>forward_action 动作</h1>
 <jsp:forward page="index.jsp">
 <jsp:param  name="name" value="李四"/>
 </jsp:forward>  




</body>
</html>
View Code

 7.param 动作

param指令的语法格式如下:

<jsp:param  name="paramName" value="paramValue">

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

jsp:include

jsp:forward

jsp:plugin

 

8、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”。

 

 

9、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一起使用。

 

10、SetProperty指令

 

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

 

语法:

<jsp:setProperty name="beanName" prop_expr />

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

property="*" | property="propertyName" | property="propertyName" param="parameterName" | property="propertyName" value="propertyValue"

 

11、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插件。