JSP动作元素

将 一些常用的JSP动作标记写下来,虽然自己大致都知道如何使用,但对于其中的一些细节可能并非清楚!
<jsp:param>
jsp:param操作被用来以“名-值”对的形式为其他标签提供附加信息。写一般与<jsp:forward>,<jsp:include>,<jsp:plug>,一起使用。
它的使用方式如下:
<jsp:param name="paramName"  value="paramValue"/>

<jsp:include>
该操作允许在请求的时间内在现成的JSP页面里面包含静态或动态的资源。被访问的对象对JSP write对象的访问权,并且它不能设置头或者Cookie.如果页面输出是缓冲的,那么缓冲区的刷新要俦于包含的刷新。因此它在运行效率上比<%@   include  file="include.html"%>要低,但它可以动态增加内容,使用例子如下:

ContractedBlock.gif ExpandedBlockStart.gif jsp_include.jsp
ExpandedBlockStart.gifContractedBlock.gif<%dot.gif@ page contentType="text/html; charset=gb2312" language="java" %>
None.gif
<html>
None.gif
<body>
ExpandedBlockStart.gifContractedBlock.gif
<%dot.gif@ include file="static.html" %>
ExpandedBlockStart.gifContractedBlock.gif
<%dot.gif--只是把文件包含进来--%>
None.gif
<href="two.jsp">goto two--></a><br>
None.gifthis examples show include works
None.gif
<jsp:include page="two.jsp" flush="true">
None.gif
<jsp:param name="a1" value="<%=request.getParameter("name")%>" />
None.gif
<jsp:param name="a2" value="<%=request.getParameter("password")%>" />
None.gif
</jsp:include>
None.gif
</body>
None.gif
</html>
ContractedBlock.gif ExpandedBlockStart.gif 包含静态页面static.html
None.gif<html>
None.gif
<body>
None.gif
<form method=post action="jsp_include.jsp">
None.gif
<table>
None.gif
<tr><td>please input your name:</td></tr>
None.gif
<tr><td><input type=text name=name></td></tr>
None.gif
<tr><td>input you password:</td></tr>
None.gif
<tr><td><input type=text name=password></td></tr>
None.gif
<tr><td><input type=submit value=login></td></tr>
None.gif
</table>
None.gif
</body>
None.gif
</html>
ContractedBlock.gif ExpandedBlockStart.gif 包含动态页面two.jsp
ExpandedBlockStart.gifContractedBlock.gif<%dot.gif@ page contentType="text/html; charset=gb2312" language="java" %>
ExpandedBlockStart.gifContractedBlock.gif
<%dot.gif-- 上面一行声明需要加上 虽然在主页面已经加入,若不加则会是乱码--%>
None.gif举例说明include的工作原理:
None.gif
<br>
None.gifthis is a1=
<%=request.getParameter("a1")%>
None.gif
<br>
None.gifthis is a2=
<%=request.getParameter("a2")%>
None.gif
<br>
ExpandedBlockStart.gifContractedBlock.gif
<%dot.gif out.println("hello from two.jsp");%>

<jsp:forword>
该操作允许将请求转发到另一个JSP,Servlet或者静态资源文件。一旦遇上此标记即会停止执行当前的JSP,转而执行被转发的资源。
使用示例如下:
ContractedBlock.gif ExpandedBlockStart.gif 登录页面login.jsp
ExpandedBlockStart.gifContractedBlock.gif<%dot.gif@ page contentType="text/html; charset=gb2312" %>
None.gif
<html>
None.gif
<body>
None.gif
<form method=get action=checklogin.jsp>
None.gif
<table>
None.gif
<tr><td>输入用户名:</td>
None.gif
<td><input type=text name=name value=<%=request.getParameter("name")%>></td>
None.gif
</tr>
None.gif
<tr><td>输入密码:</td>
None.gif
<td><input type=password name=password></td>
None.gif
</tr>
None.gif
<tr colspan=2><td><input type=submit value=login></td></tr>
None.gif
</table>
None.gif
</body>
None.gif
</html>
ContractedBlock.gif ExpandedBlockStart.gif 登录验证checklogin.jsp
ExpandedBlockStart.gifContractedBlock.gif<%dot.gif@ page contentType="text/html; charset=gb2312" %>
None.gif
<html>
None.gif
<body>
ExpandedBlockStart.gifContractedBlock.gif
<%dot.gif--进行登陆检查--%>
ExpandedBlockStart.gifContractedBlock.gif
<%dot.gif
InBlock.gif   
String name=request.getParameter("name");
InBlock.gif  
// String password=request.getParameter("password");
InBlock.gif   
// if验证通过,forward-->sucess.jsp
InBlock.gif   
//else forward-->login.jsp
InBlock.gif   
if(name.equals("hellking"))
ExpandedBlockEnd.gif   {
None.gif
%> 
None.gif
<jsp:forward page="sucess.jsp">
None.gif
<jsp:param name="user" value="<%=name%>"/>
None.gif
</jsp:forward>
ExpandedBlockStart.gifContractedBlock.gif
<%dot.gif
InBlock.gif }
//if
InBlock.gif 
else
ExpandedBlockEnd.gif {
None.gif
%>
None.gif
<jsp:forward page="login.jsp">
None.gif
<jsp:param name="user" value="<%=name%>"/>
None.gif
</jsp:forward>
None.gif 
<%}%>
None.gif
</body>
None.gif
</html>
ContractedBlock.gif ExpandedBlockStart.gif 登录成功后的页面success.jsp
ExpandedBlockStart.gifContractedBlock.gif<%dot.gif@ page contentType="text/html; charset=gb2312" %>
None.gif登录成功
None.gif
<BR>
None.gif欢迎你,
None.gif
<%=request.getParameter("name"%>

<jsp:setProperty>
此操作与useBean协作,用来设置Bean的简单属性和索引属性。<jsp:setProperty>标签使用Bean的setXXX()方法。利用它设置属性多种方法。
Bean的自省(introspection)用来发现出现的是哪些属性和它们的名字是什么,这些属性是简单的还是索引的,它们有什么类型等,用以下方法使用setProperty:
<jsp:setProperty name="beanName" property="*"/>

 <jsp:setProperty name="beanName" property="propertyName" param="parameterName"/>
 或
 <jsp:setProperty name="beanName" property="propertyName"/>
 或
 <jsp:setProperty name="beanName"  property="propertyName" value="propertyValue"/>
name="beanName"这是个必须属性,其值为Bean的名字,是在这之前用<jsp:useBean>的引入名称。
在所有使用没有 value属性的方式时要特别注意value的引用属性名一定要与Bean中定义的属性名严格一致!否则可能达不到预期效果!
另外从客户端传到器上的参数字符串型,这些字符串为了能够在Bean中匹配就需要罪魁成对应的类型。下面列出转换方法:
boolean      java.lang.Boolean.valueOf(String).booleanValue()
Boolean      java.lang.Boolean.valueOf(String)
byte        java.lang.Byte.valueOf(String).byteValue();
Byte        java.lang.Byte.valueOf(String)
char        java.lang.Character.valueOf(String).charValue();
Character     java.lang.Character.valueOf(String)
double       java.lang.Double.valueOf(String).doubleValue()
Double      java.lang.Double.valueOf(String)
int         java.lang.Integer.valueOf(String).intValue()
Integer      java.lang.Integer.valueOf(String)
float        java.lang.Float.valueOf(String).floatValue()
Float       java.lang.Float.valueOf(String)
long        java.lang.Long.valueOf(String).longValue()
Long       java.lang.Long.valueOf(String)

<jsp:getProperty>
此操作是对<jsp:setProperty>操作的补充,它用来访问一个Bean的属性。它访问的属性值将它转化成一个String,然后发送到输出流中。如果属性是一个对象,将调用toString()方法,它的使用如下:
<jsp:getProperty name="beanName" property="propertyName">
它也同样与jsp:useBean一起使用。,同时它也有一些限制,如:不能使用它来检索一个已经被索引了的属性。

<jsp:useBean>
此标签用于在JSP页面中创建一个Bean实例,并指定它的名字及作用范围。它保证对象在标签指定的范围内可以使用。
它的使用例子如下:
<jsp:useBean id="shopcar" scope="session" class="sessopn.Carts"/>
<jsp:setProperty name="shopcart" property="*"/>

<jsp:useBean id="checking" scope="session" class="bank.Checking">
<jsp:setProperty name="checking" property="balance" value="0.0"/>
</jsp:useBean>
scope的取值可以是page/request/session/application 范围依次递增!
可以分别使用
//page 中直接使用checking即可!
request.getAttribute("checking")
session.getValue("checking")
application.getAttribute("checking")
另外除了以上属性useBean还有以下属性
class="className"
这是Bean的类路径和类名。这个class不能是抽象的,必须有一个公用的,无参数的构造器。
BeanName="beanName"  type="typeName"
使用instantiate方法从一个class中实例化一个Bean,同时还可以指定 Bean的类型
type="typeName"
type可以是一个类本身,也可以是一个类的父类,或者是一个类的接口。如果没有使用class和BeanName指定type,Bean将不会被 实例化
另外不能同时使用 class和BeanName。BeanName的是Bean的名字,它的形式为"a.b.c"。

下面是一个具体的程序示例:

ContractedBlock.gif ExpandedBlockStart.gif 用户信息JavaBean TestBean.java
None.gifpackage eflylab;
None.gif
None.gif
public class TestBean
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif    
public String userName;
InBlock.gif    
public String password;
InBlock.gif    
public int age; 
InBlock.gif    
InBlock.gif    
public void setUserName(String name)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
this.userName=name;
ExpandedSubBlockEnd.gif    }

InBlock.gif    
public void setPassword(String password)
InBlock.gif    
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
this.password=password;
ExpandedSubBlockEnd.gif    }

InBlock.gif    
public String  getUserName()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
return this.userName;
ExpandedSubBlockEnd.gif    }

InBlock.gif    
public String getPassword()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
return password;
ExpandedSubBlockEnd.gif    }

InBlock.gif    
public int getAge()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
return this.age;
ExpandedSubBlockEnd.gif    }

InBlock.gif    
public void setAge(int age)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
this.age=age;
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif
ContractedBlock.gif ExpandedBlockStart.gif 用户注册界面中的表单register.html
None.gif<html>
None.gif
<body>
None.gif用户信息注册:
<br><hr>
None.gif
<form method="get" action="register.jsp">
None.gif
<table>
None.gif
<tr><td>姓名:<input name="userName" type="text"></td></tr>
None.gif
<tr><td>密码:<input name="password" type="password"></td></tr>
None.gif
<tr><td>年龄:<input name="age" type="text"></td></tr>
None.gif
<tr><td><input type=submit value="submit"></td></tr>
None.gif
</table>
None.gif
</form>
None.gif
</body>
None.gif
</html>
ContractedBlock.gif ExpandedBlockStart.gif 信息注册代码register.jsp
ExpandedBlockStart.gifContractedBlock.gif<%dot.gif@ page contentType="text/html;charset=gb2312"%> 
None.gif
<jsp:useBean id="user" scope="page" class="eflylab.TestBean"/>
None.gif
<jsp:setProperty name="user" property="*"/>
None.gif
<html> 
None.gif
<body> 
None.gif注册成功:
<br>
None.gif
<hr>
None.gif使用bean属性方法:
<br>
None.gif用户名:
<%=user.getUserName() %><br>
None.gif密码:
<%=user.getPassword() %><br>
None.gif年龄:
<%=user.getAge()%><br>
None.gif
<hr>
None.gif使用getProperty:
<br>
None.gif用户名:
<jsp:getProperty name="user" property="userName"/><br>
None.gif密码:
<jsp:getProperty name="user" property="password"/><br>
None.gif年龄:
<jsp:getProperty name="user" property="age"/><br>
None.gif
</body> 
None.gif
</html> 
<jsp:plugin>
此操作是用来产生客户端浏览器的特别标签(Object或者embed),可以使用它来插入Applet或者JavaBean。
一般来说<jsp:plugin>元素指定的对象是Applet还是Bean,同样也会指定class的名字,另外还会指定将从哪里下载这个Java插件。
None.gif < jsp:plugin  type =applet   code ="efly.testMyApplet.class"   codebase ="." >
None.gif    
< jsp:params >
None.gif            
< jsp:param   name ="aParameterName"   value ="aParameterNameValue" />
None.gif    
</ jsp:params >
None.gif    
< jsp:fallback >
None.gif            
< p > Unable  to  load  applet. </ p >
None.gif    
</ jsp:fallback >
None.gif
</ jsp:plugin >

解释:
1:type="bean/applet"
2:code="classFileName"  插件执行JAVA类文件的名称。在名称中必须加上扩展名,且此文件必须放在用 codebase属性的目录下。
3:codebase="classFileDirectoryName"这包含插件将运行的JAVA类的目录或指向这个目录的路径。默认为JSP文件的当前路径。
4:name="instanceName" 这是Bean或Applet的实例的名称。使得被同一个JSP文件调用的Bean或Applet之间的通讯成为可能。
5:archive="URIToArchive,……"这是以逗号分隔的路径名列表,是那些用于codebase指定的目录下的类装载器预装载的存档文件所在的路径名。
6:align="botton/top/middle/left/right"图形,对象,Applet的排列方式。
7:height="displayPixels"  width="displayPixels"  显示的高宽
8:hspace="leftRightPixels"  vspace="topBottomPixels"  左右  上下留下空间大小
9:jreversion="JREVersionNumber | 1.1" 这是Applet或Bean运行时所需的JRE版本
10:nspluginurl="URLToPlugin" 这是Netscape Navigator用户能够使用的JRE下载地址
11:iepluginurl="URLToPlugin" 这是Internet Explorer用户能够使用的JRE下载地址
12:<jsp:params>表示需要向Applet或Bean传送的参数或值
13:<jsp:fallback>回滚,下载失败则显示里面的内容,此标记只能在<jsp:plugin>内部使用

下面做一个具体的例子来结束这篇笔记!

 

ContractedBlock.gif ExpandedBlockStart.gif Applet小程序
None.gifpackage eflylab;
None.gif
import javax.swing.*;
None.gif
import java.awt.*;
ExpandedBlockStart.gifContractedBlock.gif
/** *//**
InBlock.gif * 
@author fengyan
InBlock.gif * @date    2007-01-15 23:36
ExpandedBlockEnd.gif 
*/

ExpandedBlockStart.gifContractedBlock.gif
public class MyApplet extends JApplet dot.gif{
InBlock.gif    String img;
InBlock.gif    
public void paint(Graphics g)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        Image image
=getImage(getCodeBase(),img);
InBlock.gif        g.drawImage(image,
0,0,400,400,this);//绘制一张图片
InBlock.gif
        g.setColor(Color.blue);
InBlock.gif        g.setFont(
new Font("宋体",2,24));
InBlock.gif        g.drawString(
"使用JSP:PLUGIN在JSP中添加applet",40,170);//绘制一个字符串
InBlock.gif
        g.setFont(new Font("NewsRoman",2,10));
InBlock.gif        g.setColor(Color.pink);
InBlock.gif        g.drawString(
new java.util.Date().toString() ,10,190);//绘制一个字符串
ExpandedSubBlockEnd.gif
    }

InBlock.gif    
public void init()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        img
=getParameter("image");
ExpandedSubBlockEnd.gif    }

InBlock.gif
ExpandedBlockEnd.gif}
 

 

ContractedBlock.gif ExpandedBlockStart.gif 调用页面
None.gif 
None.gif
<html>
None.gif
<head><title>jsp:plugin 演示</title></head>
None.gif
<body>
None.gif
<hr><br>
None.gif
<jsp:plugin type="applet" code="eflylab.MyApplet"
None.gifcodebase
="." align="center" width="400" height="400">
None.gif
<jsp:params>
None.gif
<jsp:param name="image" value="pic.jpg"/>
None.gif
</jsp:params>
None.gif
<jsp:fallback>在插入applet时产生错误 </jsp:fallback>
None.gif
</jsp:plugin>
None.gif
</body>
None.gif
</html>


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值