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");
	}
}

猜你喜欢

转载自xdwangiflytek.iteye.com/blog/1829799
今日推荐