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

一、动作元素语法:

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

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

<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页面和文档中使用写入文本的模板

常见的属性

所有的动作要素都有两个属性:id属性和scope属性。

  • id属性:

    id属性是动作元素的唯一标识,可以在JSP页面中引用。动作元素创建的id值可以通过PageContext来调用。

     

  • scope属性:

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

(一)jsp:include 动作标记

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

语法如下:

<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.运行结果如下: 

05115813_Lp15.png05115813_f0Gj.png

(六)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动作有下面四个属性,如下表:

属性描述
namename属性是必需的。它表示要设置属性的是哪个Bean。
propertyproperty属性是必需的。它表示要设置哪个属性。有一个特殊用法:如果property的值是"*",表示所有名字和Bean属性名字匹配的请求参数都将被传递给相应的属性set方法。
valuevalue 属性是可选的。该属性用来指定Bean属性的值。字符串数据会在目标类中通过标准的valueOf方法自动转换成数字、boolean、Boolean、 byte、Byte、char、Character。例如,boolean和Boolean类型的属性值(比如"true")通过 Boolean.valueOf转换,int和Integer类型的属性值(比如"42")通过Integer.valueOf转换。   value和param不能同时使用,但可以使用其中任意一个。
paramparam 是可选的。它指定用哪个请求参数作为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页面和文档中使用写入文本的模板

 

转载于:https://my.oschina.net/u/2321708/blog/742433

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值