JSP 动作元素

JSP 动作元素

JSP动作元素在请求处理阶段起作用,由XML语法写成。

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

动作元素只有一种语法,它符合XML标准:

<jsp:动作 属性="value"  属性="value"······ />

JSP基本动作包括:

  • jsp:include    向当前页面中包含其他的文件(包括动态&&静态)
  • jsp:useBean    寻找或者实例化一个JavaBean
  • jsp:setProperty    设置JavaBean的属性。
  • jsp:getProperty    输出某个JavaBean的属性。
  • jsp:forward    把请求转到一个新的页面。
  • jsp:plugin    根据浏览器类型为Java插件生成OBJECT或EMBED标记。
  • jsp:param   为其他标识传递参数

 

<jsp:include>动作(包含文件)

把指定文件插入正在生成的页面,插入文件的时间是在页面被请求的时候。

<jsp:include page="相对 URL 地址" flush="true/false" />

或者

<jsp:include page="相对 URL 地址" flush="true/false" >

    子动作标识<jsp:param>

</jsp:include>

  • page:插入到页面中的文件的相对URL地址。
  • flush:在包含资源前是否刷新缓存区,默认为false。(可选)
  • 子动作标识<jsp:param>:用于向被包含的动态页面中传递参数。

示例:使用<jsp:include>动作元素在test04.jsp中插入test04_data.jsp

test04.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <jsp:include page="test04_data.jsp" flush="true"/>
</body>
</html>

test04_data.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<p>
   今天的日期是: <%= (new java.util.Date()).toLocaleString()%>
</p>

 

<jsp:param>

<jsp:param> 可以作为其他标识的子标识,用于为其他标识传递参数。

<jsp:param name="参数名" value="参数值"/>

示例:通过<jsp:param>标识为<jsp:forward>标识传递参数

<jsp:forward page="test.jsp">
    <jsp:param name="userId" value="kris"/>
</jsp:forward>

上述代码在请求转发到test.jsp页面的同时,传递了参数userId,其值为kris

说明:通过<jsp:param>动作标识指定的参数,将以“参数名=值”的形式被加入到请求中,它的功能与在文件名后面直接加“?参数名=参数值”是相同的。

 

<jsp:useBean>动作

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

jsp:useBean动作最简单的语法为:

<jsp:useBean id="name" class="package.class" />

语法含义:创建一个由class属性指定的类的实例,然后将它绑定到其名字由id属性给出的变量上。

<jsp:useBean>的五个属性:

  • id:命名采用该 Bean 的变量,如果能够找到 id 和 scope 相同的 Bean 实例,<jsp:useBean>动作将使用已有的 Bean 实例而不是创建新的实例。
  • class:指定 Bean 的完整包名
  • scope:指定 Bean 在哪种上下文可用,可以取page、request、session、application四个值之一。默认为 page,表示该 Bean 只在当前页面可用(保存在当前页面的PageContext内)。
  • type:指定引用该对象的变量类型,它必须是Bean类的名字、超类的名字、该类所实现的接口名字之一。(变量的名字是由id指定的)
  • beanName:指定Bean的名字。

实例:创建个Student.java的 JavaBean,该类定义了三个属性。代码如下

package com.health;

public class Student {
	private String name;
	private String grade;
	private String major;

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getGrade() {
		return grade;
	}
	public void setGrade(String grade) {
		this.grade = grade;
	}
	public String getMajor() {
		return major;
	}
	public void setMajor(String major) {
		this.major = major;
	}
}

创建一个JSP页面student.jsp,在该页使用<jsp:useBean>载入该JavaBean。代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>test useBean</title>
</head>
<body>
<jsp:useBean id="stu" scope="page" class="com.health.Student">
<%
	stu.setName("小丽");
	stu.setGrade("17软工4班");
	stu.setMajor("软件工程");
%>
</jsp:useBean>
<h2 align="center">显示javaBean中的信息</h2>
<hr>
<%=stu.getName() %>
<%=stu.getGrade() %>
<%=stu.getMajor() %>
</body>
</html>

 

<jsp:forward>动作(请求转发)

jsp:forward动作把请求转到另外的Web资源(页面,Servlet等),执行请求转发后当前页面将不再被执行。jsp:forward标记只有一个属性page,page的值既可以直接给出,也可以在请求的时候动态计算。语法格式如下所示:

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

实例:在test05.jsp中使用<jsp:forward>重定向请求到test04_data.jsp

test05.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>我是test05</h1>
<jsp:forward page="test04_data.jsp"/>
<h1>我是test05</h1>
</body>
</html>

test04_data.jsp 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<p>
   今天的日期是: <%= (new java.util.Date()).toLocaleString()%>
</p>

 

<jsp:setProperty>和<jsp:getProperty>动作

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

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

这两个动作必须 <jsp:useBean>动作一起使用,且要在<jsp:useBean>后面使用

1.<jsp:setProperty>

<jsp:setProperty>的 name 的值应当和<jsp:useBean>中的 id 的值相同

该动作有四个属性:

  • name:name属性是必需的。它表示要设置属性的是哪个Bean。
  • property:property属性是必需的。它表示要设置哪个 javaBean 属性。有一个特殊用法:如果property的值是"*",表示所有名字和Bean属性名字匹配的请求参数都将被传递给相应的属性set方法。
  • value:value 属性是可选的。该属性用来指定Bean属性的值。
  • param:param 是可选的。它指定用哪个请求参数 (request对象中的参数名) 作为Bean属性的值。

注意:value和param不能同时使用,但可以使用其中任意一个。

实例:输入信息,使用<jsp:setProperty>存取信息并回显出来

login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>

<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="test06.jsp" method="post">
	姓名:<input type="text" name="name"/><br/>
	班级:<input type="text" name="grade"/><br/>
	专业:<input type="text" name="major"/><br/>
	<input type="submit" value="提交"/>
	<input type="reset" value="取消"/>
</form>
</body>
</html>

test06.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>test setProperty</title>
</head>
<body>
<jsp:useBean id="stu" scope="page" class="com.health.Student"/>

<jsp:setProperty property="*" name="stu"/>

<!--上述使用"*"与下面这三行,效果相同
<jsp:setProperty property="name" name="stu"/>
<jsp:setProperty property="grade" name="stu"/>
<jsp:setProperty property="major" name="stu"/>
-->

<!-- Tomcat中对于post方法提交的表单采用的默认编码为ISO-8859-1,而这种编码格式不支持中文字符 -->
姓名:<%=new String(stu.getName().getBytes("ISO-8859-1"), "utf-8")%>
班级:<%=new String(stu.getGrade().getBytes("ISO-8859-1"), "utf-8")%>
专业:<%=new String(stu.getMajor().getBytes("ISO-8859-1"), "utf-8")%>
</body>
</html>

2.<jsp:getProperty>

该动作提取指定Bean属性的值,转换成字符串,然后输出。

例如,下面两段代码效果是相同的

姓名:<%=stu.getName() %>
班级:<%=stu.getGrade() %>
专业:<%=stu.getMajor() %>
<jsp:getProperty property="name" name="stu"/>
<jsp:getProperty property="grade" name="stu"/>
<jsp:getProperty property="major" name="stu"/>

上述代码中 name 是JavaBean的名字,即 <jsp:useBean>中 id 的值;property是所指定的JavaBean的属性名。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

healthLau

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值