JSP动作标签详解
⼀JSP动作元素概述
(1)JSP动作元素简介
与JSP指令元素不同的是,JSP动作元素在请求处理阶段起作⽤。JSP动作元素是⽤XML语法写成的。利⽤JSP动作可以动态地插⼊⽂件、重⽤JavaBean组件、把⽤户重定向到另外的页⾯、为插件⽣成HTML代码。
JSP动作元素(action elements),动作元素为请求处理阶段提供信息。动作元素遵循XML元素的语法,有⼀个包
含元素名的开始标签,可以有属性、可选的内容、与开始标签匹配的结束标签。
动作元素只有⼀种语法,它符合XML标准:
<jsp:action_name attribute="value"/>
动作元素基本上都是预定义的函数,JSP规范定义了⼀系列的标准动作,它⽤JSP作为前缀,可⽤的标准动作元素如下:
(2)JSP动作元素常见的属性
所有的动作要素都有两个属性:id属性和scope属性。
1)id属性
id属性是动作元素的唯⼀标识,可以在JSP页⾯中引⽤。动作元素创建的id值可以通过PageContext对象来调
⽤。这些我们会在下⾯的实例中进⾏演⽰。
2)scope属性
scope属性⽤于识别动作元素的⽣命周期。 id属性和scope属性有直接关系,scope属性定义了相关联id对象的
寿命。 scope属性有四个可能的值:page、request、session和application,这是JSP的四个作⽤域。
(3)JSP动作元素分类
JSP动作元素包含五类:
第⼀类是与JavaBean有关的,包括3个动作元素:jsp创建
<jsp:useBean>  <jsp:getProperty>  <jsp:setProperty>
第⼆类是JSP1.2就开始有的基本元素,包括6个动作元素:
<jsp:include>  <jsp:foward>  <jsp:param>  <jsp:plugin>  <jsp:params>  <jsp:fallback>
第三类是JSP2.0新增加的元素,主要与JSP Document有关,包括6个动作元素:
<jsp:root>  <jsp:declaration>  <jsp:scriptlet>  <jsp:expression> <jsp:text>  <jsp:output>
第四类是JSP2.0新增加的元素,主要是⽤来动态⽣成XML元素标签的值,包括3个动作元素:
<jsp:attribute>  <jsp:body>  <jsp:element>
第五类是JSP2.0新增加的元素,主要使⽤在Tag Filter中,包括2个动作元素:
<jsp:invoke>  <jsp:dobody>
⼆JavaBean
(1)JavaBean简介
JavaBean就是符合某种特定的规范的Java类。使⽤JavaBean的好处是解决代码重复编写,减少代码冗余,功能
区分明显,提⾼了代码的可维护性。
(2)JavaBean设计原则
先使⽤图⽰来说明JavaBean的四个设计原则:
1)公有类
JavaBean其实就是Java程序,只不过需要在JSP页⾯中应⽤,不定义成public类型的,当不是在同⼀个包下时(项
⽬⾥⼀般会把JavaBean 放在单独的⽂件夹下,所有不可能在同⼀包下了)不可以访问。
2)属性私有
定义成私有变量实际上是出于安全性的考虑,把变量封装起来,所以需要public 的getter 和setter ⽅法
访问这些私有属性。
3)⽆参的公有构造⽅法
⼀般不显式的写出构造⽅法,那么类都会默认的创建⼀个⽆参的公有构造⽅法,这是为了⽅便创建类的实例对象。
4)getter 和setter ⽅法
对类的私有属性进⾏重构,得到这些私有属性的getter 和setter ⽅法,为的是获取属性值和设置属性值。
实例:设计⼀个符合JavaBean 设计原则的类
三JSP 页⾯中使⽤JavaBean
(1)像使⽤普通Java 类⼀样,创建JavaBean 类实例
实例:在JavaBean 项⽬下的Resources ⽬录下创建⼀个JavaBean 类Users ,在WebContent ⽬录下创建
index.jsp 页⾯。
JavaBean 类Users 的代码为如上个例⼦中创建的Users 类。
index.jsp 页⾯源代码:
ity;
/** * ⽤户实体类的访问属性是public  * @author Administrator  * @date 2016年7⽉11⽇ */public class Users { //私有属性 private String username; private String password;  //⽆参构造器 public Users(){  }
//通过重构得到setter 和getter ⽅法 public String getUsername() {  return username; }
public void setUsername(String username) {  this.username = username; }
public String getPassword() {  return password; }
public void setPassword(String password) {  this.password = password; }
}
运⾏结果:
(2)在JSP 页⾯中通常使⽤JSP 动作元素使⽤JavaBean 类
1)<jsp:useBean>动作元素
作⽤:在JSP 页⾯中实例化或者在指定范围内使⽤JavaBean 。<jsp:useBean>动作元素⽤来加载⼀个将在JSP 页⾯中使⽤的JavaBean 。这个功能⾮常有⽤,因为它使得我们可以发挥JavaBean 组件复⽤的优势。
最简单的语法为:
在JavaBean 类载⼊后,我们既可以通过<jsp:setProperty>动作元素和<jsp:getProperty>动作元素来修改和检索Bean 的属性。 以下是useBean 动作元素相关的属性列表:
在给出具体实例前,让我们先来看下<jsp:setProperty>动作元素和<jsp:getProperty>动作元素。
2)<jsp:setProperty>动作元素
<jsp:setProperty>动作元素⽤来设置已经实例化的Bean 对象的属性,有两种⽤法。⾸先,你可以在<jsp:setProperty>动作元素的外⾯(后⾯)使⽤<jsp:setProperty>动作元素,如下所⽰:
此时,不管<jsp:setProperty>动作元素是到了⼀个现有的Bean 类,还是新创建了⼀个Bean 类例,<jsp:setProperty>动作元素都会执⾏。第⼆种⽤法是把<jsp:setProperty>动作元素放⼊<jsp:useBean>动作元素的内部,如下所⽰:
此时,<jsp:setProperty>动作元素只有在新建Bean 类实例时才会执⾏,如果是使⽤现有实例则不执⾏<jsp:setProperty>动作元素。
<jsp:setProperty>动作元素有下⾯四个属性,如下表:
<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!-- 导⼊包 --><%@ page import="ity.Users" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>JavaBean 实例</title></head><body>      <h1>使⽤普通⽅式创建JavaBean 的实例</h1>      <hr>      <%        Users user = new Users();  //创建JavaBean 类的实例user        user.setUsername("admin");  //设置⽤户名        user.setPassword("123456");  //设置密码      %>      ⽤户名:<%=Username() %><br>      密码:<%=Password() %><br></body></html>
<jsp:useBean id="标识符" class="Java 类名" scope="作⽤范围" ></jsp:useBean>
<jsp:useBean  id ="myName" ... ></jsp:useBean>...<jsp:setProperty  name ="myName" property ="someProperty" .../>
<jsp:useBean  id ="myName" ... >  ...  <jsp:setProperty  name ="myName" property ="someProperty" .../></jsp:useBean>
3)<jsp:getProperty>动作元素
<jsp:getProperty>动作元素提取指定Bean 类属性的值,转换成字符串,然后输出。
语法格式如下:
下表是与getProperty 相关联的属性:
实例
依然使⽤上⾯例⼦中的JavaBean 类Users 类。
新建的useBean.jsp 页⾯源代码:
运⾏结果:
(3)对于<jsp:setProperty>动作元素的延伸
<jsp:setProperty>动作元素作⽤:给已经实例化的JavaBean 对象的属性赋值,⼀共有四种形式:
<jsp:useBean  id ="myName" ... /><jsp:useBean>...<jsp:getProperty  name ="myName" property ="someProperty" .../>
<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>JavaBean 实例</title></head><body>      <h1>使⽤useBean ⽅式创建JavaBean 的实例</h1>      <hr>      <jsp:useBean id="myUsers" class="ity.Users" scope="page"></jsp:useBean>            <!-- 使⽤setProperty ⽅式来设置⽤户名和密码 -->      <jsp:setProperty property="username" name="myUsers" value="admin"/><br>      <jsp:setProperty property="password" name="myUsers" value="123456"/><br>            <!-- 使⽤传统的表达式来获取⽤户名和密码 -->      ⽤户名:<%=Username() %><br>      密码:<%=Password() %><br>            <hr>      <!-- 使⽤getProperty ⽅式来获取⽤户名和密码 -->      ⽤户名:<jsp:getProperty property="username" name="myUsers"/><br>      密码:<jsp:getProperty property="password" name="myUsers"/><br></body></html>
//跟表单关联
<jsp:setProperty name="JavaBean 实例名" property="*" />
// 跟表单关联
<jsp:setProperty name="JavaBean 实例名" property="JavaBean 属性名" />
//⼿⼯设置属性值
<jsp:setProperty name="JavaBean 实例名" property="JavaBean 属性名" value="BeanValue" />
//跟request 参数关联
<jsp:setProperty name="JavaBean 实例名" property="propertyName" param="request 对象中的参数名" />
实例:
照常使⽤JavaBean 类Users 类。
login.jsp 页⾯源代码:
dologin.jsp 页⾯源代码:<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>登录页⾯</title></head><body>    <h1>登录表单</h1>    <hr>    <form name="loginForm" action="dologin.jsp" method="post">        <table>              <tr>                  <td>⽤户名:</td>                  <td><input type="text" name="username" value="" /></td>              </tr>              <tr>                  <td>密码:</td>                  <td><input type="password" name="password" value="" /></td>              </tr>              <tr>                  <td colspan="2" align="center"><input type="submit" value="登录" /></td>              </tr>        </table>    </form></body></html>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。