- 浏览: 517150 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (278)
- java (41)
- 设计模式 (4)
- sql (10)
- webservice (2)
- spring (9)
- struts (6)
- struts2 (32)
- hibernate (27)
- Struts_hibernate_Spring整合 (4)
- Velocity (1)
- Servlet (9)
- JSP (6)
- javascript (19)
- jquery (10)
- ajax (4)
- html、xml (3)
- JDBC (2)
- JDK (6)
- mysql (2)
- oracle (11)
- SqlServer (1)
- DB2 (4)
- tool (7)
- linux (5)
- UML (1)
- eclipse (8)
- 执行文件 (1)
- 应用服务器 (4)
- 代码重构 (1)
- 日本語 (19)
- 交规 (1)
- office (9)
- firefox (1)
- net (1)
- 测试 (1)
- temp (6)
- 对日外包 (1)
- windows (1)
- 版本控制 (1)
- android (2)
- 项目管理 (1)
最新评论
5.4 tabbedpanel 标签
以下代码都基于 5.2
<sx:tabbedpanel /> 标签在 HTML 页面里面生成类似 Windows 程序的 Tab 页,通过使用 Tab 页,可以在有限的空间里放置更多的内容。
<sx:tabbedpanel /> 生成 Tab 页的内容既可以是静态的,也可以是动态的 。如果是静态的,则直接指定 Tab 页面的内容;如果是动态的,则可以采用 Ajax 方式来动态加载 Tab 页的内容。
<sx:tabbedpanel /> 标签生成整个 Tab 框架,而 <sx:tabbedpanel /> 里的 <sx:div /> 子标签则生成单独的 Tab 页,每个 <sx:div /> 子标签生成一个 Tab 页。因为 <sx:div /> 标签本身是一个 ajax 标签,允许内容动态改变,因此,每个 Tab 页的内容可以动态改变。
使用 <sx:tabbedpanel /> 标签可以指定如下几个常用属性。
● closeButton
: 指定 Tab 页上关闭按钮的位置,可能的值是 tab 和 pane
● selectedTab
: 指定加载该页面时选择哪个 Tab 页面,默认选择第一个 Tab 页
● doLayout
: 设置 tabbedpanel 是否为显示固定高度,如果该属性设置为 fasle ,则 tabbedpanel 的高度会随 Tab 页大小的改变而改变
● labelposition : 设置 Tab 页面中标签的位置,可以是 top(顶,默认) 、right、bottom、left
下面的简单实例包含了 2 个 tab,都是静态文本:
/dojo/sx-tabbedpanel1.jsp
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> <%@ taglib prefix="s" uri="/struts-tags" %> <%@ taglib prefix="sx" uri="/struts-dojo-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>tabbled panel示例:简单tabbled panel</title> <sx:head/> </head> <body> 简单Tab页面,doLayout属性设置是否使用固定高度<br/> <sx:tabbedpanel id="tab1" cssStyle="width: 400px; height: 240px;" doLayout="true"> <sx:div id="left" label="第一个Tab页" > 疯狂Java讲义<br/> 轻量级Java EE企业实战<br/> 疯狂Ajax讲义<br/> </sx:div> <sx:div id="middle" label="第二个Tab页"> <h3>作者简介</h3> 作者曾任广州电信、广东龙泉科技等公司的技术培训导师,<br/> 现任新东方IT培训广州中心软件教学总监,并兼任 广东技术师范学院计算机科学系的兼职副教授。<br/> 现居在广州,如果读者阅读本书有任何问题,都可以发邮件给我。<br/> </sx:div> </sx:tabbedpanel> </body> </html>
如果希望 tab
页面上 增加关闭按钮(当浏览者单击关闭按钮时,将可以关闭指定 tab
页)
,则可以为 tabbedpanel
标签指定 closeButton
属性,如果同时指定了 labelposition
属性,则还可以设置 tab
中按钮的位置,如下:
/dojo/sx-tabbedpanel2.jsp
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> <%@ taglib prefix="s" uri="/struts-tags" %> <%@ taglib prefix="sx" uri="/struts-dojo-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>tabbled panel示例:带关闭按钮的tabbled panel</title> <sx:head/> </head> <body> 设置关闭按钮(通过设置closeButton="pane")<br/> 设置标签位于Tab页的下面(通过设置labelposition="bottom")<br/> <sx:tabbedpanel id="tab1" cssStyle="width: 400px; height: 240px;" doLayout="true" closeButton="pane" labelposition="bottom"> <sx:div id="left" label="第一个Tab页" > 疯狂Java讲义<br/> 轻量级Java EE企业实战<br/> 疯狂Ajax讲义<br/> </sx:div> <sx:div id="middle" label="第二个Tab页"> <h3>作者简介</h3> 作者曾任广州电信、广东龙泉科技等公司的技术培训导师,<br/> 现任新东方IT培训广州中心软件教学总监,并兼任 广东技术师范学院计算机科学系的兼职副教授。<br/> 现居在广州,如果读者阅读本书有任何问题,都可以发邮件给我。<br/> </sx:div> </sx:tabbedpanel> </body> </html>
除此之外,tabbedpanel 也支持在 tab 页中使用动态内容,在 tab 页中使用动态内容有 2 种方式:
● 直接为 tabbedpanel
标签的子标签 <sx:div />
指定 href
属性
● 在 tabbedpanel 标签的子标签 <sx:div /> 中再次使用 <sx:div /> 子标签。这种方式下,可以实现动态更新 tab 页的部分内容。
实际上,对于 tabbedpanel 的每个 tab 页而言,都只是一个简单的容器,用于包含其他的 HTML 组件,至于该容器中的 HTML 组件则任由开发者自由发挥。
如下:
/dojo/sx-tabbedpanel3.jsp
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> <%@ taglib prefix="s" uri="/struts-tags" %> <%@ taglib prefix="sx" uri="/struts-dojo-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>包含动态内容的Tab页</title> <sx:head/> </head> <body> <sx:tabbedpanel id="tabbedpanel" cssStyle="width:520px; height: 240px;" doLayout="true"> <!-- 直接指定子div标签的href属性,让该Tab页内容整体改变 --> <sx:div id="panel1" label="动态Tab页面一" href="ajaxTest.action"/> <sx:div id="panel2" label="动态Tab页面二"> <h2>您最喜欢的图书:</h2> <!-- 在子div标签内使用div子标签,让Tab页的部分内容改变 --> <sx:div id="panel21" href="ajaxTest.action" updateFreq="1000"/> </sx:div> <sx:div id="panel3" label="静态Tab页面"> <h3>作者简介</h3> 作者曾任广州电信、广东龙泉科技等公司的技术培训导师,<br/> 现任新东方IT培训广州中心软件教学总监,并兼任广东技术 师范学院计算机科学系的兼职副教授。<br/> 现居在广州,如果读者阅读本书有任何问题,都可以发邮件给我。<br/> </sx:div> <!-- 包含表单的Tab页面 --> <sx:div id="panel4" label="包含远程表单的Tab页"> <div id='show' style="border:2px dotted black;width:240px;height:50px">原始静态文本</div> <s:form action='showPerson' method='post'> <s:textfield name="name" label="姓名"/><br/> <s:textfield name="age" label="年龄"/><br/> <!-- 指定异步提交表单 --> <sx:submit value="提交" targets="show"/> </s:form> </sx:div> </sx:tabbedpanel> </body> </html>
单击 第 4 个 tab ,可以看到一个异步表单,在该表单中,输入字符串,然后单击“提交”按钮,内容会在上方显示
在 tab 页 可以使用 HTML 和 Struts 2 标签
struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.2.dtd"> <struts> <constant name="struts.custom.i18n.resources" value="messageResource"/> <constant name="struts.i18n.encoding" value="GBK"/> <package name="js.dojo" extends="struts-default"> <action name="random" class="js.dojo.RandomAction"> <result>/dojo/randomStr.jsp</result> </action> <!-- 配置ajaxText Action --> <action name="ajaxTest" class="js.dojo.AjaxTestAction"> <result>/dojo/ajaxResult.jsp</result> </action> <action name="test"> <result>/dojo/testjs.jsp</result> </action> <action name="books"> <result>/dojo/data_zh_CN</result> </action> <action name="getBooks" class="js.dojo.GetBooksAction"> <result>/dojo/books.jsp</result> </action> <action name="showPerson" class="js.dojo.ShowPersonAction"> <result>/dojo/showPerson.jsp</result> </action> <action name="getChild" class="js.dojo.GetChildNode"> <result>/dojo/bookNode.jsp</result> </action> <action name=""> <result>.</result> </action> </package> </struts>
AjaxTestAction.java
package js.dojo; import com.opensymphony.xwork2.ActionSupport; public class AjaxTestAction extends ActionSupport { private static int counter = 0; // 封装请求参数的属性 private String data; public long getServerTime() { return System.currentTimeMillis(); } public int getCount() { return ++counter; } // data属性的setter和getter方法 public void setData(String data) { // 将Dojo的请求参数转换成正常字符 this.data = HTMLDecoder.decode(data); } public String getData() { return "服务器提示:" + this.data; } }
ShowPersonAction.java
package js.dojo; import com.opensymphony.xwork2.ActionSupport; public class ShowPersonAction extends ActionSupport { private String name; private int age; // name属性的setter和getter方法 public void setName(String name) { this.name = HTMLDecoder.decode(name); } public String getName() { return this.name; } // age属性的setter和getter方法 public void setAge(int age) { this.age = age; } public int getAge() { return this.age; } }
HTMLDecoder.java
package js.dojo; public class HTMLDecoder { public static String decode(String str) { // 获取字符串中所有数字 String[] tmp = str.split(";&#|&#|;"); StringBuffer sb = new StringBuffer(""); // 处理每个tmp数组中每个字符串元素 for (int i = 0; i < tmp.length; i++) { // 如果该元素是5位数字,将其转换成非西欧字符 if (tmp[i].matches("\\d{5}")) { sb.append((char) Integer.parseInt(tmp[i])); } // 对于普通字符 else { sb.append(tmp[i]); } } return sb.toString(); } }
/dojo/showPerson.jsp
<%@ page contentType="text/html;charset=GBK" language="java" %> <%@ taglib prefix="s" uri="/struts-tags" %> <% request.setAttribute("decorator", "none"); response.setHeader("Cache-Control","no-cache"); //HTTP 1.1 response.setHeader("Pragma","no-cache"); //HTTP 1.0 response.setDateHeader ("Expires", 0); //prevents caching at the proxy server %> 您提交的姓名:<s:property value="name"/><br/> 您提交的年纪:<s:property value="age"/><br/>
/dojo/ajaxResult.jsp
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> <%@ taglib prefix="s" uri="/struts-tags" %> <% request.setAttribute("decorator", "none"); //阻止浏览器缓存 response.setHeader("Cache-Control","no-cache"); //HTTP 1.1 response.setHeader("Pragma","no-cache"); //HTTP 1.0 response.setDateHeader ("Expires", 0); %> 服务器计数器: <s:property value="count"/><br/> 当前时间是:<s:property value="serverTime"/><br/> 服务器返回的提示是:<s:property value="data"/>
index.jsp
<s:a href="" onclick="newWin('dojo/sx-tabbedpanel1.jsp');" cssStyle="cursor: hand;">sx-tabbedpanel1.jsp</s:a> <s:a href="" onclick="newWin('dojo/sx-tabbedpanel2.jsp');" cssStyle="cursor: hand;">sx-tabbedpanel2.jsp</s:a> <s:a href="" onclick="newWin('dojo/sx-tabbedpanel3.jsp');" cssStyle="cursor: hand;">sx-tabbedpanel3.jsp</s:a>
5.5 datetimepicker 标签
以下代码都基于 5.2
datetimepicker 标签生成一个日期、时间下拉选择框。
系统将指定日期、时间输入指定文本框时,必须转换成日期、时间字符串,为了设置该字符串的格式,必须使用日期、时间的格式符。
datetimepicker
支持如下几个格式:
● d
: 指定处于当月的第几日
● D
: 指定处于当年的第几天
● M
: 代表月份。使用 1~2 个 M 代表数字月份。使用 3个 M 代表月份缩写,例如 Jan。 4 个 M 则代表月份全拼
● y
: 代表年份。可使用 yy 或 yyyy 的形式
● h
: 代表 12 时制的小时
● H
: 代表 24 时制的小时
● m
: 代表分钟
● s
: 代表秒钟
使用该标签时,有如下几个常用属性:
● displayFormat
: 指定日期的显示格式,例如: dd/MM/yyyy
● displayWeeks
: 指定该日历能显示星期数
● endDate
: 指定日期集的最后可用日期。 如 2141-10-12,一旦指定了该日期,则后面的日期不可用
● formatLength
: 指定日期显示的格式,这些格式值就是 DateFormat 中的格式,该属性支持的值有 long、short、medium、full
● language
: 指定日期显示的 Locale,如需要指定简体中文,则 zh_CN
● startDate
: 指定日期集的开始可用日期。如 1940-10-10,一旦指定了该日期,则前面的日期不可用
● toggleDuration
: 指定日期选择框出现、隐藏的切换时间
● toggleType
: 指定日期选择框出现、隐藏的方式,可以选择 plain、wipe、explode、fade
● type
: 指定日期选择框的类型,支持的值有 date 和 time ,分别代表日期选择框、时间选择框
● value
: 指定当前日期、时间。可使用 today 来表示今天
● weekStartsOn
: 指定日期选择框中哪一天才是一周的第一天。周日是 0,周六是 6
dojo/sx-datetimepicker.jsp
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> <%@ taglib prefix="s" uri="/struts-tags" %> <%@ taglib prefix="sx" uri="/struts-dojo-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>使用sx:datetimepicker生成日期选择框</title> <sx:head/> </head> <body> <h3>使用使用sx:datetimepicker生成日期选择框</h3> <s:form theme="simple"> 日期选择部件,指定toggleType属性,且指定value="today"<br/> <sx:datetimepicker name="date1" label="购买日期" toggleType="explode" value="today"/> <hr/> 日期选择部件,指定了format属性<br/> <sx:datetimepicker name="date2" label="购买日期" displayFormat="yyyy年MM月dd日"/> <hr/> 日期选择部件,指定了weekStartsOn属性<br/> <sx:datetimepicker name="date3" label="购买日期" displayFormat="yyyy年MM月dd日" weekStartsOn="2"/> <hr/> 时间选择部件<br/> <sx:datetimepicker name="start" label="选择出发时间" type="time" value="13:00"/> </s:form> </body> </html>
5.6 tree 和 treenode
以下代码都基于 5.2
我们可以通过 <sx:tree /> 和 <sx:treenode /> 标签在页面中生成树形结构,其中 <sx:tree/>标签生成一个树形结构,<sx:treenode/>生成一个树节点
对于<sx:tree/> 和 <sx:treenode/> 标签,都可指定如下 2 个基本属性:
● label
: 指定树节点的标题
● labelposition : 指定树节点的标题位于树节点的哪个位置,该属性支持 left 和 top 2 个属性值
下面页面代码使用 <sx:tree> 和 <sx:treenode> 标签创建了一颗简单的静态树:
dojo/sx-tree1.jsp
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> <%@ taglib prefix="s" uri="/struts-tags" %> <%@ taglib prefix="sx" uri="/struts-dojo-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>使用sx:tree和sx:treenode标签生成静态树</title> <sx:head/> </head> <body> <h3>使用sx:tree和sx:treenode标签生成静态树</h3> <!-- 使用sx:tree生成树 --> <sx:tree label="计算机图书" id="book" showRootGrid="true" showGrid="true" > <!-- 每个sx:treenode生成一个树节点 --> <sx:treenode label="李刚" id="yeeku"> <!-- 使用sx:treenode生成下一级的子节点 --> <sx:treenode label="疯狂Java讲义" id="java"/> <sx:treenode label="轻量级Java EE企业应用实战" id="jee"/> <sx:treenode label="疯狂Ajax讲义" id="ajax" required="true"/> </sx:treenode> <sx:treenode label="David" id="David"> <sx:treenode label="JavaScript: The Definitive Guide" id="javascript"/> </sx:treenode> <sx:treenode label="Johnson" id="Johnson"> <sx:treenode id="j2ee" label="Expert One-on-One J2EE Design and Development"/> </sx:treenode> </sx:tree> </body> </html>
从上面代码中可以看出该树的每个节点前都有一个表示该节点展开/收缩状态的图标,可以通过为 <sx:tree> 标签设置如下 2 个属性来改变这 2 个图标:
● expandIconSrcMinus :指定表示树节点处于展开状态的图标的地址。
● expandIconSrcPlus :指定表示树节点处于收缩状态的图标的地址。
为了实现动态加载树节点,必须为 <sx:tree> 标签指定 href 属性,该属性负责为指定节点加载子节点。每当浏览器试图展开某个节点时,系统向 href 指定的 URL 发送异步请求,该请求包含一个请求参数: nodeId ,该参数的值就是该节点的 id 属性值。
服务器应该送回如下格式的响应:
[ {"id":"李刚","label":"李刚"}, {"id":"Johnson","label":"Johnson"} ]
上面响应中将生成 2 个子节点,每个节点的 id 和 label 对应上面的 id 和 label
dojo/sx-tree2.jsp
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> <%@ taglib prefix="s" uri="/struts-tags" %> <%@ taglib prefix="sx" uri="/struts-dojo-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>使用sx:tree和sx:treenode标签生成动态树</title> <sx:head/> </head> <body> <h3>使用sx:tree和sx:treenode标签生成动态树</h3> <sx:tree label="计算机图书" id="book" href="getChild.action" showRootGrid="true" showGrid="true"> <sx:treenode label="a"/> </sx:tree> </body> </html>
上面代码定义了一个简单动态树,该树指定了 href="getChild.action" ,这意味着该树将根据 getChild.action 来动态加载子节点。
GetChildNode
package js.dojo; import java.util.ArrayList; import java.util.List; import com.opensymphony.xwork2.ActionSupport; public class GetChildNode extends ActionSupport { // 封装nodeId请求参数的属性 private String nodeId; private List<String> books = new ArrayList<String>(); // nodeId属性的setter和getter方法 public String getNodeId() { return nodeId; } public void setNodeId(String nodeId) { this.nodeId = HTMLDecoder.decode(nodeId); } // books属性的getter方法 public List<String> getBooks() { return books; } // 处理用户请求的execute方法 public String execute() throws Exception { System.out.println("-----" + nodeId); if (nodeId.equals("book_root")) { books.clear(); books.add("李刚"); books.add("Johnson"); books.add("David"); } return SUCCESS; } }
dojo/bookNode.jsp
<%@ page contentType="text/html;charset=GBK" language="java" %> <%@ taglib prefix="s" uri="/struts-tags" %> [ <s:iterator value="books"> { "id":"<s:property/>", "label":"<s:property/>" }, </s:iterator> ]
有个很严重的问题: 子节点都被当成“叶子节点”处理,因此无法展开下级节点。而 <sx:treenode > 似乎没有属性指定该节点不是叶子节点。
提示: 可能由于 struts 2.1 已经不再推荐使用 Dojo 插件的缘故,Struts 2.1 Dojo 插件对 <sx:tree> 和 <sx:treenode> 2 个标签支持并不理想。如果开发者需要使用 Dojo 的树,可以直接在页面中使用原生 Dojo 库
<s:a href="" onclick="newWin('dojo/sx-tree1.jsp');" cssStyle="cursor: hand;">sx-tree1.jsp</s:a> <s:a href="" onclick="newWin('dojo/sx-tree2.jsp');" cssStyle="cursor: hand;">sx-tree2.jsp</s:a>
<action name="getChild" class="js.dojo.GetChildNode"> <result>/dojo/bookNode.jsp</result> </action>
5.7 textarea
以下代码都基于 5.2
发表评论
文章已被作者锁定,不允许评论。
-
Struts1 与 Struts2 的12点区别
2011-11-16 11:14 7381) 在Action实现类方面 ... -
Struts 2 的 Ajax 支持(三)
2011-02-11 13:18 24265.2 submit 和 a 标签 ... -
Struts 2 的 Ajax 支持(二)
2011-01-27 14:08 2391四、 基于 Dojo 的 pub-sub 事件模型 ... -
Struts 2 的 Ajax 支持(一)
2011-01-20 14:55 2482一、 Ajax 概述 ... -
Struts 2 的拦截器(三)
2011-01-20 13:09 2905六、 拦截器示例 : 实现权限控制 权限检 ... -
Struts 2 的拦截器(二)
2011-01-12 16:38 1624四、 开发自己的拦截器 Struts 2 ... -
Struts 2 的拦截器(一)
2010-12-31 16:53 2016一、 理解拦截器 ... -
Struts 2 的标签库(五)
2010-12-29 11:35 11366.8 select 标签 以下代码 都是基 ... -
Struts 2 的标签库(四)
2010-12-24 16:21 1638六、 表单标签 表单标签,分为 2 种 : f ... -
Struts 2 的标签库(三)
2010-12-20 14:15 1967四、 数据标签 数据标签主要 ... -
Struts 2 的标签库(二)
2010-12-15 16:21 2026三、 控制标签 Str ... -
Struts 2 的标签库(一)
2010-12-13 13:47 1358一、 Struts 2 标签库概述 ... -
Struts 2 的国际化(二)
2010-12-09 13:25 2254二、 Struts 2 的国际化入门 ... -
Struts 2 的国际化(一)
2010-12-06 22:44 1302一、 程序国际化简 ... -
Struts2 上传和下载文件(三)
2010-12-03 14:58 1790三、 同时上传多个 ... -
Struts2 上传和下载文件(二)
2010-11-29 13:37 1977二、 Struts 2 的文件上传 ... -
Struts2 上传和下载文件(一)
2010-11-17 22:28 2076一、 文件上传的原理 1. 表单元 ... -
struts2 输入校验 (四)
2010-11-15 22:43 1210六、 手动完成输入校验 对于一些特殊的检验 ... -
struts2 输入校验 (三)
2010-11-08 13:25 1715五、 内建校验器 S ... -
struts2 输入校验 (二)
2010-10-28 11:01 2376二、 基本输入校验 MVC ...
相关推荐
### Struts2的Ajax支持详解 #### Ajax概述与Struts2的融合 在现代Web2.0技术蓬勃发展的背景下,Ajax技术因其能够实现网页的异步加载与交互性提升,成为了构建动态网页的重要组成部分。Struts2框架,作为Java Web...
首先,我们来理解一下Struts2是如何实现AJAX支持的。Struts2提供了一个名为`struts2-jquery-plugin`的插件,它扩展了Struts2的功能,将jQuery库集成到框架中。通过这个插件,开发者可以利用jQuery的AJAX功能与Struts...
Struts2是一个强大的MVC(模型-视图-控制器)框架,它被广泛应用于Java Web开发中,提供了灵活的架构支持。Ajax(异步JavaScript和XML)技术则为Web应用程序带来了增强的用户体验,允许页面部分刷新,而无需整体刷新...
Struts2提供了丰富的功能,如拦截器、结果类型、国际化支持等,使得开发者能够更高效地处理请求和响应。 在MVC架构中,Model负责业务逻辑,View负责展示,而Controller负责接收用户请求并调用Model进行处理,然后将...
Struts2为了满足这种需求,实现了与AJAX的无缝集成,提供了一流的AJAX支持。 Struts2的AJAX支持并不是从零开始创建一个新的AJAX框架,而是选择了当时在Java EE平台上广泛使用的AJAX库,如Dojo和Direct Web Remoting...
在实际开发中,我们还需要按照以下步骤配置Struts2以支持AJAX: 1. 在struts.xml配置文件中,定义一个Action类,指定一个返回JSON的Result类型。例如: ```xml <action name="ajaxAction" class=...
在这个"struts2+ajax+jquery"的主题中,我们将深入探讨如何利用Struts2、jQuery和Ajax技术实现Web页面的异步交互。 首先,Struts2作为MVC框架,它的核心是Action,它负责处理用户的请求,并通过配置的Result返回...
Struts2是一个非常流行的Java Web框架,它支持多种扩展,包括Ajax功能。在Struts2中实现Ajax交互,通常需要依赖一些特定的库和插件。以下是对"ajax-struts2需要的3个包"的详细解释: 1. **json.js**: 这是一个...
Struts2是一个流行的Java web框架,它为开发者提供了一种...Struts2提供了很好的集成JSON支持,使得与前端交互变得更加便捷。在实际开发中,还要考虑文件大小限制、安全性(如防止CSRF攻击)以及用户体验优化等问题。
### 基于Struts 2 Ajax实现的Login应用知识点详解 #### 一、Struts 2框架简介 Struts 2是Apache Struts的第二个版本,它是一个用于开发Java Web应用程序的开源框架。该框架提供了强大的MVC(模型-视图-控制器)...
总的来说,Struts2通过与jQuery等JavaScript库的集成,为开发人员提供了强大的Ajax支持,使得在Java Web应用中实现动态交互变得简单且高效。通过理解和熟练运用上述知识点,你可以创建出响应迅速、用户体验良好的Web...
3. **Struts2插件支持**:Struts2提供了Ajax插件,如`struts2-jquery-plugin`和`struts2-json-plugin`,这些插件简化了Ajax与Struts2的集成。它们提供了一系列预定义的标签,可以直接在JSP中使用,无需手动编写...
Struts2是一个强大的MVC框架,它简化了Java Web应用的开发,提供了丰富的拦截器和插件机制,支持多种视图技术。而AJAX(Asynchronous JavaScript and XML)则允许网页在不刷新整个页面的情况下与服务器交换数据并...
除了基本的`<s:div>`标签外,Struts2还支持其他用于实现Ajax功能的标签,如`<s:submit>`、`<s:textfield>`等,它们同样可以在表单提交、文本输入等场景下启用Ajax行为,进一步提升应用的响应速度和用户友好度。...
Struts2框架支持多种方式来实现Ajax请求。其中一种是通过使用Struts2的插件,如`struts2-jquery-plugin`或`struts2-dojo-plugin`,这些插件为开发者提供了丰富的JavaScript库和动作支持。另一种方法是使用纯...
"struts2-dojo-plugin-2.2.3.1.zip_key_可用struts的ajax支持插件"这个标题表明,这个压缩包提供了一个关键的插件,使得Struts2能够支持AJAX操作。这个插件基于Dojo JavaScript库,Dojo是一个强大的JavaScript工具集...
-- 配置Struts2支持JSON --> <constant name="struts.enable.SMD" value="true"/> <constant name="struts.action.extension" value=","/> <constant name="struts.objectFactory" value="struts-default"/> ...
配置Struts2的Ajax和JSON支持通常包括以下几个步骤: 1. 在`struts.xml`配置文件中启用JSON插件: ```xml <constant name="struts.enable.SlashesInActionNames" value="true"/> <constant name="struts.action....
Web2.0的随波逐流,Ajax那是大放异彩,Struts2框架自己整合了对Ajax的原生支持(struts 2.1.7+,之前的版本可以通过插件实现),框架的整合只是使得JSON的创建变得异常简单,并且可以简单的融入到Struts2框架中,...