- 浏览: 190274 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (153)
- 小技巧 (14)
- spring (3)
- struts2 (20)
- hibernate (0)
- java api (2)
- java se (8)
- jsp/servlet (4)
- oracle (0)
- mysql (1)
- ms sqlserver (1)
- js (30)
- jquery (8)
- ajax (2)
- .net (1)
- 软件 (1)
- j2ee (25)
- 网址收藏 (3)
- web综合 (9)
- web打印控件 (3)
- fckeditor (2)
- Groovy (1)
- PHP (5)
- 项目管理 (1)
- SEO (1)
- PostgreSQL (5)
- CKeditor (1)
- Fusion chart (1)
- 网页播放器 (1)
- 曾遇bug (3)
- java日志 (1)
- linux/Unix/CentOs (5)
- VBA (1)
- C# (0)
- 日期控件 (1)
- tomcat (2)
- cookies (1)
- java7 (1)
- JAVA文件操作 (2)
- hibernate;ehcache (2)
- 缓存 (1)
- dd (0)
- DB (1)
- android (2)
最新评论
-
flyingbin:
沙发,不过从头到尾没怎么看懂~
Windows密码本地破解通用方法 -
jfeimao:
credentialsToPrincipalResolvers ...
CAS(单点登陆)---总结一 -
haige18:
这两张图片引用的是网易的地址,现在资源有可能被删除了,所以就显 ...
Struts2中的Value Stack/Stack Context -
fengzhisha0914:
我的图片也不显示了..为何...
Struts2中的Value Stack/Stack Context -
greatwqs:
java.lang.IllegalStateException ...
java.lang.IllegalStateException:Cannot forward after response has been committed
Struts 2.1 Tags
最近学习 Struts 2.1 Tags 做了些笔记,贴出来大家一起学习下,希望大家多多交流。
别的都不说了,我就贴代码,代码里注释比较详细,呵呵。
文件目录,如下:
index.jsp 代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="com.rao.bean.Sex"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sx" uri="/struts-dojo-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My page</title>
<s:head theme="xhtml"/>
<sx:head parseContent="true"/>
</head>
<body>
Struts 2.1 Tags
<br/>
<br/>
一、控制标签<br/><hr size="3" color="red">
#、if /elseif/ else @用于逻辑判断<br/>
<s:set name="bir" value="-12"></s:set>
<s:if test="#bir>=180 || #bir<0">
你是何方妖怪?
</s:if>
<s:elseif test="#bir<=18 && #bir>=0">
未成年人不能进入!
</s:elseif>
<s:elseif test="#bir<=60 && #bir>=18">
您已经成年!
</s:elseif>
<s:else>
您已经老了!
</s:else>
<br/>--------------------------------------------------------------<br/>
#、append @用于将多个集合合并<br/>
<s:set name="appList1" value="{'111','222','333','444'}"></s:set>
<s:set name="appList2" value="{'aaa','bbb','ccc','ddd'}"></s:set>
<s:append var="newAppList">
<s:param value="appList1"></s:param>
<s:param value="appList2"></s:param>
</s:append>
<s:iterator value="#newAppList">
<s:property/> |
</s:iterator>
<br/>--------------------------------------------------------------<br/>
#、generator <br/>
generator标签,该标签可以将指定字符串按指定分隔符分割成多个字串。生成的多个字串可以用iterator标签进行迭代输出。可以这么理解:generator标签将一个字符串转换成一个List集合。在该标签体内,整个临时生成的集合将为Valuestack的顶端,但一旦该标签结束,生成的集合将被移除Valuestack。generator标签有如下几个属性:
<br/>
1、count属性:指定生成集合中元素的总数。可选属性。<br/>
2、val属性:必填属性,指定被解析的字符串。<br/>
3、separator属性:这是一个必填属性,指定用于分割字符串的分隔符。<br/>
4、converter属性:可选属性,指定一个转换器,转换器负责将生成的集合中的每个字符串转换成对象,通过这个转换器可以将一个含有分隔符的字符串解析成对象的集合。转换器必须一个继承org.apache.struts2.util.IteratorGenerator.Converter的对象。
<br/>
5、var属性,可选属性。如果指定了该属性,则将生成的集合保存在Stack Context中。如果不指定该属性,则将生成的集合放入ValueStack的顶端,该标签一结束,生成的集合就被移除。该属性也可替换成id。
<br/>
<s:generator val="'aaa,bbb,ccc,ddd'" separator="," count="2">
<s:iterator>
<s:property/>
</s:iterator>
</s:generator><br/>
<br/>--------------------------------------------------------------<br/>
#、iterator 用于迭代数据<br/>
<s:set name="iterList" value="{'aaa','bbb','ccc','ddd'}"></s:set>
<table border="1">
<tr>
<td> 索引 </td>
<td> 值 </td>
<td> 奇? </td>
<td> 偶? </td>
<td> 首? </td>
<td> 尾? </td>
<td> 当前迭代数量 </td>
</tr>
<s:iterator value="{'aaa','bbb','ccc','ddd','eee','fff'}" begin="1" status="s">
<tr bgcolor="<s:if test="#s.odd">pink</s:if>">
<td><s:property value="#s.index"/></td>
<td><s:property/></td>
<td><s:property value="#s.even"/></td>
<td><s:property value="#s.odd"/></td>
<td><s:property value="#s.first"/></td>
<td><s:property value="#s.last"/></td>
<td><s:property value="#s.count"/></td>
</tr>
</s:iterator>
</table>
<br/>--------------------------------------------------------------<br/>
#、merge @和类似:用于将多个集合合并<br/>
<s:set name="merList1" value="{'111','222','333','444'}"></s:set>
<s:set name="merList2" value="{'aaa','bbb','ccc','ddd'}"></s:set>
<s:append var="newMerList">
<s:param value="merList1"></s:param>
<s:param value="merList2"></s:param>
</s:append>
<s:iterator value="#newMerList">
<s:property/> |
</s:iterator>
<br/>--------------------------------------------------------------<br/>
#、sort @用于排序<br/>
<s:bean var="myComparator" name="com.rao.comparator.MyComparator"></s:bean>
<s:sort comparator="#myComparator" source="{1,45,56,0,345,3}">
<s:iterator>
<s:property/>,
</s:iterator>
</s:sort>
<br/>--------------------------------------------------------------<br/>
#、subset @用户截取集合中的子集; 注:decider:可选属性,指定由开发者自己决定是否选中该元素.
<br/>
<s:set name="subList" value="{'@@@','***','&&&','###'}"></s:set>
<s:subset source="#subList" start="1" count="2">
<s:iterator>
<s:property/>,
</s:iterator>
</s:subset>
<br/>--------------------------------------------------------------<br/>
二、数据标签<br/>
<hr size="3" color="red">
#、action @用于导入一个Action<br/>
使用action标签,可以允许在jsp页面中直接调用Action,在调用Action时候,可以指定需要被调用的Action的name和namespace.如果指定了executeResult参数的属性值为true,该标签会把Action的处理结果(视图资源)包含到本页面中. 使用action标签指定属性有:
<br/>
id: 可选属性,作为该Action的引用ID <br/>
name:必选属性,指定调用Action <br/>
namespace:可选属性,指定该标签调用Action所属namespace <br/>
executeResult:可选属性,指定是否将Action的处理结果包含到本页面中.默认值为false,不包含. <br/>
ignoreContextParam:可选参数,指定该页面的请求参数是否需要传入调用的Action中,默认值是false,即传入参数.<br/>
s:param是以request方式的值的,而不是以参数传值,所以request.getParameter("")会获取不到值,通过request.getAttribute("")方式可以获取<br/>
<s:action name="tagsAction1" ignoreContextParams="true" executeResult="true" namespace="/com/rao">
<s:param name="userName" value="'三毛'"></s:param>
</s:action>
<br/>--------------------------------------------------------------<br/>
#、bean @用于导入一个javaBean,相当于:jsp:useBean 标签<br/>
<s:bean name="com.rao.bean.UserBean" var="user">
<s:param name="userId" value="1001"></s:param>
<s:param name="userName" value="'张三'"></s:param>
</s:bean>
userId:<s:property value="#user.userId"/><br>
userName:<s:property value="#user.userName"/>
<br/>--------------------------------------------------------------<br/>
#、date @用于格式化日期<br/>
<s:set name="dt" value="new java.util.Date()"></s:set>
当期系统时间是:<s:date name="dt" format="yyyy-MM-dd HH:ss:mm"/>
<br/>--------------------------------------------------------------<br/>
#、debug @用于调试程序,让开发人员一目了然的知道当前请求、值栈、栈中的各项参数<br/>
<s:debug/>
<br/>--------------------------------------------------------------<br/>
#、i18n @用于访问国际化资源文件的内容<br/>
1.默认访问全局范围内的资源文件;
<br>
<s:text name="welcome">
<s:param>三毛</s:param>
<s:param>学习</s:param>
</s:text>
<hr>
2.访问包范围内的资源文件;
<br>
<s:i18n name="com/rao/action/package">
<s:text name="welcome">
<s:param>三毛</s:param>
<s:param>学习</s:param>
</s:text>
</s:i18n>
<hr>
3.访问Action范围内的资源文件;
<br>
<s:i18n name="com/rao/action/GlobalNativeAction">
<s:text name="welcome">
<s:param>三毛</s:param>
<s:param>学习</s:param>
</s:text>
</s:i18n>
<br/>--------------------------------------------------------------<br/>
#、include @用于导入一个jsp文件,等同于:jsp:include标签<br/>
<s:include value="success.jsp"></s:include>
<br/>--------------------------------------------------------------<br/>
#、param @用于给指定参数设置值<br/>
<s:bean name="com.rao.bean.UserBean" var="user">
<s:param name="userId" value="1001"></s:param>
<s:param name="userName" value="'张三'"></s:param>
</s:bean>
userId:<s:property value="#user.userId"/><br>
userName:<s:property value="#user.userName"/>
<br/>--------------------------------------------------------------<br/>
#、property @输出结果,很像EL表达式,但是可以依托于OGNL表带是很强大<br/>
同上
<br/>--------------------------------------------------------------<br/>
#、push @该标签可以把程序员在ActionContext中引用的对像压入valuestack中,为以后访问对象提供了方便<br/>
<s:push value="#request.user"><s:property value="userName"/></s:push>
<br/>--------------------------------------------------------------<br/>
#、set @用户声明对象或属性<br/>
<s:set name="uName" value="#request.user.userName"></s:set>
<s:property value="#uName"/>,你好啊!
<br/>--------------------------------------------------------------<br/>
#、text @用户获取国际化资源文件的内容<br/>
请参考 il8n标签
<br/>--------------------------------------------------------------<br/>
#、url @用于组拼一个请求路径<br/>
<s:url var="url1" action="MyAction" method="add">
<s:param name="id" value="%{23}"></s:param>
<s:param name="name" value="%{'tom'}"></s:param>
</s:url>
<s:property value="#url1"/>
<br/>
注意:<br/>
<s:set name="myurl" value="'http://www.baidu.com'"></s:set>
value以字符处理: <s:url value="#myurl"></s:url><br>
value明确指定以ognl表达式处理: <s:url value="%{#myurl}"></s:url>
<br/>--------------------------------------------------------------<br/>
三、UI标签<br/>
<hr size="3" color="red">
<s:form>
#、checkboxlist @复选框列表<br>
1> .list 生成;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
name:checkboxlist的名字<br>
list:checkboxlist要显示的列表<br>
value:checkboxlist默认被选中的选项,checked=checked<br>
<s:checkboxlist theme="simple" name="checkbox1" list="{'上网','看书','爬山','游泳','唱歌'}" value="{'上网','看书'}" ></s:checkboxlist>
<br>
2> .Map 生成;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
name:checkboxlist的名字<br>
list:checkboxlist要显示的列表<br>
listKey:checkbox 的value的值<br>
listValue:checkbox 的lablel(显示的值)<br>
value:checkboxlist默认被选中的选项,checked=checked<br>
<s:checkboxlist theme="simple" name="checkbox2" list="#{1:'上网',2:'看书',3:'爬山',4:'游泳',5:'唱歌'}" listKey="key" listValue="value" value="{1,2,5}" ></s:checkboxlist>
<br/>--------------------------------------------------------------<br/>
#、combobox <br/>
<s:combobox theme="simple" label="选择你喜欢的颜色" name="colorNames" headerValue="------请选择------" headerKey="1" list="{'红','橙','黄','绿','青','蓝','紫'}" />
<br/>--------------------------------------------------------------<br/>
#、radio @单选框<br/>
<%
Sex sex1 = new Sex(1,"男");
Sex sex2 = new Sex(2,"女");
List<Sex> list = new ArrayList<Sex>();
list.add(sex1);
list.add(sex2);
request.setAttribute("sexs",list);
%>
这个与checkboxlist差不多;<br>
1>.如果集合为javabean:<s:radio theme="simple" name="sex" list="#request.sexs" listKey="id" listValue="name"></s:radio><br>
2>.如果集合为list:<s:radio theme="simple" name="sexList" list="{'男','女'}"></s:radio><br>
3>.如果集合为map:<s:radio theme="simple" name="sexMap" list="#{1:'男',2:'女'}" listKey="key" listValue="value"></s:radio><br>
<hr>
<br/>--------------------------------------------------------------<br/>
#、select @下拉列表框<br/>
这个与s:checkboxlist差不多;<br>
1>.如果集合为javabean:<s:select theme="simple" name="sex" list="#request.sexs" listKey="id" listValue="name"></s:select><br>
2>.如果集合为list:<s:select theme="simple" name="sexList" list="{'男','女'}"></s:select><br>
3>.如果集合为map:<s:select theme="simple" name="sexMap" list="#{1:'男',2:'女'}" listKey="key" listValue="value"></s:select><br>
<br/>--------------------------------------------------------------<br/>
#、doubleselect @级联菜单 <br/>
<!-- 可以用直接指定,当然也可以跟数据库绑定的 -->
<s:set name="proviList" value="{'江西省','湖北省'}"></s:set>
<s:set name="jxList" value="{'南昌市','赣州市','九江市','上饶市','鹰潭市'}"></s:set>
<s:set name="hbList" value="{'武汉市','恩施市','十堰市','荆州市','襄樊市'}"></s:set>
<s:doubleselect theme="simple" name="provi" doubleList="top=='江西省' ? #jxList : #hbList" list="#proviList" doubleName="city"></s:doubleselect>
<br/>--------------------------------------------------------------<br/>
#、optiontransferselect <br/>
<s:optiontransferselect theme="simple" label="change" name="abc" doubleList="{'111','222','333','444'}" list="{'aaa','bbb','ccc','ddd'}" doubleName="number"></s:optiontransferselect>
<br/>--------------------------------------------------------------<br/>
#、updownselect @可上下选择的select <br/>
<s:updownselect label="selectCity" emptyOption="true" name="selectCity" list="#jxList" headerValue="-Please Select The City-" headerKey="-1"></s:updownselect>
<br/>--------------------------------------------------------------<br/>
#、sx:datetimepicker @日期选择控件 <br/>
使用步骤:声明:我这里用的是strut 2.1.8.1,在struts2.0的版本中可能有所不同;<br/>
1.导入struts2-dojo-plugin-2.1.8.1.jar DoJo 插件包;<br/>
2. 导入标签:<%--@ taglib prefix="sx" uri="/struts-dojo-tags"--%>;<br/>
3.在需要使用的页面中的head标签之间加上<%-- <sx:head parseContent="true"/> --%>;<br/>
<sx:datetimepicker label="birthday" name="bir" value="#dt"></sx:datetimepicker>
<br/>--------------------------------------------------------------<br/>
#、sx:tabbedpanel @选项卡控件 <br/>
声明:这个标签代码转至:http://blog.sina.com.cn/s/blog_6145ed810100ecud.html,版权归作者所有;写的挺好拿来大家共同学习。
<!-- tabbedpanel标签 -->
<!-- 最简单的选项卡,两个选项卡加载都是本页面 -->
<hr color="blue">
<b>最简单的选项卡:</b>
<br>
<sx:tabbedpanel id="tab1" beforeSelectTabNotifyTopics="/beforeSelect">
<sx:div label="Tab 1" >
Local Tab 1
</sx:div>
<sx:div label="Tab 2" >
Local Tab 2
</sx:div>
</sx:tabbedpanel>
<!-- 加载其他页面的选项卡 -->
<hr color="blue">
<b>加载其他页面的选项卡:</b>
<br>
<sx:tabbedpanel id="tab2">
<sx:div label="Remote Tab 1" href="upload.jsp">
Remote Tab 1
</sx:div>
<sx:div label="Remote Tab 2" href="multipleUpload.jsp" >
Remote Tab 1
</sx:div>
</sx:tabbedpanel>
<!-- 设置选项卡底下的内容懒加载,即等需要的时候再加载,使用属性preload="false"-->
<hr color="blue">
<b>设置选项卡底下的内容懒加载,即等需要的时候再加载,使用属性preload="false":</b>
<br>
<sx:tabbedpanel id="tab3">
<sx:div label="Remote Tab 1" href="upload.jsp">
Remote Tab 1
</sx:div>
<sx:div label="Remote Tab 2" href="multipleUpload.jsp" preload="false">
Remote Tab 1
</sx:div>
</sx:tabbedpanel>
<!-- 固定大小的选项卡 -->
<hr color="blue">
<b>固定大小的选项卡,使用属性cssStyle和doLayout:</b>
<br>
<sx:tabbedpanel cssStyle="width: 200px; height: 100px;" doLayout="true" id="tab4">
<sx:div label="Tab 1" >
Local Tab 1
</sx:div>
<sx:div label="Tab 2" >
Local Tab 2
</sx:div>
</sx:tabbedpanel>
<!-- 每次点击选项卡时都重新刷新内容 -->
<hr color="blue">
<b>每次点击选项卡时都重新刷新内容,使用属性refreshOnShow:</b>
<br>
<sx:tabbedpanel id="tab5">
<sx:div label="Remote Tab 1" href="upload.jsp" refreshOnShow="true">
Remote Tab 1
</sx:div>
<sx:div label="Remote Tab 2" href="multipleUpload.jsp" refreshOnShow="true">
Remote Tab 2
</sx:div>
</sx:tabbedpanel>
<!-- 使得其中一个选项卡失效 -->
<hr color="blue">
<b>使得其中一个选项卡失效:</b>
<br>
<sx:tabbedpanel id="tab6">
<sx:div label="Tab 1" >
Local Tab 1
</sx:div>
<sx:div label="Tab 2" disabled="true">
Local Tab 2
</sx:div>
</sx:tabbedpanel>
<!-- 设置选项卡在底部显示 (可以是: top, right, bottom, left) -->
<hr color="blue">
<b>设置选项卡在底部显示 (可以是: top, right, bottom, left):</b>
<br>
<sx:tabbedpanel id="tab7" labelposition="bottom" cssStyle="width:200px;height:100px;" doLayout="true">
<sx:div label="Tab 1" >
Local Tab 1
</sx:div>
<sx:div label="Tab 2" >
Local Tab 2
</sx:div>
</sx:tabbedpanel>
<!-- 设置选项卡允许关闭,使用属性closeable -->
<hr color="blue">
<b>设置选项卡允许关闭,使用属性closeable:</b>
<br>
<sx:tabbedpanel id="tab8">
<sx:div label="Tab 1" >
Local Tab 1
</sx:div>
<sx:div label="Tab 2" closable="true">
Local Tab 2
</sx:div>
</sx:tabbedpanel>
<br/>--------------------------------------------------------------<br/>
#、sx:textarea @textarea控件 <br/>
<sx:textarea label="简介" value="sx:textareasx:textareasx:<br/>textareasx:textareasx:textareasx:<br/>textareasx:textareasx:<br/>textareasx:textarea"></sx:textarea>
<br/>--------------------------------------------------------------<br/>
#、sx:tree @树控件 <br/>
<sx:tree id="tree1" label="根节点">
<sx:treenode id="tn1" label="财务部" />
<sx:treenode id="tn2" label="开发部">
<sx:treenode id="tn3" label="JAVA" />
<sx:treenode id="tn4" label=".NET" />
</sx:treenode>
<sx:treenode id="tn5" label="人事部" />
</sx:tree>
</s:form>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "struts-2.1.7.dtd" > <struts> <constant name="struts.custom.i18n.resources" value="struts2"></constant> <constant name="struts.configuration.xml.reload" value="true"></constant> <package name="package1" namespace="/com/rao" extends="struts-default"> <action name="tagsAction1" class="com.rao.action.TagsAction1"> <result>/success.jsp</result> </action> </package> </struts>
package com.rao.action; import com.opensymphony.xwork2.ActionSupport; public class TagsAction1 extends ActionSupport { private String userName; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } @Override public String execute() throws Exception { return SUCCESS; } }
package com.rao.action; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; /** * 演示的是在Action 中获取国际化资源文件中的内容 * @author Administrator * */ public class GlobalNativeAction extends ActionSupport { @Override public String execute() throws Exception { //不带有占位符的获取方法 //ActionContext.getContext().put("message", this.getText("welcome")); //带有占位符的获取方法 ActionContext.getContext().put("message", this.getText("welcome",new String[]{"raozhiyong","study"})); return "message"; } }
struts2_zh_CN.properties
welcome | 全局范围:{0},这是一个中文的国际化资源文件,欢迎你的使用{1}!!! |
GlobalNativeAction_zh_CN.properties
welcome | Action范围:{0},这是一个中文的国际化资源文件,欢迎你的使用{1}!!! |
package_zh_CN.properties
welcome | package范围:{0},这是一个中文的国际化资源文件,欢迎你的使用{1}!!! |
Sex.java
package com.rao.bean; public class Sex { private int id; private String name; public Sex(int id, String name) { super(); this.id = id; this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
UserBean.java
package com.rao.bean; import java.io.Serializable; public class UserBean implements Serializable{ private static final long serialVersionUID = 1L; public UserBean() {} private Integer userId; private String userName; public Integer getUserId() { return userId; } public void setUserId(Integer userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } }MyComparator.java
package com.rao.comparator; import java.util.Comparator; public class MyComparator implements Comparator<Integer> { public int compare(Integer o1, Integer o2) { int c = o1.compareTo(o2); return c;//可以完成顺序排序 //return -c;//可以完成倒序排序 } }运行结果,附上图片:
来自:http://www.iteye.com/topic/655025
- Struts2-Tags.zip (4.6 MB)
- 下载次数: 1
发表评论
-
简述Struts2 Convention零配置
2012-07-05 13:24 806从struts2.1开始,struts2不再推荐使用Cod ... -
org.apache.catalina.connector.ClientAbortException
2012-04-27 11:37 10626当我们用Servlet导出图片,或用JSP导出excel时,会 ... -
jsp与Struts2有关跳转兼容性问题的解决方案
2011-03-23 13:22 985最近项目中遇到一个问题: 浏览器地址栏输入域名进入目标网页 ... -
spring+struts+hibernate分页实例
2010-11-22 10:58 875http://ajava.org/code/ssh/16733 ... -
在J2EE系统中应用OSCache 带附件jar包等
2010-10-30 18:51 774文章摘要 Cache是一种用于提高系统响应速度、 ... -
OSCache使用介紹
2010-10-30 18:47 842OSCache使用介紹 一.OSCach ... -
Struts2中的Value Stack/Stack Context
2010-10-30 14:39 2054Value stack栈中的值: 每一个动作在执行相应方 ... -
Log4j使用总结
2010-10-29 11:03 622一、介绍 Log4j是Apache的 ... -
struts2.1.8 hibernate3.3.2 spring2.5 整合需要哪些jar包
2010-10-28 16:07 894struts2 commons-logging-1.0. ... -
URLRewriter实现伪静态
2010-10-27 21:53 1196URLREwriter组件 下载地址:http://www. ... -
生成静态页面
2010-10-27 21:50 927常见的分类信息首页, ... -
struts2 文件上传
2010-10-27 21:43 922实现原理 Struts 2是通过Commons FileUp ... -
strut2 多文件上传
2010-10-27 21:35 891参照上一篇博文《strut2 文件上传》,多文件上传只需要将属 ... -
struts2.1 datetimepicker日期控件的使用
2010-10-27 21:33 951官方参考文档:http://str ... -
struts2 配置json
2010-10-27 21:26 903一、导入所需包,包括Struts2所需的各jar包,再导入st ... -
struts2 dojo 实现动态树
2010-10-27 21:23 13771.首先写两个工具类:TreeData.java 和 Tree ... -
基于Struts 2 Ajax实现的Login应用
2010-10-27 12:58 837Struts 2内嵌了Dojo工具包,实现对Ajax的支持。下 ... -
史上最详细的struts 2 标签整理
2010-10-27 12:53 872a a标签创建一个HTML超链接,等价于HTML ... -
struts2 tree 标签
2010-10-27 10:15 2616struts2里面使用 tree标签 需要导入包:struts ...
相关推荐
- **第9章Struts2的标签库**:详细说明Struts2提供的自定义标签,这些标签能够简化页面元素的渲染过程。 - **第10章Struts2的拦截器**:介绍拦截器的作用、配置方式以及自定义拦截器的开发方法。 - **第11章Struts2...
Struts2.1配置是Java Web开发中一个关键步骤...总的来说,Struts2.1的配置涉及到Web应用的结构、配置文件、Action类、表单类、JSP页面和标签库的综合运用。理解并正确配置这些元素是构建有效、高效Struts2应用的基础。
以下是对"struts 2.1常用6个jar包"的详细说明: 1. **struts2-core.jar**:这是Struts 2的核心库,包含了框架的主要组件,如Action类、Result类、Interceptor拦截器接口、ValueStack等。这个JAR包是所有Struts 2...
5.7 Struts2自定义标签实现图形验证功能 121 第6章 Struts2非JSP视图技术 125 6.1 velocity视图技术使用介绍 125 6.2 freemarker视图技术使用介绍 128 6.3 JasperReports报表视图技术使用介绍 130 第7章 Struts2类型...
"Struts2 实现分页(网址,文章收藏) - 平静的影子 - 博客园.htm"和"struts标签实现博客园的分页 - 垚淼 - 博客园.htm"这两篇文章可能详细解释了如何通过Struts2的控制器和视图层实现这一功能,包括传递参数、计算页码...
- **3.8 Struts简单例子的分析(含代码注释和配置文件说明)** - 提供了一个简单的Struts示例,并对其代码和配置文件进行了详细解释。 - **3.9 本章小结** #### 第4章 配置Struts组件 - **4.1 Web应用部署描述符*...
至于Struts2.0和Struts2.1的区别,虽然这里没有具体说明,但通常更新版本会修复已知问题,增加新功能,提高性能,并可能引入一些不向后兼容的变化。例如,从Struts2.0到Struts2.1可能会改进Action的生命周期,增强...
- `freemarker-2.x.x.jar`:Struts 2 UI 标签的模板引擎。 - `commons-logging-1.1.x.jar`:Apache Software Foundation 提供的日志包,Struts 2 使用它来支持 Log4J 和 JDK 日志记录。 - `commons-fileupload-1....
本文主要针对从旧版本Struts2框架升级至2.5.16版本时可能遇到的各种问题进行详细介绍,并给出相应的解决方案。这包括了jar包的替换与引入、配置文件的调整、代码层面的改动等内容。 #### 二、Jar包替换与引入 ####...
在CHM文件`struts2-API.chm`中,开发者可以找到上述所有概念的详细说明,包括每个类的构造函数、方法、属性以及它们的使用示例。这将极大地提高开发效率,帮助开发者更好地理解和运用Struts2框架。通过深入学习和...
从Struts2.1版本开始,可以使用`@Converter`注解直接在Action类或字段上声明自定义的转换器,简化了配置过程。 5. **类型转换的执行顺序**: - 先尝试使用字段上的注解声明的转换器。 - 如果注解不存在,会查找...
#### Struts2.1.8.1 Struts2是一个基于MVC设计模式的Java Web应用框架。它提供了丰富的标签库和强大的插件系统,能够极大地简化Web应用的开发过程。Struts2与Spring框架集成后,可以更好地管理业务逻辑和Web层之间的...
3. **配置文件编写**:按照上述说明编写 `web.xml` 和 `struts.xml`。 4. **业务逻辑实现**:编写具体的业务逻辑代码,如 Action 类、DAO 层等。 5. **单元测试**:编写测试用例,确保各部分功能正常运行。 6. **...
本文详细介绍了如何在Struts2框架中实现动态树型结构的构建,包括后端代码的设计与实现、前端页面的布局与交互逻辑。通过这些技术点的学习,开发者可以更好地理解和应用Struts2框架来开发具有复杂数据展示需求的应用...
在提供的压缩包中,"Struts2 2.1.8.1Basic-Spring2.5.6.SEC01-Hibernate3-MySql5-NetBeans6.9.1"应该包含了完成这个整合实例所需的所有文件,包括源码、配置文件、数据库脚本等。使用NetBeans 6.9.1或导入到...
书中详细介绍了如何将 Struts 框架应用于实际的 Web 应用开发过程中,包括但不限于:如何使用 Struts 的 MVC 架构来组织代码,如何利用其内置的标签库简化页面开发等。 #### 1.1.5 再看看 这部分内容可能是指对 ...
### Struts标签、动态ActionForm、上传组件及Struts验证框架知识点详解 #### 一、Struts标签 **Struts** 是一款基于 **MVC**(Model-View-Controller)设计模式的开源Java Web框架,它能够帮助开发者构建可扩展且...