`
floger
  • 浏览: 214395 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

整合EXT JS 和 SSH2框架

阅读更多

提出一种将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与SSH2框架的整合,提供一个清晰的步骤指导和简单实例,帮助你快速掌握整合过程。 EXT是一个基于JavaScript的富客户端框架,主要用于构建桌面级的Web应用。它提供了丰富的组件库,包括表格、图表...

    ext JS+ssh的一个简单Dome

    Spring还整合了其他框架,如Struts2和Hibernate,简化了集成工作。 3. **Hibernate**:是一个对象关系映射(ORM)框架,用于简化数据库操作,将Java对象直接映射到数据库表,避免了传统的JDBC编码。 在这个“EXT JS...

    Ext和SSH整合示例

    - **web.xml配置**:Web应用程序的配置文件,用于配置Struts2和Spring的环境。 - Struts2的配置包括了`&lt;filter&gt;`和`&lt;filter-mapping&gt;`标签的配置,用于设置Struts2的FilterDispatcher。 - Spring的配置包括`...

    ext+ssh代码和整合方案

    SSH框架组合则常用于后端开发,Spring提供了服务层的管理,包括Bean的生命周期和依赖注入,简化了对象的创建和管理;Struts则在表现层负责处理HTTP请求和响应,实现视图和控制器的解耦;Hibernate作为持久层框架,...

    Ext Js与SSH框架与数据库交互

    由于下载限制不能上传超过20Mb的文件所以完整的项目就没在里面,自己整合SSH 框架的包,所有的源代码都在,用的是SqlServer数据库,用ExtJs 3.2 实现数据库显示,以及正删改等功能,两个表(1对多和多对1)!

    ext+SSH增删改查

    为了更好地理解和实践,需要了解EXT的组件模型、事件机制,以及SSH框架的核心概念,包括Spring的依赖注入、Struts的Action和ActionForm、Hibernate的实体映射等。同时,理解JSON数据交换格式也是必要的,因为它是EXT...

    ssh.rar_ext hiberna_ssh_ssh ext_swing_合同

    标签"ext__hiberna ssh ssh__ext swing 合同"进一步强调了EXT组件、Hibernate和SSH框架,以及"合同"这一业务领域。这表明项目可能涉及到合同管理的GUI界面,使用EXT Swing进行构建,同时后端数据处理则依赖于...

    ext和ssh整合的小项目

    SSH在这里通常指的是Java的SSH框架,即Spring、Struts2和Hibernate的组合。Spring提供依赖注入和AOP(面向切面编程),Struts2处理HTTP请求和视图渲染,Hibernate则作为ORM(对象关系映射)工具,负责数据库的操作。...

    bmsh_ext整合ssh

    【描述】"ext整合ssh框架的一个完整的例子,myeclipse开发,包含数据库建表语句和导出文件"指出这是一个实际的开发项目,使用了MyEclipse作为集成开发环境。MyEclipse是基于Eclipse的Java EE集成开发工具,支持多种...

    人人都玩开心网:Ext+JS+Android+SSH整合开发Web与移动SNS

    《人人都玩开心网:Ext+JS+Android+SSH整合开发Web与移动SNS》这本书主要聚焦于构建社交网络服务(SNS)平台,通过结合多种技术实现Web端和移动端的应用开发。以下是书中涉及的主要知识点: 1. **EXT.JS**: EXT....

    EXT 与SSH整合的项目

    EXT 与 SSH 整合的项目是一个典型的Java Web开发示例,它结合了EXT前端框架与Spring、Struts和Hibernate后端技术栈,构建出一个高效、用户友好的Web应用程序。EXT是一个强大的JavaScript库,专注于构建富客户端的...

    龙门物流管理系统--Ext+SSH框架

    综合来看,"龙门物流管理系统--Ext+SSH框架"是一个集成了前后端先进技术的解决方案,旨在优化物流行业的数据管理和业务流程。其前端利用ExtJS提升用户体验,后端借助SSH框架实现灵活的业务逻辑处理,并依托MySQL...

    Ext+ssh 实现增删改查小例子

    2. **Struts2 (SSH)**:Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web框架。它简化了处理HTTP请求、管理页面流程以及与后端数据源交互的过程。在这个小例子中,Struts2作为控制器,处理用户通过...

    SSH框架下extjs 的使用

    SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。它们分别负责MVC模式中的Model、View和Controller层,为开发者提供了高效、灵活且可扩展的开发环境。ExtJS则是一个强大...

    SSH和Ext整合 更新

    模拟登录界面,加入验证码,xml树的实现 Ext viewport框架 等好多东西,都是自己在学习ext中想到什么就做个例子,只是有点乱,共同研究共同进步 在javascript目录下加入Ext2.0 在lib下加入所需要的jar 数据库是...

    SSH和Ext整合 更新---sql脚本

    首先,让我们深入了解SSH框架。Spring是一个全面的Java企业级应用框架,它提供依赖注入(DI)和面向切面编程(AOP)功能,帮助开发者管理对象之间的依赖关系。Struts是一个MVC(Model-View-Controller)框架,主要...

    ssh+ext+json+dwr技术实现的动态树

    综上所述,这个项目展示了如何利用SSH框架搭建后端服务,EXT JS 3.0提供用户界面,JSON作为数据交换格式,以及DWR实现无刷新通信,共同构建一个动态的、交互式的树形展示。这样的组合既提高了用户体验,又降低了...

    ssh2+ext demo例子

    在IT行业中,SSH2+EXT是一个常见的Web应用开发框架组合,用于构建功能强大的企业级应用程序。这个"ssh2+ext demo例子"显然提供了一个实际的示例,演示了如何将Struts2、Spring、Hibernate以及EXT.js这四个关键组件...

    图书管理系统实例整合ssh+ext

    EXTJS的使用极大地提升了前端界面的交互性和视觉效果,而SSH框架的结合则确保了后端的稳定性和可维护性。 **SSH框架详解** 1. **Struts**: Struts是MVC设计模式的一种实现,主要用于控制应用程序的流程。在本系统...

    人人都玩开心网:Ext JS+Android+SSH整合开发 数据库文件

    - **技术实现**:本书通过介绍如何使用Ext JS、Android以及SSH框架来实现该应用的具体功能,包括但不限于相册管理、地理位置信息展示和个人桌面自定义等功能。 - **实践意义**:通过对具体案例的解析,读者可以更好...

Global site tag (gtag.js) - Google Analytics