提出一种将EXT JS作为展示层技术如何整合到SSH2框架中。基本的思想就是通过EXT JS的AJAX请求连接到Struts的action,用html document元素来获取用户输入值,并通过GET的方法将参数传递给action,处理完毕后用json来回传结果数据。
EXT JS是一个javascript库,该框架提供了很强大的富客户端体验,但由于EXT JS主要是客户端的技术,与服务器端技术整合有一定的困难。国内的EasyJWeb框架提供了强大的整合方案,在此本文仅提供一种简单的整合方案,就是通过AJAX请求来实现。
首先,请下载Ext JS2.0的库文件并将该文件夹放到项目的web路径下。对于如何开发EXT JS应用,在这里就不详述了,请参照其他网站上的例程。
如果想在EXT JS中使用Struts的标签,例如对EXT JS的控件中的文本进行国际化,则必须将JavaScript代码写到JSP页面中,如果写在单独的js文件里面,是无法访问Struts标签的。例如声明一个对话框:
var xxx = Ext.MessageBox.show({
id:'loginProcess',
title: '<s:text name="title"/>',
msg: '<s:text name="login"/>',
progressText: '',
width:300,
progress:true,
closable:true,
animEl: 'loading'
});
在资源文件中定义title=请稍后.. title即可读出。
你可以定义一个不显示的层来放置包含Struts标签的登陆框,然后再用EXT的窗口来包装这个登陆框:
<div id="divLoginWindow" style="display:none; ">
<div id="divLoginInfo">
<table id="tableLogin2" align="center">
<tr>
<td align="left"><s:textfield size="16" maxlength="20" id="name" name="username" label="%{getText('username')}"/></td>
</tr>
<tr>
<td align="left"><s:password size="16" maxlength="20" id="pwd" name="password" label="%{getText('password')}"/></td>
</tr>
</table>
</div>
</div>
<!--用于输出消息-->
<div id="divMessageTip"></div>
然后在EXT JS的窗口中显示这个层:
winLogin = new Ext.Window({
el:'divLoginWindow',
//layout:'fit',
//modal:true,
title:'<center>用户登录</center>',
width:250,
height:150,
resizable:false,
closeAction:'hide',
items: [divLoginInfo],
buttons: [{
text:'确 定',
handler: function(){login(imgId);}//function(){document.getElementById('loginSubmit').click();}
}]
});
整合的关键在于建立ajax请求,并向action传递参数:
var conn = new Ext.data.Connection();
// 发送异步请求
conn.request({
// 请求地址
url: 'login2.action',
method: 'GET',
params:'username='+document.getElementById('name').value+'&password='+document.getElementById('pwd').value,
// 指定回调函数
callback: callback
});
注意红色部分的代码,采用document元素来获取Struts标签的值,并以参数的形式设置到AJAX请求中。注意url属性,必须标明 .action,否则EXT会找不到Struts的action。再看一下login2.action的内容(配置在这里就不多说了,请参考上一篇文章):
private UserServiceImpl userService;
private String message;
private String username;
private String password;
private String checkcode;
private ResourceBundleMessageSource messageSource;
属性部分与前面文章里描述的基本相同,action可以将这些属性自动关联到GET方法传输的参数。所以在excute方法里直接调用:
User user = userService.getUser(username);
这里的username直接获取到视图层传输过来的username参数。为了响应AJAX请求,把数据封装到json对象是一个不错的选择:
Json json=new Json();
if(user!=null&&user.getPassword().equals(password))
{
json.add("answer", true);
json.add("msghead", messageSource.getMessage("messageAdvice", null,Locale.CHINA));
json.add("msg", messageSource.getMessage("loginSuccess", null,Locale.CHINA));//"登录成功"
}
else
{
json.add("answer", false);
json.add("msghead", messageSource.getMessage("ErrorAdvice", null,Locale.CHINA));
json.add("msg", messageSource.getMessage("pswError", null,Locale.CHINA));
}
message=json.toString();
这里的Json是自定义的,以下是add方法:
public void add(String key, Object value) {
if (text == null) {
if (value instanceof String) {
text = "{" + key + ":'" + value.toString() + "'}";
} else {
text = "{" + key + ":" + value.toString() + "}";
}
} else {
text = text.substring(0, text.length() - 1);
if (value instanceof String) {
text += "," + key + ":'" + value.toString() + "'}";
} else {
text += "," + key + ":" + value.toString() + "}";
}
}
}
在action中处理完毕后,可以在callback函数中取出响应值:
var jsonObj = Ext.util.JSON.decode(response.responseText);
然后再作处理:
if(jsonObj.answer==true){
.......
}
本示例的运行结果是:
相关推荐
本文将深入探讨EXT与SSH2框架的整合,提供一个清晰的步骤指导和简单实例,帮助你快速掌握整合过程。 EXT是一个基于JavaScript的富客户端框架,主要用于构建桌面级的Web应用。它提供了丰富的组件库,包括表格、图表...
Spring还整合了其他框架,如Struts2和Hibernate,简化了集成工作。 3. **Hibernate**:是一个对象关系映射(ORM)框架,用于简化数据库操作,将Java对象直接映射到数据库表,避免了传统的JDBC编码。 在这个“EXT JS...
- **web.xml配置**:Web应用程序的配置文件,用于配置Struts2和Spring的环境。 - Struts2的配置包括了`<filter>`和`<filter-mapping>`标签的配置,用于设置Struts2的FilterDispatcher。 - Spring的配置包括`...
SSH框架组合则常用于后端开发,Spring提供了服务层的管理,包括Bean的生命周期和依赖注入,简化了对象的创建和管理;Struts则在表现层负责处理HTTP请求和响应,实现视图和控制器的解耦;Hibernate作为持久层框架,...
由于下载限制不能上传超过20Mb的文件所以完整的项目就没在里面,自己整合SSH 框架的包,所有的源代码都在,用的是SqlServer数据库,用ExtJs 3.2 实现数据库显示,以及正删改等功能,两个表(1对多和多对1)!
为了更好地理解和实践,需要了解EXT的组件模型、事件机制,以及SSH框架的核心概念,包括Spring的依赖注入、Struts的Action和ActionForm、Hibernate的实体映射等。同时,理解JSON数据交换格式也是必要的,因为它是EXT...
标签"ext__hiberna ssh ssh__ext swing 合同"进一步强调了EXT组件、Hibernate和SSH框架,以及"合同"这一业务领域。这表明项目可能涉及到合同管理的GUI界面,使用EXT Swing进行构建,同时后端数据处理则依赖于...
SSH在这里通常指的是Java的SSH框架,即Spring、Struts2和Hibernate的组合。Spring提供依赖注入和AOP(面向切面编程),Struts2处理HTTP请求和视图渲染,Hibernate则作为ORM(对象关系映射)工具,负责数据库的操作。...
【描述】"ext整合ssh框架的一个完整的例子,myeclipse开发,包含数据库建表语句和导出文件"指出这是一个实际的开发项目,使用了MyEclipse作为集成开发环境。MyEclipse是基于Eclipse的Java EE集成开发工具,支持多种...
《人人都玩开心网:Ext+JS+Android+SSH整合开发Web与移动SNS》这本书主要聚焦于构建社交网络服务(SNS)平台,通过结合多种技术实现Web端和移动端的应用开发。以下是书中涉及的主要知识点: 1. **EXT.JS**: EXT....
EXT 与 SSH 整合的项目是一个典型的Java Web开发示例,它结合了EXT前端框架与Spring、Struts和Hibernate后端技术栈,构建出一个高效、用户友好的Web应用程序。EXT是一个强大的JavaScript库,专注于构建富客户端的...
综合来看,"龙门物流管理系统--Ext+SSH框架"是一个集成了前后端先进技术的解决方案,旨在优化物流行业的数据管理和业务流程。其前端利用ExtJS提升用户体验,后端借助SSH框架实现灵活的业务逻辑处理,并依托MySQL...
2. **Struts2 (SSH)**:Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web框架。它简化了处理HTTP请求、管理页面流程以及与后端数据源交互的过程。在这个小例子中,Struts2作为控制器,处理用户通过...
SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。它们分别负责MVC模式中的Model、View和Controller层,为开发者提供了高效、灵活且可扩展的开发环境。ExtJS则是一个强大...
模拟登录界面,加入验证码,xml树的实现 Ext viewport框架 等好多东西,都是自己在学习ext中想到什么就做个例子,只是有点乱,共同研究共同进步 在javascript目录下加入Ext2.0 在lib下加入所需要的jar 数据库是...
首先,让我们深入了解SSH框架。Spring是一个全面的Java企业级应用框架,它提供依赖注入(DI)和面向切面编程(AOP)功能,帮助开发者管理对象之间的依赖关系。Struts是一个MVC(Model-View-Controller)框架,主要...
综上所述,这个项目展示了如何利用SSH框架搭建后端服务,EXT JS 3.0提供用户界面,JSON作为数据交换格式,以及DWR实现无刷新通信,共同构建一个动态的、交互式的树形展示。这样的组合既提高了用户体验,又降低了...
在IT行业中,SSH2+EXT是一个常见的Web应用开发框架组合,用于构建功能强大的企业级应用程序。这个"ssh2+ext demo例子"显然提供了一个实际的示例,演示了如何将Struts2、Spring、Hibernate以及EXT.js这四个关键组件...
EXTJS的使用极大地提升了前端界面的交互性和视觉效果,而SSH框架的结合则确保了后端的稳定性和可维护性。 **SSH框架详解** 1. **Struts**: Struts是MVC设计模式的一种实现,主要用于控制应用程序的流程。在本系统...
- **技术实现**:本书通过介绍如何使用Ext JS、Android以及SSH框架来实现该应用的具体功能,包括但不限于相册管理、地理位置信息展示和个人桌面自定义等功能。 - **实践意义**:通过对具体案例的解析,读者可以更好...