- 浏览: 676907 次
- 性别:
- 来自: 安徽
文章分类
- 全部博客 (252)
- Html/Div+CSS (12)
- Js/Jquery (34)
- Flex (2)
- Ajax (3)
- Java (35)
- C# (15)
- Spring (16)
- Hibernate (13)
- Struts2 (12)
- Struts1 (7)
- DWR (1)
- iBatis/myBatis (9)
- Tag(JSTL、EL) (1)
- Android (44)
- SQL (7)
- SEO (7)
- Exception (3)
- Tool (10)
- Other (3)
- WebService (9)
- Apache (7)
- Ext (0)
- Utils (12)
- thinking in programme (2)
- Hadoop (0)
- ActiveMQ (0)
- HTML5/CSS3 (0)
- WPF (1)
- NodeJs (1)
- 设计模式 (0)
- 程序人生 (1)
- 随笔 (1)
- Linux (1)
- Load Balance (0)
最新评论
-
drinkjava2:
太复杂了而且不通用,利用ThreadLocal可完美解决这一问 ...
JDBC的多条件动态查询 -
u013107014:
multipartRequest.getFiles(" ...
多文件上传 by MultipartFile and Multiple -
liyys:
可惜没讲你mysql数据库的表的设计
iBatis入门 -
Mapple_leave:
效果还是挺不错的,谢谢了。
中文简体与繁体的转换 -
arcpad:
JS禁用浏览器退格键
Struts2 标签,这玩意没什么可说的,直接把以前做的笔记贴过来吧。
标签:
标签必须在jsp页面中才能使用,同时标签背后是java代码,当jsp页面被翻译成servlet代码,同时标签也被翻译成java代码
优点:
1、封装JSP中的java代码 ,页面代码更清晰,更易于维护;
2、封装UI组件 ,将一段html代码进行封装成组件,提高复用和开发效率;
缺点:
1、实现复杂
需要将代码从jsp中剥离出来编写Tag类,定义tld文件,然后在引用使用,比较繁琐
2、学习成本高
不同框架,不同公司都会有不同的标签库
tld文件说明:标签库描述文件,如要在JSP页面中实现JSP标签,必须首先定义实现标签的类,然后在标签库描述文件 (TLD)中将写好的类映射成jsp标签,最后在JSP文件中使用定义好的标签,就可以生成动态的JSP内容;
标签库的核心功能:
1、 逻辑控制 ,控制页面显示逻辑
2、 数据输出 ,取得处理结果数据,并展现数据
3、 页面组件
对HTML标签的扩展和扩充,添加框架本身特有的特性
这些标签对jsp来说,并不是必须的,只是对UI的开发起到辅助的作用
应该谨慎对待,事实上,这些标签往往可以通过其他的方式代替
数据标签
一、 Proerty 标签 :
Project.java:
package struts.demo.bean; public class Product { private int id; private String name; private float price; private java.sql.Date dateOfProducted; private String description; getter/setter public String toString(){ return String.format("Product[%s,%s,%s,%s]", id,name,price,dateOfProducted); } }
ProjectAction.java:
public class ProductAction { private Product product; private List<Product> products; public String show() { ProductService productService=new ProductService(); product=productService.getFirstProduct(); return Action.SUCCESS; } getter/setter
jsp:
<s:property/><br />------struts.demo.action.ProductAction@4a7df6 产品名称:<s:property value="product.name" /><br />------娃哈哈 产品价格:<s:property value="product.price" /><br />-------5.5 生产日期:<s:property value="product.dateOfProducted" /><br />-----11-4-9 产品说明:<s:property value="product.description" default="unknow" /><br />-----unknow
功能说明
获取对象的属性值 , 目标对象默认位于 ValueStack 栈顶
标签属性
value Object 对象的属性名称 , 默认直接输出 ValueStack 栈顶对象
default String 默认值 , 如果 value 为 null , 则输出此值 , 注意 value 为 null , 如果为 “” 则输出 “”
escape Boolean 是否进行 html 转义 , 默认为 true
escapeJavaScript Boolean 是否进行 javaScript 转义 , 默认为 false
以上都不是必选项
二、 set 标签 :
<s:set var="firstProductName" value="product.name" scope="application"/> 我们的第一款产品是 : <s:property value="#application['firstProductName']"/>
功能说明:
设定指定scope范围内对象的属性值
标签属性:
var 必选 String 被设置的对象属性名称
value no Object 值表达式
scope no String 范围,默认action(ActionContext)request/session/application
注意上面的value必须是值表达式,如果直接写值则不可以
三、push标签:
<s:push value="product"> 产品名称:<s:property value="name" /><br /> 产品价格:<s:property value="price" /><br /> 生产日期:<s:property value="dateOfProducted" /><br /> 产品说明:<s:property value="description" default="unknow" /> </s:push>
功能说明:
将对象压入ValueStack栈顶,标签结束则出栈
标签属性:
value 必选 Object 被入栈对象的表达式
注意与property标签中对比
四、bean标签:
<s:bean name="struts.demo.bean.Product" var="product2"> <s:param name="name" value="%{'Nokia 6120c'}" /> <s:param name="price" value="1095.0" /> </s:bean> 产品名称:<s:property value="%{#product2.name}"/><br /> 产品价格:<s:property value="%{#product2.price}"/>
功能说明 :
创建一个对象,并压入ValueStack栈顶
标签属性:
name 必选 String 实例的完全限定类名
var no String 在标签结束后能够继续引用实例的变量名
五、Action标签:
action.jsp:
targetAction 执行结果 :
<s:action name="target-action" namespace="/data-tags" var="targetAction" executeResult="true"/><br />
从 targetAction 中取值: < s:property value = "#targetAction.product.name" />
struts.xml:
<action name="target-action" class="struts.demo.action.ProductAction" method="show"> <result>/data-tags/target-action.jsp</result> </action>
target-action.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
这是来自 target-action 的 result(target-result.jsp) 的结果
功能说明 :
在当前页面中调用其他的 action
标签属性:
name 必选 String 配置的Action名称
namespace no String Action所在package的namespace
var no String 在页面中引用Action所使用的变量名
executeResult no boolean 是否执行Result并输出在当前页面上,默认为false
ignoreContextParames no boolean 是否忽略request parameters,默认为false
说明例如上例中的executeResult如果设置成false,则页面上的第一行不显示任何信息
六、dubug标签:
功能说明:显示ValueStack
没有标签属性
七、url标签:
功能说明:生成一个URL
标签属性:
action 必选 String URL指向的Action
namespace no String Action 所在 package 的 namespace
value no String 非 action 的 url , 此属性不能与 action 共存
var no String 不输出 url , 保存到变量中
<s:url action="editPet"> <s:param name="id" value="%{selected}"></s:param> </s:url>
八、 date 标签 :
生产日期 : < s:date name = "dateOfProducted" var = "dateFmt" format = "yyyy-MM-dd" />
< s:property value = "dateFmt" />< br />
功能说明:日期格式化
标签属性:
name 必选 String 被格式化的日期对象名
fomart no String 显示日期的格式
var no String 不输出,保存到变量中
控制标签
实现页面上的逻辑控制
if、elseif、else, 实现分支选择功能
iterator,实现迭代功能
集合操作,append、generator、subset、sort
一、if-elseif-else标签:
<s:property value="product.name" /> : <s:if test="product.price &it 3000">低档</s:if> <s:elseif test="product.price > 5000">中档</s:elseif> <s:else>高档</s:else>
功能说明 : 替代 java 语法中的 if/else
标签属性 :
test 必选 boolean 表达式 , 决定是否显示 if/else 标签体的内容
分页:
<!-- 分页 --> <div class="manu"> <s:if test="pagination.isFirstPage()"> <span class="disabled">First</span> <span class="disabled"> < Prev</span> </s:if> <s:else> <a href="${pageContext.request.contextPath }/myDownload!myDownloadList.action?pageNo=1">First</a> <a href="${pageContext.request.contextPath }/myDownload!myDownloadList.action?pageNo=<s:property value='pagination.getPrePage()'/>"> < Prev</a> </s:else> <s:bean name="org.apache.struts2.util.Counter" id="counter"> <s:param name="first" value="pagination.getPageNo()-4<1?1:pagination.getPageNo()-4" /> <s:param name="last" value="pagination.getPageNo()-1" /> <s:iterator> <a href="${pageContext.request.contextPath }/myDownload!myDownloadList.action?pageNo=<s:property/>"> <s:property/></a> </s:iterator> </s:bean> <span class="current"><s:property value="pagination.getPageNo()"/> </span> <s:bean name="org.apache.struts2.util.Counter" id="counter"> <s:param name="first" value="pagination.getPageNo()+1" /> <s:param name="last" value="pagination.getPageNo()+4<pagination.getTotalPage()?pagination.getPageNo()+4:pagination.getTotalPage()" /> <s:iterator> <a href="${pageContext.request.contextPath }/myDownload!myDownloadList.action?pageNo=<s:property/>"> <s:property/></a> </s:iterator> </s:bean> <s:if test="pagination.isLastPage()"> <span class="disabled">Next > </span> <span class="disabled">Last</span> </s:if> <s:else> <a href="${pageContext.request.contextPath }/myDownload!myDownloadList.action?pageNo=<s:property value='pagination.getNextPage()'/>">Next > </a> <a href="${pageContext.request.contextPath }/myDownload!myDownloadList.action?pageNo=<s:property value='pagination.getTotalPage()'/>">Last</a> </s:else> </div>
二、 iterator 标签 :
<tr> <th>名称</th> <th>价格</th> <th>生产日期</th> </tr> <s:iterator value="products" status="stat"> <s:set var="bgcolor" value="%{'red'}" /> <s:if test="#stat.odd"> <s:set var="bgcolor" value="%{'#greed'}" /> </s:if> <tr bgcolor="${bgcolor }"> <td><s:property value="name" /></td> <td><s:property value="price" /></td> <td> <s:date name="dateOfProducted" var="dateFmt" format="yyyy-MM-dd"/> <s:property value="%{#dateFmt}" /> </td> </tr> </s:iterator>
功能说明 :
替代 java 语言中的 foreach 的功能
标签属性 :
value 必选 Object 被迭代的对象
status no String 迭代状态 ,IteratorStatus 对象
说明 :IteratorStatus :
index : 下标
count : 次数 ,index+1
first : 是否第一次
last : 是否最后一行
even : 偶数行
odd : 奇数行
三、 append 标签 :
<s:append var="products"> <s:param value="${myList1 }"></s:param> <s:param value="${myList1 }"></s:param> <s:param value="${myList1 }"></s:param> </s:append> <s:iterator value="%{#products}"> <s:property/> </s:iterator>
功能说明 :
将多个集合进行合并
标签属性 :
var 必选 String 合并后集合的变量名
四、 subset 标签 :
<s:subset source="products" start="0" count="3"> <s:iterator> <tr> <td><s:property value="name" /></td> <td><s:property value="price" /></td> <td> <s:date name="dateOfProducted" var="dateFmt" format="yyyy-MM-dd"/> <s:property value="%{#dateFmt}" /> </td> <tr> </s:iterator> </s:subset>
功能说明:
去集合的子集
标签属性:
source no Object 源集合
start no int 起始下标
count no int 子集合元素个数
var no String 引用的变量名
五、sort标签:
功能说明:
取集合的子集
标签属性:
comparetor 必选 java.util.Compartor 比较器类
source no Object 源集合
var no String 引用的变量名
<s:sort comparator="myCompartor" source="products"> <s:iterator> <!-- do something with each sorted elements --> <s:property value=".."/> </s:iterator> </s:sort>
表单标签
Form UI 标签
作用 : 生成对应懂得 HTML 表单元素
特性 :
表单项与 java 端属性绑定
基于框架的类型转换
基于框架的数据验证
基于框架的国际化
Struts2的Form UI标签并不是的转换成对应的html标签,它提供了一系列的主题,可以生成具有布局效果的UI
sample:生成原生的html标签
xhtml:生成table布局的html,默认主题
css_xhtml:生成css布局的html标签
ajax:生成支持ajax的html标签
一、form标签:
生成表单。
<s:form action="register" namespace="form-tags" method="post" enctype="multipart/form-data"> <s:textfield name="user.name" label="账号" /> <s:password name="user.password" label="密码" /> <s:file name="user.icon" label="照片" /> <s:textarea name="user.protocol" label="用户协议" cols="50" rows="6"/> <s:checkbox name="user.agreeProtocol" label="接受用户协议"/> <s:hidden name="user.src" value="%{#parameters.src}" /> <s:submit name="submit" value="提交" /> </s:form>
常用的标签属性 :
action String 表单提交目标 ,Struts action name 或者 url
namespace String 指定 Struts action 的 namespace
validate Boolean 是否启用客户端脚本验证
theme String 指定表单的主题 , 默认为 xhtml
其他 String 同 html form 的属性
所有表单项标签的通用属性:
name String 设置name属性,同时从ValueStack中取值
value Object 设置value属性,支持OGNL表达式
key String 从资源文件中加载本地化的标签值
label String 指定标签值,仅xhtml主题
labelPosition String 设置标签位置,top/left,仅xhtml主题
required Boolean 设置为必填项,会在标签后添加一个*,仅xhtml主题
id String 设置html id
cssClass String 设置html class
cssStyle String 设置html style
disabled Boolean 设置html disabled
tabindex int 设置html tabindex
二、select标签:
生成select标签(含option)
<s:form> <s:select list="products" listKey="id" listValue="name" emptyOption="true" label="产品" /> </s:form> <s:select list="{'222','333'}" emptyOption="true" label="产品" />
标签属性:
list 集合 指定option列表项
listKey String 如果list元素是复合对象,指定option value对应属性
listValue String 如果list元素是符合对象,指定option text对应属性
emptyOption Boolean 是否添加空 option
multiple Boolean 是否允许多选
三、 checkboxlist 标签 :
生成一组 checkbox
<s:form> <s:checkboxlist name="favors" list="products" listKey="id" listValue="name" label="您喜欢的产品" /> </s:form> <s:checkboxlist name="favors" list="{'dadf','ddd'}" label="您喜欢的产品" />
需要注意的是在 select 和 checkboxlist ,radio 中的 list 可以直接写一个集合 , 但这时候就不能再指定 listKey 和 listValue 了 ;
标签属性 :
list 集合 指定 option 列表项
listKey String 如果 list 元素是复合对象 , 指定 option value 对应属性
listValue String 如果 list 元素是符合对象 , 指定 option text 对应属性
四、 radio 标签 :
生成一组 radio
<s:radio name="favorite" list="products" listKey="id" listValue="name" label="您最喜欢的产品" /> <s:radio name="favorite" list="{'11','22'}" label="您最喜欢的产品" />
标签属性 :
list 集合 指定 option 列表项
listKey String 如果 list 元素是复合对象 , 指定 option value 对应属性
listValue String 如果list元素是符合对象,指定option text对应属性
发表评论
-
Struts2标签与JSTL标签混用
2012-07-16 00:07 2996项目中遇到JSTL标签(需要standard.jar和jstl ... -
Struts2.2 OGNL
2012-06-29 01:54 1856OGNL ,作为Struts2 一大亮点,感觉也是 ... -
NoClassDefFoundError: org/apache/commons/io/FileUtils
2012-06-27 00:58 4733在做Struts Demo中出现: Exception ... -
Struts2.2 Type Conversion
2012-06-26 23:51 2138Struts2 的转换器: ... -
Struts2.2 Localization
2012-06-25 23:55 1720今天来说说Struts2 ... -
Struts2.2 Validation
2012-06-11 00:59 2826数据验证的方式: ... -
Struts2.2 Results Types
2012-06-10 01:11 1696视图返回类型详细的信息可以查看 struts2-c ... -
Struts2.2 Action
2012-06-09 00:13 1834在说 Struts2 中的 Actio ... -
Struts2.2 Interceptors
2012-06-08 01:52 1628AOP 中的 aspect ... -
Struts2.2 Configuration
2012-06-07 23:39 2007在前面的 Struts2.2 CURD Dem ... -
Struts2.2入门By CRUD
2012-06-06 21:49 2369SSH中Struts可谓是比较 ...
相关推荐
org.apache.struts2.views.freemarker, org.apache.struts2.views.freemarker.tags, org.apache.struts2.views.jsp, org.apache.struts2.views.jsp.iterator, org.apache.struts2.views.jsp.ui, org.apache.struts2...
struts-2.2.3.1-all.zip的META-INF/struts-tags.tld
<%@ taglib prefix="s" uri="/struts-tags" %> <p><s:property value="item.name"/> ``` - **解释**:将`id`属性改为`var`,这是由于Struts2.5.16中对标签库的支持有所调整,以增强安全性。 #### 六、总结 ...
<%@taglib prefix="s" uri="/struts-tags"%> <%@taglib prefix="sx" uri="/struts-dojo-tags"%> ``` 同时,为了确保Dojo库的正常加载,必须在页面的`<head>`部分添加`sx:head`或`s:head theme="ajax"`标签。 ### ...
<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %> 上传" /> ``` #### 1.3 Action 在对应的 `Action` 类中,我们需要处理上传的请求。通过 `ActionForm` 中的 `FormFile` 对象获取到上传...
1.5 JSP:视图层,负责展示数据,通常结合标签库(Tiles或Struts Tags)使用,提高代码复用和可维护性。 二、MVC设计模式的应用 2.1 Model(模型):在这个新闻发布系统中,模型层主要负责新闻的存储和管理。可能...
<%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 用户登录 <s:textfield name="username" label="Username"></s:textfield> ...
<%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 用户登录 ``` 这里使用了Struts2的标签库来创建表单元素。 ##### 2.4 添加...
<%@ taglib prefix="s" uri="/struts-tags" %> <title>Bootstrap101 Template ;"> <div class="color1">8号仓库管理系统 <div class="color2"><h2>管理员注册</h2></div> ;"> ``` 以上是...
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> !"/> ${str} <h3><bean:write name="str"/> ``` - **说明**:`id`属性指定了存储对象的名称,而`value`属性则定义了该对象的初始值。...
为了解决代码重复的问题,提高代码复用性以及增强代码的可维护性,Struts框架提供了一种机制——自定义标签(Custom Tags)来帮助开发者解决这一问题。 #### 1.2 自定义标签的实现方式 在Struts中实现自定义标签...
首先,需要在Struts2项目中添加两个jar包,即commons-io-2.2.jar和commons-fileupload-1.3.1.jar。然后,在Struts2的配置文件struts.xml中,需要添加文件上传的配置信息。 在 Struts2 中,文件上传的示例代码如下:...
Struts is an MVC implementation that uses Servlets 2.2 and JSP 1.1 tags, from the J2EE specifications, as part of the implementation. You may never implement a system with Struts, but looking at ...
- **步骤2.2:** 将Struts框架所需的依赖库(例如 commons-*.jar 和 struts.jar)放置到`itstudy/WEB-INF/lib`目录中。 - **步骤2.3:** 将Struts框架的标签库文件(如 struts-*.tld)复制到`itstudy/WEB-INF/tld`...
<%@ taglib prefix="s" uri="/struts-tags" %> 登录页面 登录 用户名"/> 密码" type="password"/> 登录"/> ``` #### 2.2 控制器层(Controller) 控制器层由Struts2的Action类来实现。创建一个名为...
##### 2.2 创建ActionForm类 ActionForm类是Struts框架中用于封装用户表单数据的类。创建此类的具体步骤如下: - 使用快捷键`Ctrl + N`调出新建窗口,选择`MyEclipse/Web-Struts/Struts1.3Form` - 设置类名为`...
Section 2.2. Defining the Header and the Root Element Section 2.3. The Elements of web.xml Section 2.4. Assigning Names and Custom URLs Section 2.5. Disabling the Invoker Servlet Section 2.6. ...
Section 2.2. Defining the Header and the Root Element Section 2.3. The Elements of web.xml Section 2.4. Assigning Names and Custom URLs Section 2.5. Disabling the Invoker Servlet Section 2.6. ...