将 一些常用的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"%>要低,但它可以动态增加内容,使用例子如下:
jsp_include.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<html>
<body>
<%@ include file="static.html" %>
<%--只是把文件包含进来--%>
<a href="two.jsp">goto two--></a><br>
this examples show include works
<jsp:include page="two.jsp" flush="true">
<jsp:param name="a1" value="<%=request.getParameter("name")%>" />
<jsp:param name="a2" value="<%=request.getParameter("password")%>" />
</jsp:include>
</body>
</html>
包含静态页面static.html
<html>
<body>
<form method=post action="jsp_include.jsp">
<table>
<tr><td>please input your name:</td></tr>
<tr><td><input type=text name=name></td></tr>
<tr><td>input you password:</td></tr>
<tr><td><input type=text name=password></td></tr>
<tr><td><input type=submit value=login></td></tr>
</table>
</body>
</html>
包含动态页面two.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<%-- 上面一行声明需要加上 虽然在主页面已经加入,若不加则会是乱码--%>
举例说明include的工作原理:
<br>
this is a1=<%=request.getParameter("a1")%>
<br>
this is a2=<%=request.getParameter("a2")%>
<br>
<% out.println("hello from two.jsp");%>
<jsp:forword>
该操作允许将请求转发到另一个JSP,Servlet或者静态资源文件。一旦遇上此标记即会停止执行当前的JSP,转而执行被转发的资源。
使用示例如下:
登录页面login.jsp
<%@ page contentType="text/html; charset=gb2312" %>
<html>
<body>
<form method=get action=checklogin.jsp>
<table>
<tr><td>输入用户名:</td>
<td><input type=text name=name value=<%=request.getParameter("name")%>></td>
</tr>
<tr><td>输入密码:</td>
<td><input type=password name=password></td>
</tr>
<tr colspan=2><td><input type=submit value=login></td></tr>
</table>
</body>
</html>
登录验证checklogin.jsp
<%@ page contentType="text/html; charset=gb2312" %>
<html>
<body>
<%--进行登陆检查--%>
<%
String name=request.getParameter("name");
// String password=request.getParameter("password");
// if验证通过,forward-->sucess.jsp
//else forward-->login.jsp
if(name.equals("hellking"))
{
%>
<jsp:forward page="sucess.jsp">
<jsp:param name="user" value="<%=name%>"/>
</jsp:forward>
<%
}//if
else
{
%>
<jsp:forward page="login.jsp">
<jsp:param name="user" value="<%=name%>"/>
</jsp:forward>
<%}%>
</body>
</html>
登录成功后的页面success.jsp
<%@ page contentType="text/html; charset=gb2312" %>
登录成功
<BR>
欢迎你,
<%=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"。
下面是一个具体的程序示例:
用户信息JavaBean TestBean.java
package eflylab;
public class TestBean
{
public String userName;
public String password;
public int age;
public void setUserName(String name)
{
this.userName=name;
}
public void setPassword(String password)
{
this.password=password;
}
public String getUserName()
{
return this.userName;
}
public String getPassword()
{
return password;
}
public int getAge()
{
return this.age;
}
public void setAge(int age)
{
this.age=age;
}
}
用户注册界面中的表单register.html
<html>
<body>
用户信息注册:<br><hr>
<form method="get" action="register.jsp">
<table>
<tr><td>姓名:<input name="userName" type="text"></td></tr>
<tr><td>密码:<input name="password" type="password"></td></tr>
<tr><td>年龄:<input name="age" type="text"></td></tr>
<tr><td><input type=submit value="submit"></td></tr>
</table>
</form>
</body>
</html>
信息注册代码register.jsp
<%@ page contentType="text/html;charset=gb2312"%>
<jsp:useBean id="user" scope="page" class="eflylab.TestBean"/>
<jsp:setProperty name="user" property="*"/>
<html>
<body>
注册成功:<br>
<hr>
使用bean属性方法:<br>
用户名:<%=user.getUserName() %><br>
密码:<%=user.getPassword() %><br>
年龄:<%=user.getAge()%><br>
<hr>
使用getProperty:<br>
用户名:<jsp:getProperty name="user" property="userName"/><br>
密码:<jsp:getProperty name="user" property="password"/><br>
年龄:<jsp:getProperty name="user" property="age"/><br>
</body>
</html>
<jsp:plugin>
此操作是用来产生客户端浏览器的特别标签(Object或者embed),可以使用它来插入Applet或者JavaBean。
一般来说<jsp:plugin>元素指定的对象是Applet还是Bean,同样也会指定class的名字,另外还会指定将从哪里下载这个Java插件。
<jsp:plugin type=applet code="efly.testMyApplet.class" codebase=".">
<jsp:params>
<jsp:param name="aParameterName" value="aParameterNameValue"/>
</jsp:params>
<jsp:fallback>
<p>Unable to load applet.</p>
</jsp:fallback>
</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>内部使用
下面做一个具体的例子来结束这篇笔记!
Applet小程序
package eflylab;
import javax.swing.*;
import java.awt.*;
/** *//**
* @author fengyan
* @date 2007-01-15 23:36
*/
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");
}
}
调用页面
<html>
<head><title>jsp:plugin 演示</title></head>
<body>
<hr><br>
<jsp:plugin type="applet" code="eflylab.MyApplet"
codebase="." align="center" width="400" height="400">
<jsp:params>
<jsp:param name="image" value="pic.jpg"/>
</jsp:params>
<jsp:fallback>在插入applet时产生错误 </jsp:fallback>
</jsp:plugin>
</body>
</html>