(三)JSP语法详细介绍--动做元素

1、动做元素语法:html

与JSP指令元素不一样的是,JSP动做元素在请求处理阶段起做用。JSP动做元素是用XML语法写成的。java

利用JSP动做能够动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、为Java插件生成HTML代码。express

<jsp:action_name attribute="value" />

动做元素基本上都是预约义的函数,JSP规范定义了一系列的标准动做,它用JSP做为前缀,可用的标准动做元素以下:浏览器

语法 描述
jsp:include 在页面被请求的时候引入一个文件。
jsp:useBean 寻找或者实例化一个JavaBean。
jsp:setProperty 设置JavaBean的属性。
jsp:getProperty 输出某个JavaBean的属性。
jsp:forward 把请求转到一个新的页面。
jsp:plugin 根据浏览器类型为Java插件生成OBJECT或EMBED标记。
jsp:element 定义动态XML元素
jsp:attribute 设置动态定义的XML元素属性。
jsp:body 设置动态定义的XML元素内容。
jsp:text 在JSP页面和文档中使用写入文本的模板

常见的属性session

全部的动做要素都有两个属性:id属性和scope属性。app

  • id属性:

    id属性是动做元素的惟一标识,能够在JSP页面中引用。动做元素建立的id值能够经过PageContext来调用。jsp

     

  • scope属性:

    该属性用于识别动做元素的生命周期。 id属性和scope属性有直接关系,scope属性定义了相关联id对象的寿命。 scope属性有四个可能的值: (a) page, (b)request, (c)session, 和 (d) application。函数

(一)jsp:include 动做标记post

该动做把指定文件插入正在生成的页面。ui

语法以下:

<jsp:include page="{相对URL地址|<%=expression%>}" flush="true|false" />

<jsp:include page="{relativeURL|<%=expression%>}" 
     flush="true|false">
     <jsp:param name="parameterName"
          value="{parameterValue|<%=expression%>}"/>
</jsp:include>

参数能够从另一个页面的getParameter方法获取。

page属性:指定要包含的文件的位置

flush属性:指示在读入包含内容以前是否清空如何现有的缓冲区。

jsp:include 动做 与 include指令不同,插入文件的时间是在页面被请求的时候。

(二)jsp: forward  动做标记

jsp:forward动做把请求转到另外的页面。jsp:forward标记只有一个属性page。语法以下:

<jsp:forward page="相对 URL 地址" />

jsp:forward的转发操做都是在服务端进行的,不会引发客户端的二次请求。

<jsp:forward>其实是调用了PageContext的forward方法。

示例以下:

<jsp:forward page="success.jsp">//跳转至success.jsp
    <jsp:param name="user" value="<%=name%>" />//携带参数"user"
</jsp:forward>

(三)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>

<fallback>元素是一个新元素,在组件出现故障的错误是发送给用户错误信息。

(四)jsp:param   动做标记

此标记用来以"键-值"对的形式为其余标记提供附加信息。它和 < jsp : include>、 < jsp : forward>、<jsp:plugin>一块儿使用。

语法以下:

  1. <jsp:param name="parameterName" value="{parameterValue|<%=expression%>}"/>

(五)jsp:useBean   动做标记o

jsp:useBean 动做用来加载一个将在JSP页面中使用的JavaBean。

语法以下:

<jsp:useBean id="name" class="package.class" scope="{page\request\session\application}"/>

id属性:指定此JavaBean实例对象的名称。

class属性: 指定此JavaBean类的全路径限定名(包名+类名)

scope属性: 指定此JavaBean 实例对象的存在范围(默认值page)

示例以下:

1.建立一个javaBean(UserName.java),代码以下:

package cn.edu.test;
public class UserBean {
	public UserBean(){}
	private String userName;
	private String password;
	private int age;
	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;
	}
	public int getAge(){
		return age;
	}
	public void setAge(int age){
		this.age=age;
	}
}

2.建立一个注册页面reg.html提交表单到javabean.jsp,代码以下:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>Insert title here</title>
	</head>
	<body>
		<h1>用户信息</h1>
		<hr>
		<form action="javabean.jsp" method="post">
			<label for="username">用户名:</label>
			<input id="username" type="text" name="userName" placeholder="请输入用户名">
			<br>
			<label for="password">密&nbsp;码:</label>
			<input id="password" type="password" name="password" placeholder="请输入密码">
			<br>
			<label for="age">年&nbsp;龄:</label>
			<input id="age" type="text" name="age" placeholder="请输入年龄">
			<br>
			<input type="submit" name="submit" value="提交">
		</form>
	</body>
</html>

3.javabean.jsp代码以下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:useBean id="user" scope="page" class="cn.edu.test.UserBean"></jsp:useBean>
<jsp:setProperty property="*" name="user"/>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>javaBean示例</title>
	</head>
	<body>
		<h1>注册成功</h1>
		<hr>
		<p><jsp:getProperty property="userName" name="user"/></p>
		<p><jsp:getProperty property="password" name="user"/></p>
		<p><jsp:getProperty property="age" name="user"/></p>
	</body>
</html>

4.运行结果以下: 

(六)jsp:setProperty 动做标记

jsp:setProperty用来设置已经实例化的Bean对象的属性。

第一种用法:jsp:useBean元素的外面(后面)使用jsp:setProperty。此时,无论jsp:useBean是找到了一个现有的Bean,仍是新建立了一个Bean实例,jsp:setProperty都会执行。

<jsp:useBean id="myName" ... />
...
<jsp:setProperty name="myName" property="someProperty" .../>

第二种用法:把jsp:setProperty放入jsp:useBean元素的内部。此时,jsp:setProperty只有在新建Bean实例时才会执行,若是是使用现有实例则不执行jsp:setProperty。

<jsp:useBean id="myName" ... >
...
   <jsp:setProperty name="myName" property="someProperty" .../>
</jsp:useBean>

jsp:setProperty动做有下面四个属性,以下表:

属性 描述
name name属性是必需的。它表示要设置属性的是哪一个Bean。
property property属性是必需的。它表示要设置哪一个属性。有一个特殊用法:若是property的值是"*",表示全部名字和Bean属性名字匹配的请求参数都将被传递给相应的属性set方法。
value value 属性是可选的。该属性用来指定Bean属性的值。字符串数据会在目标类中经过标准的valueOf方法自动转换成数字、boolean、Boolean、 byte、Byte、char、Character。例如,boolean和Boolean类型的属性值(好比"true")经过 Boolean.valueOf转换,int和Integer类型的属性值(好比"42")经过Integer.valueOf转换。   value和param不能同时使用,但能够使用其中任意一个。
param param 是可选的。它指定用哪一个请求参数做为Bean属性的值。若是当前请求没有参数,则什么事情也不作,系统不会把null传递给Bean属性的set方法。所以,你可让Bean本身提供默认属性值,只有当请求参数明确指定了新值时才修改默认属性值。

(七)jsp:getProperty 动做标记

jsp:getProperty动做提取指定Bean属性的值,转换成字符串,而后输出。

语法以下:

<jsp:useBean id="myName" ... />
...
<jsp:getProperty name="myName" property="someProperty" .../>

(八)jsp:element/attribute/body/text 动做标记

<jsp:element> 、 <jsp:attribute>、 <jsp:body>动做元素动态定义XML元素。动态是很是重要的,这就意味着XML元素在编译时是动态生成的而非静态。

<jsp:text>动做元素容许在JSP页面和文档中使用写入文本的模板

相关文章
相关标签/搜索