`

06-Struts1.3 Tags

阅读更多

 

struts1标签(TDL文件,标签库描述符):

    视图端技术,用于完成表现层的输出

    使页面更加清晰

    封装好,便于重用

    具有四个标签库(Html、Bean、Logic、nested)

 

一、Html标签库

 

Html标签库:用来替代HTML页面元素的标签,用来创建输入表单

 

Struts为html大部分标签提供了对应的html标签

    button:            表现成一个按钮

    cancel:            表现成一个取消按钮

    checkbox:          表现成一个Checkbox的输入框

    error               用于输出数据校验的出错提示,其中用property来指定ActionForm中validate方法的errors中的key

    file                表现成一个文件浏览输入框

    form                表现成一个form域

    frame               表现成一个HTML<frame>的标签

    hidden              表现成一个隐藏域

    html                表现成HTML的<html>标签

    image               表现成表单域的image域

    img                 表现成一个HTML的img标签

    messages            用于输出Struts的各种提示信息

    password            表现成一个密码输入框

    reset               表现成一个重设按钮

    submit              表现成一个提交按钮

    text                表现成一个单行文本输入框

    textarea            表现成一个多行文本框

    link                表现成HTML的超链接

 

1、link标签:

<html:link page="/index.jsp" paramName="a,b">
	<html:param name="a" value="b" />
	<html:param name="b" value="c" />点击
</html:link>

<html:link forward="global_forword">全局跳转</html:link>
<html:link action="index">点击</html:link>

超链接常用属性:

    href:使用href,不会改变href属性值

    action:自动加.do

    forward:全局forward,使用forward属性,会将struts中配置的对应的全局forward引用过来:

    paramName:参数名称

 

2、text标签:

 

用户名:

<html:text property="username" size="30" maxlength="2" />

 

表现成单行文本输入框,常用属性:

    property:该输入域的名字

    size:输入域的长度

    maxlength:最大允许输入长度

 

3、cancel标签:

<html:cancel value="取消" />

 

使用注意

    同样提交绕过validate方法

    action配置文件中的cancellable设置成true

    actionisCancelled判断

 

DEMO:

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %>
<html:html>
<head>
	<title>html标签</title>
</head>
<body>
	<table border="1">
		<tr>
			<td rowspan="4">
				link标签:
			</td>
			<td>
				使用href,不会改变href属性值:
				<html:link href="http://www.baidu.com" paramName="a,b">
				<!-- 提交的参数 -->
					<html:param name="a" value="b" />
					<html:param name="b" value="c" />
					点击
				</html:link>

			</td>
		</tr>
		<tr>
			<td>
				使用action属性,如果action中没有后缀.do,则会自动加上.do:
				<html:link action="index">点击</html:link>
			</td>
		</tr>
		<tr>
			<td>
				使用forward属性,会将struts中配置的对应的全局forward引用过来:
				<html:link forward="global_forword">全局跳转</html:link>
			</td>
		</tr>
		<tr>
			<td>
				使用page属性:
				<html:link page="/index.jsp" paramName="a,b">
					<html:param name="a" value="b" />
					<html:param name="b" value="c" />
					点击
				</html:link>
			</td>
		</tr>
		<tr>
			<td rowspan="2">
				form表单:
			</td>
			<td>
				<html:form action="beanuse.do" enctype="multipart/form-data">
					用户名:<html:text property="username" size="30" maxlength="2" />
					<br>
					密码:<html:password property="password" />
					<br>
					备注:<html:textarea property="remark" rows="4" cols="40" />
					<br>
					性别:
					<jsp:setProperty name="userForm" property="sex" value="男" /><!-- 设置默认值 -->
					<!-- 或者将UserForm中的sex设置默认值 -->
					<html:radio  property = "sex" value = "男">男</html:radio>
					<html:radio  property = "sex" value = "女">女</html:radio>
					<br>
					职业:
					<html:select property="job">  <!-- 这里一定不能再用vlue属性了,只用一个property就可以-->
						<html:option value="1"> </html:option>
						<html:option value="2">java工程师</html:option>
						<html:option value="3">.net工程师</html:option>   
						<html:option value="4">c++工程师</html:option>     
						<html:option value="5">项目经理</html:option>       
					</html:select>
					<br>
					兴趣:
					<html:checkbox property="interests" value="1">体育</html:checkbox> 
					<html:checkbox property="interests" value="2">游泳</html:checkbox> 
					<html:checkbox property="interests" value="3">打人</html:checkbox> 
					<br>
					隐藏;
					<html:hidden property="hidden" value="隐藏"/>
					<br>
					文件:<html:file property="file" />
					<br>
					<html:submit value="提交" />
					<html:reset value="重置" />
					<html:cancel value="取消" />
				</html:form>
			</td>
		</tr>
	</table>
<pre>
说明:
	html:link 标签有以下重要属性:
		(1) forward:指定全局转发链接。
		(2) href:指定完整的URL 键接。
		(3) page:指定相对于当前网页的URL
	其有连个优点:
		(1)	允许在URL中以多种方式包含请求的参数;
		(2) 同时在用户关闭Cookie时,会采用URL重写把SessionID作为请求的参数包含在URL中,用于跟踪用户的Session状态。
		(3) 可以实现利用Action类来进行后端的业务组件的调度
</pre>
</body>
</html:html>

 

 

二、Bean标签库

 

Bean标签主要用于输出属性值、提示消息、消息请求参数等,处理属性范围内的属性,可以对其进行复制、添加、和显示并完成国际化功能,用来创建bean、访问bean、和访问bean属性

    cookie:将请求的cookie的值定义成脚本可以访问的JavaBean实例

    define:将某个bean的属性值定义成脚本可以访问的变量

    include:将jsp脚本资源完整定义成一个bean实例

    message:用于输出国际化信息,用key指定资源文件的key

    write:用于输出bean的属性值

 

1、write标签:

 

用于输出bean的属性值,常用属性:

    name、property:属性用来进行对象导航

    format:用来指定属性值的输出格式,主要是对数字和日期的格式处理

    filter:用来指定是否使用过滤器,filter会将html中敏感的语句过滤掉,直接显示出来

<bean:write name="user" property="username"/>-
<bean:write name="user" property="company.name"/>
数字,不使用format<bean:write name="number" />-------12345.67898
数字,使用format<bean:write name="number" format="###,###.######" />-----12,345.67898
数字,使用format,小数点保留两位<bean:write name="number" format="###,###.00" />----12,345.68
数字,使用format,小数点保留四位<bean:write name="number" format="###,###.0000" />--¬--12,345.6790 
日期,不使用format<bean:write name="date"/></td>------Fri May 20 10:03:19 CST 2011
日期,使用format<input type="text" value="<bean:write name="date" format="yyyy-MM-dd"/>"/>----2011-05-20

request.setAttribute("html", "<font color='red'>html tag</font>");			
html标识,使用过滤器<bean:write filter="true" name="html" />---显示"<font color='red'>html tag</font>
html标识,不使用过滤器<bean:write filter="false" name="html" />--显示红色html tag

 

 

2、size标签

 

将数组或集合大小定义为变量

<bean:size name="array" id="array_size" />
<bean:write name="array_size" />

 

将array对象的长度赋值给了array_size变量

 

3、define标签:

 

定义一个脚本可以访问的变量

 

常用属性:

    id:指定定义的变量,供在他处访问

    name:指定存在于jsp范围内的对象

    property:指定对象的属性

    value:直接将字符串赋值给新定义的变量

<bean:define id="var1" name="hello" scope="page" toScope="session"></bean:define>

 

 

将在page范围内名为hellobean转换成名为var1session范围内的bean

 

定义的方式

    name定义

    nameproperty定义

    value定义

    bean转换范围scope

 

    定义新的变量由已经存在的变量赋值

<bean:define id="var1" name="hello"/>
<bean:write name="var1" />
<br>

 定义新的变量,值由自己赋予:

<bean:define id="var2" value="1111" />
<bean:write name="var2" />
<bean:define id="var3" name="var2" scope="page" toScope="session"/>

 

 

结果;

    定义新的变量,由已经存在的变量赋值: hello world

    定义新的变量,值由自己赋予: 1111

 

4、include标签:

 

将jsp资源完整的定义成一个bean实例

<bean:include id="testJSP" page="/taglib_html.jsp"/>
<bean:write name="testJSP" filter="false"/>

 

通过filter来判断是否显示引入页面的源码或页面效果

 

三、Logic标签库

 

Logic完成基本的流程控制,用来进行逻辑判断、集合判读、和流程控制

    empty:如果给定的变量为空或者为空字符串,则执行标签体的内容

    equal:如果给定变量与特定的值相等,则执行标签体的内容

    greateEqual:如果给定变量大于或等于特定的值,则执行标签体的内容

    greaterThan:如果给定变量大于特定的值,则执行标签体的内容

    iterate:通过遍历给定集合的元素,对标签体的内容进行迭代

    lessEqual:如果给定变量下于或等于特定的值,则执行标签体的内容

    lessThan:如果给定变量下于特定的值,则执行标签体的内容

    match:如果特定字符串是给定消息合适的子字符串,则执行标签体的内容

    present:如果特定的值出现在请求中,则执行标签体的内容

    redirect:重定向页面

 

1、empty标签:

    empty和noEmpty:判断给定变量是否为空或者为空字符串,所指定的变量为空(1、为null,即该变量根本不存在。2、为空字符串。3、集合中不含元素)

 

 

2、present标签:

    present和notPresent:判断某个bean,或判断请求参数是否存在

    常用属性:

        cookie:判断名为给定的cookie是否存在

        header:判断名为给定的请求头是否存在

        parameter:判断名为给定的请求参数是否存在

 

总结对象指定方式:

 

一般情况下,对象指定方式:

    通过name直接指定

    通过name指定对象,再通过property指定该对象的某个属性

    如果有parameter属性,则可通过其来指定特定的请求参数(logic.jsp?pa=1中的pa为请求参数)

 

3、match标签:

 

match和notMatch:判断给定变量是否包含给定的字符串

常用属性:

    通过name、property或者parameter指定变量

    value:用来被匹配的子字符串

 

4、forward标签:

<logic:forward name="global_forward">

属性

    name用来指定所转向的全局forward

 

5redirect标签

 

redirect重定向

常用属性

    href直接重定向到href指定的资源

    page利用相对地址来控制重定向

    forward使用指定的全局forward来重定向

 

6greaterEqual标签

 

greaterEqual判断给定变量是否大于或等于特定的值

 

常用属性

    value用来比较的常量

    namepropertyparameter用来指定变量

 

7、iterate标签

 

iterate用于循环控制相当于forwhile遍历集合中的每个元素

 

常用属性: 

    nameproperty

    id每次遍历获得的对象

    indexId用来存放每次迭代的索引

 

DEMO

 

taglib_logic.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%>
<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html"%>
<%@ taglib prefix="logic" uri="http://struts.apache.org/tags-logic"%>
<!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>logic标签</title>
	</head>
	<body>
		empty和present<p/>
		<logic:empty name="var1">
			var1为空----null或""
		</logic:empty>
		<logic:notEmpty name="var1">
			var1不为空
		</logic:notEmpty>
		<logic:present name="var1">
			var1存在
		</logic:present>
		<logic:notPresent name="var1">
			var1不存在
		</logic:notPresent>
		
		<p/>
		<logic:empty name="var2">
			var2为空
		</logic:empty>
		<logic:notEmpty name="var2">
			var2不为空
		</logic:notEmpty>
		<logic:present name="var2">
			var2存在
		</logic:present>
		<logic:notPresent name="var2">
			var2不存在
		</logic:notPresent>
		
		<p/>
		<logic:empty name="var3">
			var3为空
		</logic:empty>
		<logic:notEmpty name="var3">
			var3不为空
		</logic:notEmpty>
		<logic:present name="var3">
			var3存在
		</logic:present>
		<logic:notPresent name="var3">
			var3不存在
		</logic:notPresent>
		<hr>
		
		match和notMatch<p>
		<logic:match value="world" name="hello">
			指定变量包含了world
		</logic:match>
		<p>
		<logic:notMatch value="lqh" name="hello">
			指定变量没有包含lqh
		</logic:notMatch>
		<p>
		
		greaterEqual<p>
		<logic:greaterEqual value="5" name="number">
			<bean:write name="number"/>大于等于5
		</logic:greaterEqual>
		<p>
		
		iterate<p>
		<table border="1">
			<tr>
				<td>姓名</td>
				<td>年级</td>
				<td>学校</td>
			</tr>
			<logic:empty name="list">
				<tr>
					<td colspan="3">没有学生</td>
				</tr>
			</logic:empty>
			<logic:notEmpty name="list">
				<logic:iterate id="student" name="list" indexId="index">
				<tr>
					<td>${index}.${student.name}</td>
					<td>${student.grade }</td>
					<td>${student.school.name }</td>
				</tr>
				</logic:iterate>
			</logic:notEmpty>
		</table>
	</body>
</html>

 

 

LogicAction.java:

package org.lxh.actions;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.lxh.model.School;
import org.lxh.model.Student;

public class LogicAction extends Action {

	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {

		request.setAttribute("var1", null);
		request.setAttribute("var2", "");	
		request.setAttribute("var3", new HashMap());
		
		request.setAttribute("hello", "hello world");
		
		request.setAttribute("number", 10);
		
		List<Student> list = new ArrayList<Student>();
		for(int i = 0; i < 5; ++ i){
			School school = new School();
			school.setName("school_" + i);
			Student student = new Student();
			student.setGrade("A1");
			student.setName("stu_" + i);
			student.setSchool(school);
			list.add(student);
		}
		
		request.setAttribute("list", list);
		Map shi = new HashMap();
		shi.put("1", "一室一厅");
		shi.put("2", "两室一厅");
		shi.put("2", "三室一厅");
		request.setAttribute("shi", shi);
		return mapping.findForward("success");
	}
}

 

分享到:
评论

相关推荐

    struts 1.3 框架的源代码

    8. ** strutstags-*.jar** 文件 - 这些是Struts的标签库实现,包含了许多预定义的JSP标签,如`&lt;s:form&gt;`、`&lt;s:textfield&gt;`等。 9. **Tiles框架集成** - Struts 1.3可以与Tiles框架集成,实现页面布局和组合,提高...

    struts是1.3API

    8. **Plug-ins和自定义标签库(Tags)**:Struts 1.3 支持插件系统,开发者可以添加自己的插件以扩展框架功能。同时,提供了丰富的JSP标签库,如logic、bean、html和nested等,简化视图层的开发。 9. **异常处理**...

    基于struts1.3的网上书店.

    Struts1.3是一个经典的Java Web开发框架,由Apache软件基金会维护,主要用于构建MVC(Model-View-Controller)架构的应用程序。在这个基于Struts1.3的网上书店项目中,我们将探讨Struts框架的核心概念、主要组件以及...

    Struts1.3和config配置详解

    7. **Plug-in配置**:插件扩展了Struts的功能,例如 strutstags-tiles 插件用于集成Tiles布局框架,`&lt;plug-in&gt;`元素下的`&lt;set-property&gt;`可以设置插件的属性。 8. **Exception处理**:`&lt;global-exceptions&gt;`允许...

    Struts1.3和Hibernate3.2API英文版(CHM格式)

    Struts1.3和Hibernate3.2是两个非常重要的Java Web开发框架,它们在软件开发领域有着广泛的使用。Struts1.3是一个基于MVC(Model-View-Controller)模式的开源框架,主要负责处理HTTP请求,管理业务逻辑,以及与视...

    Struts1.3多语言、异常处理、菜单应用.ppt

    - 引入Bean标签库:`&lt;%@taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %&gt;`。 - 使用`&lt;bean:message&gt;`标签来引用资源文件中的键,例如`&lt;bean:message key="common.after.login" bundle="menu" /&gt;...

    struts1.3 demo

    Struts1.3版本是该框架的一个重要里程碑,提供了许多改进和增强功能,旨在提高开发效率和应用程序的可维护性。 在"struts1.3 demo"中,我们可以学习到以下核心知识点: 1. **Action类**:Struts1中的业务逻辑处理...

    struts自制标签分页封装

    在不依赖 Struts 1.3 框架包的情况下,我们可以自己编写相关的组件来达到相同的效果。 分页功能是 Web 应用程序中的常见需求,尤其是在数据量庞大的时候,用户通常需要分页浏览信息。自定义标签的使用可以使代码更...

    struts-1.3.8-src.zip

    5. **JSP和Tags**:Struts提供了丰富的JSP标签库(Tiles和Struts Tags),使得开发者可以方便地在视图层创建动态网页,如logic:iterate、bean:write等。 6. **国际化与本地化**:Struts支持多语言环境,通过资源包...

    struts1标签库详解

    - [Struts 1.3 Documentation](https://struts.apache.org/1.x/struts-developer-guide.html) - [Struts Tag Libraries](https://struts.apache.org/1.x/struts-developer-guide/tag-reference.html) 通过阅读和...

    使用 NetBeans进行基础 Struts编程

    1. **创建新项目**:启动NetBeans,选择“文件” &gt; “新建项目” &gt; “Web” &gt; “Java Web” &gt; “Struts 1.3 Web Application”,填写项目名称和位置,然后点击“下一步”。 2. **添加Struts库**:在项目创建过程中...

    struts的validate框架验证

    在MyEclipse 6.0集成开发环境下,使用Struts 1.3版本进行开发时,我们可以利用这个框架来实现对各种输入数据的有效性检查,例如姓名、密码、电话、电子邮件、信用卡号以及日期等常见字段。 1. **验证框架基础** ...

    struts1.3.8API文档

    6. **Interceptor**:拦截器是Struts1.3引入的一个重要概念,它允许在Action执行前后插入自定义逻辑,例如登录检查、事务管理等,增强了框架的扩展性。 7. **Struts配置文件**:struts-config.xml是Struts的核心...

    struts API

    另外,Struts的标签库(Struts Tags)简化了视图层的开发,提供了一系列与表单、数据展示相关的JSP标签。 总的来说,Struts 1.3.9 API是一个强大的工具,帮助开发者构建健壮且易于维护的Web应用。通过深入理解和...

    Struts 1.3.8 学习笔记(三)

    9. ** strutstags.tld 文件**:这是Struts的标签库描述符文件,定义了所有可用的JSP标签及其属性。 10. **异常处理**:Struts允许通过配置文件定义全局和特定Action的异常处理策略,提高程序的健壮性。 在实际应用...

    Struts 上传下载

    &lt;%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %&gt; &lt;html:form action="upload.action" method="post" enctype="multipart/form-data"&gt; 上传" /&gt; ``` #### 1.3 Action 在对应的 `Action` ...

    SSH框架帮助文档

    而`Struts1.3.chm`和`Struts 1.1 API.chm`虽然针对的是Struts1,但也能帮助理解MVC框架的基础和演变过程。 6. **API文档**: `struts2-tags-API.chm`和`Hibernate3.2中文参考文档.chm`是Struts2标签库和Hibernate...

Global site tag (gtag.js) - Google Analytics