注:与指令元素不同,动作元素在请求处理阶段起作用
1. <jsp:param>
jsp:param 操作被用来以“名-值”对形式为其他标签提供附加信息。它与jsp:include、jsp:forward和jsp:plugin一起使用。
它的使用方式如下:
<jsp:param name="paramName" value="paramValue" />
其中name为属性相关联的关键字,value为属性的值
2.<jsp:include>
jsp:include操作允许在请求时间内在现成的JSP页面里面包含静态或者动态资源。被包含的对象只有对JSP write对象的
访问权,并且它不能设置头或者Cookie。如果页面输出是缓冲的,那么缓冲的刷新要优于包含的刷新。此指令运行效率
比<%@ page include %>指令的效率低,但可以动态增加内容
格式如下:
<jsp:include page="filename" value="paramValue">
<jsp:param name="paramName" value="paramValue"/>
</jsp:include>
注:该标签允许你包含动态文件和静态文件,但是这两种包含文件的结果是不同的。如果文件仅仅是静态文件,那么这种包含
仅仅是把包含文件的内容加到JSP文件中去,这个被包含文件不会被JSP编译器执行。相反地,如果这个被包含文件是动态的文件,
那么这个被包含文件将会被JSP编译器执行
3. <jsp:forward>
jsp:forward操作允许将请求转发到另一个JSP,Servlet或者静态资源文件。将请求被转到的资源必须位于同jsp发送请求相同的上下文环境之中。每当遇到此操作时,就停止执行当前页面的JSP,转而执行被转发的资源。
格式如下:
<jsp:forward page="/login.jsp">
<jsp:param name="userID" value="hellking"/>
<jsp:param name="password" value="xxxx"/>
</jsp:forward>
在了解下面几个动作指令之间,可以参照这篇博客对JavaBean做简单了解:
4.<jsp:setProperty>
此操作与useBean协作,用来设置Bean的简单属性和索引属性。<jsp:setProperty>标签使用Bean给定的setXXX()方法,
在Bean中设置一个或者多个属性值。利用<jsp:setProperty>设置属性值得多种方法。
该指令的实现方式如下:
<jsp:setProperty name="beanName" propertyDetails"/>
其中,propertyDatails可以是下面几个中的一个:
property="*"
property="propertyName" param="parameterName" 2
property="propertyName"
property="propertyName" value="propertyValue"
注:
(1)如果使用了property="*" 那么Bean的属性没有必要按HTML表单中的顺序进行
(2)property指定Bean的属性名,而且Bean属性和request参数的名字相同,否则使用另一种语法(即上面的2)
指定param。
(3)不能在一个<jsp:setProperty>中同时使用param和value,因为二者都是设置Bean属性的值,只是方式不同而已
5.<jsp:getProperty>:
jsp:getProperty 操作是对jsp:setProperty操作的补充,它用来访问一个Bean的属性。它访问的属性值将它转换为
一个String类型,然后发送到输出流中。如果属性是一个对象,将调用toString()方法。
<jsp:setProperty name="beanName" property="propertyName"/>
例如:
<jsp:useBean id="usersession" scope="session" class="com.user.UserSession">
<jsp:getProperty name="usersession" property="name"/>
<jsp:getProperty name="usersession" peoperty="password"/>
6.<jsp:useBean>
该标签用来在JSP页面中创建一个Bean实例,并制定它的名字及作用范围。它们保证对象在标签指定的范围内可以
使用。定义的语法如下:
<jsp:useBean id="id" scope="page|request|session|application typeSpec/>
<jsp:useBean id="person" class="gac1.javabean.study.Person" scope="page"/>
其中typeSpec的四种表现形式如下:
class="className"
class="className" type="typeName"
beanName="beanName" type="typeName"
type="typeName"
scope="page|request|session|application"范围说明:
page: 能够在包含<jsp:useBean>标签的JSP文件及此文件中的所有静态包含文件中使用Bean,直到页面执行完毕向
客户端发回响应或转到另一个文件为止。超出这个范围Bean就失效。
request:在请求的范围内使用有效,可以使用request对象访问Bean,比如:request.getAttribute(name),其中name
是Bean实例化的名字
session:从创建Bean开始,就可以在session有效范围内使用Bean,这个Bean对于JSP来说是共享的;要注意的是在创建
Bean的JSP文件中的<%@page%>指令中必须指定session=True 否则会出现致命的错误 可以使用session对象访问Bean:
比如:session.getValue(name);其中name是Bean实例化的名字
application:同session一样,从创建Bean开始,就可以在任何使用相同application的JSP文件中使用Bean. application对象在应用服务器启动时就创建了,直到应用服务器关闭。这个Bean存在于application生存周期内,任何共享application的JSP文件都能使用同一Bean 可以使用applicaiton对象访问Bean,例如:application.getAttribute(name) 其中name是Bean实例化的名字
class=“classname”:
这是Bean的类路径和类名,这个class不能是抽象的,必须有一个公用的、没有参数的构造器
BeanName="beanname" type="typename":
使用instantiate方法从一个class钟实例化一个Bean,同时还可以指定Bean的类型
type="typename":
type可以是一个类本身,也可以是一个类的父类,或是一个类的接口。如果没有使用class和BeanName指定type,
Bean将不会被实例化
7.<jsp:plugin>
jsp:plugin用来产生用户端浏览器的特别标签(Object或者Embed),可以使用它来插入Applet或者JavaBean;当JSP文件被编译并把结果发送到浏览器时,<jsp:plugin>元素将会根据浏览器的版本替换成<object>或者<embed>元素;
注:<object>用于HTML4.0 <embed>用于HTML3.2 ; 一般来说,<jsp:plugin>元素会指定对象是Applet还是Bean,同样也会指定class的名字,另外还会指定将从哪里下载Java插件;
使用方法:
<jsp:plugin type="bean|applet" code="classFileName" codebasc="classFileDirectoryName"
name="instanceName" archive="URIToArchive,..." align="bottom|top|middle|left|right"
height="displayPixels" width="displayPixels" hspace="leftRightPixels" vspace="topButtomPixels"
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页面的Applet:
package com.jspdev.ch3;
import javax.swing.*;
import java.awt.*;
public class MyApplet extends JApplet {
String img;
public void paint(Graphics g){
Image image=getImage(getCodeBase(),img);
g.drawImage(image, 0, 0, 400, 400, this);
g.setColor(Color.blue);
g.setFont(new Font("宋体",2,24));
g.drawString("使用JSP:PLUGIN在JSP中添加Applet", 40, 170);
g.setFont(new Font("NewsRoman",2,10));
g.setColor(Color.pink);
g.drawString(new java.util.Date().toString(), 10, 190);
}
public void init()
{
img=getParameter("image");
}
}
在JSP中插入Applet:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>jsp:plugin演示</title>
</head>
<body>
<hr><br>
<jsp:plugin code="com.jspdev.ch3.MyApplet" codebase="." type="applet" align="center" width="200" height="200">
<jsp:params>
<jsp:param value="pic.jpg" name="image"/>
</jsp:params>
<jsp:fallback>在插入Applet时产生错误</jsp:fallback>
</jsp:plugin>
</body>
</html>