`
puppy117
  • 浏览: 52189 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Struts 的标签库

阅读更多
Struts 提供了大量的标签库,用于完成表现层的输出。借助于Struts 的标签库,可避免在JSP 中嵌入大量的Java 脚本,从而提高代码的可读性。
Struts 主要提供了如下三个标签库。
• html: 用于生成HTML 的基本标签。
• bean: 用于完成程序国际化,输出Struts 的ActionForm 的属性值等。
• logic: 用于完成循环、选择等流程控制。
一、使用Struts 标签的基本配置
为了使用Sturts 标签,必须将struts-bean.tld 文件复制到WEB-INF 路径下,并在web.xml 文件中增加html 标签库的配置。
下面是增加了三个标签库配置的web.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Web 配置文件的根元素 -->
<web-app>
	<!-- 配置ActionServlet -->
	<servlet>
		<servlet-name>action</servlet-name>
		<!-- 配置Servlet 的实现类 -->
		<servlet-class>
			org.apache.struts.action.ActionServlet
		</servlet-class>
		<!-- 将ActionServlet配置load-on-startup Servlet -->
		<load-on-startup>2</load-on-startup>
	</servlet>
	<!-- 配置ActionServlet映射的URL -->
	<servlet-mapping>
		<servlet-name>action</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
	<!-- 配置Web 应用的首页 -->
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
	<!-- 配置html 标签库 -->
	<taglib>
		<!-- 配置html 标签库的URI -->
		<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
		<!-- 指定html 标签库的物理位置 -->
		<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
	</taglib>
	<!-- 配置bean 标签库 -->
	<taglib>
		<!-- 配置bean 标签库的URI-->
		<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
		<!-- 指定bean 标签库的物理位置 -->
		<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
	</taglib>
	<!-- 配置logic 标签库 -->
	<taglib>
		<!-- 配置logic 标签库的URI -->
		<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
		<!-- 指定logic 标签库的物理位置 -->
		<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
	</taglib>
</web-app>

因为每个页面都需要使用这三个标签,为避免在每个页面中重复使用taglib 标签,
可将三个标签的导入放在单独的文件中。
下面是taglib.jsp 文件的源代码:
<%@ taglib uri="/WEB-INF/struts-bean.tld"prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

其他的JSP 页面只需使用incluede包含该页面,即可导入三个标签库,避免了重复使用taglib 标签。
二、使用html 标签库
Struts 为htrnl 的大部分标签提供了对应的htrnl 标签, htrnl 所支持的标签大致有如下。
• base: 表现成一个HTML 的<base>标签。
• button: 表现成一个按钮,该按钮默认没有任何动作。
• cancel: 表现成一个取消按钮。
• checkbox: 表现成一个Checkbox 的输入框。
• error: 用于输出数据校验的出错提示。
• file: 表现成一个文件浏览输入框。
• form: 表现成一个form 域。
• frame: 表现成一个HTML<frame>标签。
• hidde: 表现成一个隐藏域。
• html: 表现成HTML 的<html>标签。
• image: 表现成表单域的image 域。
• img: 表现成一个HTML 的img 标签。
• javascrit: 表现成JavaScript 的校验代码,这些校验代码根据ValidatorPlugIn 生成。
• link: 表现成HTML 的超级链接。
• messages: 用于输出Struts 的各种提示信息,包括校验提示。
• multibox: 表现成一个Checkbox 输入框。
• option: 表现成选择框的一个选项。
• password: 表现成一个密码输入框。
• radio: 表现成一个单选输入框。
• reset: 表现成一个重设按钮。
• rewrite: 表现成一个URL 。
• select: 表现成一个列表选择框。
• submit: 表现成一个提交按钮。
• text: 表现成一个单行文本输入框。
• textarea: 表现成一个多行文本框。
这些标签的使用类似于html的标签,因此比较简单。下面是对login.jsp 页面的改写,将原有的html标签改写成Struts 的html标签。
当然,此处还存在没有使用Struts 的验证框架。因此,还必须保留JavaScript 验证。
<%@ page language="java" contentType="text/html; charset=UTF-8"
	errorPage=""%>
<!-- 导入Struts 的三个标签库 -->
<%@ include file="/WEB-INF/pages/include/taglibs.jsp"%>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<!-- 使用国际化资源文件的key 输出标题 -->
		<title><bean:message key="login" />
		</title>
	</head>
	<script>
function check(form){
if (form.username.value==null || form.username.value=="" ){
<!-- 使用国际化资源文件的key 输出提示 -->
alert ( '<bean :message key= "noname" />' ) ;
return false;
}
else if(form.pass.value==null || form.pass.value=="" )
{
<!-- 使用国际化资源文件的key 输出提示 -->
alert('<bean:message key="nopass"/>');
return false;
}
//两者都已经输入
else
{
return true;
}
}
</script>
	<body>
		<font color="red"> <%
 	//用于输出出错提示,出错提示保存在request 的err 属性里。
 	if (request.getAttribute("err") != null) {
 		out.println(request.getAttribute("err"));
 	}
 %> </font>
		<!-- 下面是登录表单 -->
		请输入用户名和密码:
		<html:form action="login.do" onsubmit="return check(this);">
			<bean:message key="username" />
			<html:text property="username" />
			<br>
			<bean:message key="pass" />
			<html:password property="pass" />
			<br>
			<html:submit>
				<bean:message key="login" />
			</html:submit>
			<br>
		</html:form>
	</body>
</html>

该页面的显示效果与之前的JSP 显示效果并没有太多不同。可见,html标签主要用于生成基本的htm1标签。
三、使用bean 标签库
bean 标签库主要用于输出属性值、提示消息及定义请求参数等。下面是bean 标签库的常用标签。
• cookie: 将请求的cookie 的值定义成脚本可以访问的JavaBean 实例。
• define: 将某个bean 的属性值定义成脚本可以访问的变量。
• header: 将请求头的值定义成脚本可以访问的变量。
• include: 将某个JSP 资源完整定义成一个bean 实例。
• message: 用于输出国际化信息。
• page: 将page Context 中的特定项定义成一个bean 。
• parameter: 将请求参数定义成脚本可以访问的变量。
• resource: 加载Web 应用的资源,并将其变成JavaBean。
• struts: 用于将某个Struts 的内部配置成一个bean 。
• write: 用于输出某个bean 的属性值。
下面将详细讲解这些标签。
1. cookie 标签
cookie 标签用于将cookie 值定义成JavaBean,看下面页面的代码:
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<html>
	<head>
		<title>bean:cookie Tag 测试</title>
	</head>
	<body>
		<div align="center">
			<h1>
				bean:cookie Tag 测试
			</h1>
		</div>
		<p>
			作用:获取当前的Cookie 信息,将其转化成一个bean 实例
			<br>
			显示我们当前的session 关联的cookie 属性:
		</p>
		<!-- 将JSESSIONID 的cookie 定义成id 为sess 的bean -->
		<bean:cookie id=" sess" name=" JSESSIONID"
			value=" JSESSIONID-IS-UNDEFINED" />
		<table border="l">
			<tr>
				<th>
					Property Name
				</th>
				<th>
					Correct Value
				</th>
				<th>
					Test Result
				</th>
			</tr>
			<tr>
				<td>
					comment
				</td>
				<!-- 下面采用两种方式输出sess bean 的comment 属性 -->
				<td>
					<jsp:getProperty name="sess" property="comment" />
				</td>
				<td>
					<bean:write name="sess" property="comment" />
					&nbsp;
				</td>
			</tr>
			<tr>
				<td>
					domain
				</td>
				<!-- 下面采用两种方式输出sess bean 的domain 属性 -->
				<td>
					<jsp:getProperty name="sess" property="domain" />
				</td>
				<td>
					<bean:write name="sess" property="domain" />
					&nbsp;
				</td>
			</tr>
			<tr>
				<td>
					maxAge
				</td>
				<td>
					<!-- 下面采用两种方式输出sess bean 的maxAge 属性-->
					<jsp:getProperty name="sess" property="maxAge" />
				</td>
				<td>
					<bean:write name="sess" property="maxAge" />
					&nbsp;
				</td>
			</tr>
			<tr>
				<td>
					path
				</td>
				<!-- 下面采用两种方式输出sess bean 的path 属性-->
				<td>
					<jsp:getProperty name="sess" property="path" />
				</td>
				<td>
					<bean:write name="sess" property="path" />
					&nbsp;
				</td>
			</tr>
			<tr>
				<td>
					secure
				</td>
				<!-- 下面采用两种方式输出sess bean 的secure 属性-->
				<td>
					<jsp:getProperty name="sess" property="secure" />
				</td>
				<td>
					<bean:write name="sess" property="secure" />
					&nbsp;
				</td>
			</tr>
			<tr>
				<td>
					value
				</td>
				<!-- 下面采用两种方式输出sess bean 的value 属性-->
				<td>
					<jsp:getProperty name="sess" property="value" />
				</td>
				<td>
					<bean:write name="sess" property="value" />
					&nbsp;
				</td>
			</tr>
			<tr>
				<td>
					version
				</td>
				<!-- 下面采用两种方式输出sess bean 的version属性-->
				<td>
					<Jsp:getProperty name="sess" property="version" />
				</td>
				<td>
					<bean:write name="sess" property="version" />
					&nbsp;
				</td>
			</tr>
		</table>
	</body>
</html>

2. define 标签
define 标签主要用于定义Java 脚本可以访问的变量。定义该变量时,变量的赋值非常灵活,可以直接为其指定特定值:也可以使用某个bean 的属性值定义变量;或者将某个范围的bean 转向另一个范围。例如,将pageContext下的bean 转换到Session 范围内。
看下面的页面代码:
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
bean:define标签用来定义一个页面变量
<p>
	1.下面是定义的时候直接赋值的方式
	<br>
	如同采用String test1 = "测试属性" ; 一样
	<br>
	<bean:define id="test1" value="测试属性" />
	<%=test1%>
	<br>
<hr>
2. 下面是把一个变量的值赋给另一个变量的值
<br>
如同String test2 = test1;
<br>
<bean:define id="test2" name="test1" />
<%=test2%><br>
<hr>
<jsp:useBean id="bean1" scope="page" class="lee.LoginForm" />
<jsp:setProperty name="bean1" property="password" value="tiger" />
3 .下面将某个bean 的属性定义成一个页面变量
<br>
如同String test3 = bean1.getPassword();
<bean:define id="test3" name="bean1" property="password" />
<%=test3%><br>
<br>
<hr>
4. 下面将来自某个范围的bean 转到另一个范围
<br>
如同session.setAtrribute("bean2".bean1) ;
<bean:define id="bean2" Name="bean1" scope="page" toScope="session" />
<hr>
<br>
5.bean:write的作用:
<br>
=((LoginForm)session.getAttribute("bean2")) .getPassword()
<br>
<bean:write name="bean2" property="password" scope="session" />

在上面的页面文件中,出现了以下4 种情况。
(1)在使用bean 标签定义Java 脚本可以访问的变量时,可直接为变量赋值。用法如下:
<bean:define id="variableName" value="variableValue"/>将variableValue的值赋给varialeName 的变量。
(2) 将一个变量的值直接赋给另一个变量,用法如下:
<bean: define id= "variable1" name= "variable2" />: 将variable2 的值赋给variable1。
(3)将某个bean 的属性定义成页面可以访问的变量,用法如下:
<bean:define id="variableName" name="beanName" property="beanProperty"/>:
将beanName 的beanProperty属性的值,赋给variableName的变量。
(4) 将一个范围的bean 转换到另一个范围内,用法如下:<bean:define id= "bean1" name= "bean2" scope="scope1" toScope="scope2"/>: 将scope1 中的bean1 转到scope2 的bean2 。
在最后部分演示了bean:write 的作用----输出bean 的属性值
分享到:
评论

相关推荐

    struts标签库学习

    Struts标签库是Java Web开发中的一个重要组成部分,它极大地简化了开发者在JSP页面中处理业务逻辑和控制流程的工作。Struts是一个开源框架,最初由Apache软件基金会开发,旨在提供一个MVC(Model-View-Controller)...

    struts标签库使用

    Struts标签库是Java Web开发中的一个重要组成部分,主要用于构建基于MVC(模型-视图-控制器)架构的应用程序。这个库极大地简化了JSP页面的编写,提供了丰富的标签来处理常见的Web开发任务,如表单处理、数据校验、...

    Struts标签库.chm是一个不错的东西

    Struts标签库是Java Web开发中的一个重要组成部分,它极大地简化了基于MVC(Model-View-Controller)架构的Struts框架的应用程序开发。这个“Struts标签库.chm”文件很可能是官方或第三方编写的帮助文档,包含了关于...

    Struts标签库 ppt教程

    Struts标签库是Java开发中基于Struts框架的一个重要组件,它为开发者提供了一系列便捷的JSP标签,简化了Web应用的开发工作。本章主要介绍了五个主要的Struts标签库,分别是HTML标签库、Bean标签库、Logic标签库、...

    Struts标签库查询手册.chm

    Struts标签库是Java Web开发中的一个重要组成部分,它极大地简化了基于MVC(Model-View-Controller)架构的Struts框架的应用程序开发。这个“Struts标签库查询手册”提供了全面的指南,帮助开发者理解和使用Struts...

    struts标签库手册(chm格式)

    Struts标签库手册是开发Java Web应用程序时的重要参考资料,尤其对于使用Struts框架的开发者来说,它是不可或缺的工具。Struts是一个开源的MVC(Model-View-Controller)框架,它帮助开发者构建可维护性、可扩展性...

    struts 标签库

    使用Struts标签库可以显著提高开发效率,因为它们提供了内置的类型转换、错误处理和国际化支持。开发者不再需要在JSP页面中编写大量的Java脚本,而是可以专注于页面布局和业务逻辑的分离,从而实现更加清晰和维护...

    Struts标签库Struts标签库Struts标签库案例

    Struts标签库是Java开发Web应用时非常重要的一个组件,它是Apache Struts框架的一部分,用于简化JSP页面的编写,提高代码的可读性和可维护性。Struts标签库提供了丰富的标签,使得开发者可以不用直接在JSP页面上写...

    Struts标签库帮助文档(英文)

    很全面的描述了Struts标签库的使用方法,尽管是英文版的,但是语法非常简单,借用金山词霸完全没有阅读障碍。

    struts标签库使用大典

    Struts标签库是Java开发Web应用时常用的工具,尤其在基于MVC(Model-View-Controller)架构的Struts框架中发挥着重要作用。Struts标签库简化了JSP页面的编写,提高了代码的可读性和可维护性。下面将详细介绍Struts...

    Struts标签库查询手册

    Struts标签库是Java Web开发中的一个重要组成部分,尤其在基于MVC(Model-View-Controller)架构的应用中,它极大地简化了视图层的构建。Struts 1和Struts 2都提供了丰富的标签库来帮助开发者高效地创建动态HTML页面...

    Struts标签库

    总的来说,Struts标签库是Struts框架的重要组成部分,它为Java Web开发提供了强大的视图层支持,简化了JSP页面的编写,提高了开发效率。理解和熟练运用这些标签,将有助于提升你在Struts项目中的开发能力。

    Struts标签库 Struts 标签库

    Struts2标签库是Java开发Web应用程序时常用的一个强大工具,尤其在构建MVC(Model-View-Controller)架构的应用程序中发挥着重要作用。Struts2框架提供了丰富的自定义标签库,极大地简化了视图层的开发,使得开发者...

    Struts标签库手册,给学习Struts的人一本辅导手册

    Struts标签库是Java开发中基于Struts框架的一个重要组件,它为开发者提供了方便的JSP标签,使得在页面逻辑中处理数据和控制流程变得更加简洁和直观。这本《Struts标签库手册》是对Struts标签库的详细总结,旨在帮助...

    struts 标签库 .

    Struts标签库是Java开发Web应用时常用的一个组件,它为Apache Struts框架提供了一组自定义的JSP标签,极大地简化了视图层的开发,使得开发者能够更专注于业务逻辑,而不是繁琐的HTML和Java代码混合。Struts标签库...

    Struts标签库学习.rar

    本资料主要集中在Struts1.0的标签库学习,下面我们将详细探讨Struts标签库及其在实际开发中的应用。 首先,我们来看"Struts标签库学习——html篇.doc"。这个文档详细介绍了Struts HTML标签库,它是用于构建用户界面...

    struts1标签库详解

    Struts1 标签库详解 Struts1 标签库是 Apache Jakarta 的一个著名的开源项目,目标是为构建基于 Java 的 web 应用程序提供一个框架。Struts 提供了非常多的标签,依据功能和使用习惯的不同被分到了五个标签库中:...

    Struts标签库查询手册.rar

    Struts标签库是Java Web开发中的重要组成部分,主要用于构建MVC(模型-视图-控制器)架构的应用程序。Struts框架提供了丰富的标签库,简化了JSP页面的编写,使得开发者能够更专注于业务逻辑,而不是繁琐的HTML和...

Global site tag (gtag.js) - Google Analytics