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小时内删除。
发表评论