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
action中isCancelled判断
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范围内名为hello的bean转换成名为var1在session范围内的bean
定义的方式:
用name定义
用name和property定义
用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
5、redirect标签:
redirect:重定向
常用属性:
href:直接重定向到href指定的资源
page:利用相对地址来控制重定向
forward:使用指定的全局forward来重定向
6、greaterEqual标签:
greaterEqual:判断给定变量是否大于或等于特定的值
常用属性:
value:用来比较的常量
name、property、parameter用来指定变量
7、iterate标签:
iterate:用于循环控制,相当于for、while等,遍历集合中的每个元素
常用属性:
name、property
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"); } }
相关推荐
8. ** strutstags-*.jar** 文件 - 这些是Struts的标签库实现,包含了许多预定义的JSP标签,如`<s:form>`、`<s:textfield>`等。 9. **Tiles框架集成** - Struts 1.3可以与Tiles框架集成,实现页面布局和组合,提高...
8. **Plug-ins和自定义标签库(Tags)**:Struts 1.3 支持插件系统,开发者可以添加自己的插件以扩展框架功能。同时,提供了丰富的JSP标签库,如logic、bean、html和nested等,简化视图层的开发。 9. **异常处理**...
Struts1.3是一个经典的Java Web开发框架,由Apache软件基金会维护,主要用于构建MVC(Model-View-Controller)架构的应用程序。在这个基于Struts1.3的网上书店项目中,我们将探讨Struts框架的核心概念、主要组件以及...
7. **Plug-in配置**:插件扩展了Struts的功能,例如 strutstags-tiles 插件用于集成Tiles布局框架,`<plug-in>`元素下的`<set-property>`可以设置插件的属性。 8. **Exception处理**:`<global-exceptions>`允许...
Struts1.3和Hibernate3.2是两个非常重要的Java Web开发框架,它们在软件开发领域有着广泛的使用。Struts1.3是一个基于MVC(Model-View-Controller)模式的开源框架,主要负责处理HTTP请求,管理业务逻辑,以及与视...
- 引入Bean标签库:`<%@taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %>`。 - 使用`<bean:message>`标签来引用资源文件中的键,例如`<bean:message key="common.after.login" bundle="menu" />...
Struts1.3版本是该框架的一个重要里程碑,提供了许多改进和增强功能,旨在提高开发效率和应用程序的可维护性。 在"struts1.3 demo"中,我们可以学习到以下核心知识点: 1. **Action类**:Struts1中的业务逻辑处理...
- 使用快捷键`Ctrl + N`调出新建窗口,选择`MyEclipse/Web-Struts/Struts1.3Form` - 设置类名为`LoginForm`,并将类的包路径指定为`com.dp.school.actionForm` - 在“Form Properties”选项卡中,添加`userName`和`...
在不依赖 Struts 1.3 框架包的情况下,我们可以自己编写相关的组件来达到相同的效果。 分页功能是 Web 应用程序中的常见需求,尤其是在数据量庞大的时候,用户通常需要分页浏览信息。自定义标签的使用可以使代码更...
5. **JSP和Tags**:Struts提供了丰富的JSP标签库(Tiles和Struts Tags),使得开发者可以方便地在视图层创建动态网页,如logic:iterate、bean:write等。 6. **国际化与本地化**:Struts支持多语言环境,通过资源包...
- [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) 通过阅读和...
1. **创建新项目**:启动NetBeans,选择“文件” > “新建项目” > “Web” > “Java Web” > “Struts 1.3 Web Application”,填写项目名称和位置,然后点击“下一步”。 2. **添加Struts库**:在项目创建过程中...
在MyEclipse 6.0集成开发环境下,使用Struts 1.3版本进行开发时,我们可以利用这个框架来实现对各种输入数据的有效性检查,例如姓名、密码、电话、电子邮件、信用卡号以及日期等常见字段。 1. **验证框架基础** ...
6. **Interceptor**:拦截器是Struts1.3引入的一个重要概念,它允许在Action执行前后插入自定义逻辑,例如登录检查、事务管理等,增强了框架的扩展性。 7. **Struts配置文件**:struts-config.xml是Struts的核心...
另外,Struts的标签库(Struts Tags)简化了视图层的开发,提供了一系列与表单、数据展示相关的JSP标签。 总的来说,Struts 1.3.9 API是一个强大的工具,帮助开发者构建健壮且易于维护的Web应用。通过深入理解和...
9. ** strutstags.tld 文件**:这是Struts的标签库描述符文件,定义了所有可用的JSP标签及其属性。 10. **异常处理**:Struts允许通过配置文件定义全局和特定Action的异常处理策略,提高程序的健壮性。 在实际应用...
<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %> <html:form action="upload.action" method="post" enctype="multipart/form-data"> 上传" /> ``` #### 1.3 Action 在对应的 `Action` ...
而`Struts1.3.chm`和`Struts 1.1 API.chm`虽然针对的是Struts1,但也能帮助理解MVC框架的基础和演变过程。 6. **API文档**: `struts2-tags-API.chm`和`Hibernate3.2中文参考文档.chm`是Struts2标签库和Hibernate...