`
endual
  • 浏览: 3558700 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Struts2与extjs json(亲测成功

 
阅读更多

 

Struts2与extjs集成傻瓜教程

                                                                                                                                                                 西南科技大学iSun团队黑色的月牙

 

背景:

         最近学习在学习ext这个前台的界面框架,遇到一个难题就是不知道怎么让我们优秀的ext与我们优秀的struts集成起来,经过在网上的一番收索学习之后,做成了下面这个傻瓜教程。希望能对像我一样刚开始学习ext的朋友有帮助。

 

1准备工作:

除了平时引入的struts2的jar包以外,还需要引入struts2-json-plugin-2.1.8.1.jar;json-lib-2.1.jar这两个包。

Json介绍:

和XMl一样,JSON也是一种基于纯文本的数据格式。由于JSON天生好似为javascript准备的,因此JSON的数据格式非常的简单。想了解更多的关于JSON的知识请百度。。。

2.建立我们的model:User

package com.isun.model;

 

public class User {

    private int id;

    private String username;

    private String password;

    public int getId() {

       return id;

    }

    public void setId(int id ) {

       this .id = id;

    }

    public String getUsername() {

       return username;

    }

    public void setUsername(String username) {

       this .username = username;

    }

    public String getPassword() {

       return password;

    }

    public void setPassword(String password) {

       this .password = password;

    }

}

 

3.建立我们的Action

         这里是简单的演示struts-2与extjs的集成,所以全部的业务逻辑都放在Action中进行处理了。建立我们的LoginAction.当表单提交过来的时候我们也就能够在LoginAction中拿到数据了呵呵。

package com.isun.action;

 

import com.isun.model.User;

import com.opensymphony.xwork2.ActionSupport;

 

public class LoginAction extends ActionSupport{

    private boolean success;

    private String message;

    private User user;

 

    public String execute()throws Exception{

       if (user.getUsername().equals("admin")&&user.getPassword().equals("admin")){

           this .success = true ;

           this .message = "你的账号是:"+user.getUsername()+"密码为:"+user.getPassword();

       }else {

 

           this .success = false ;

           this .message = "对不起,未经授权的用户不能登录该系统!";

       }

       return SUCCESS ;

    }

 

    public boolean isSuccess() {

       return success;

    }

 

    public void setSuccess(boolean success) {

       this .success = success;

    }

 

    public String getMessage() {

       return message;

    }

 

    public void setMessage(String message) {

       this .message = message;

    }

 

    public User getUser() {

       return user;

    }

 

    public void setUser(User user) {

       this .user = user;

    }

}

 

4.配置我们的struts.xml,注意extends=”json-default”

 

<?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.0.dtd">

 

<struts>

    <package name="extjs" extends="json-default" namespace="/">

    <action name="Login" class="com.isun.action.LoginAction">

        <result type="json"></result>

    </action>

    </package>

</struts>

 

5.在web.xml文件中陪上struts2

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5"

    xmlns="http://java.sun.com/xml/ns/javaee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <filter>

       <filter-name>struts2</filter-name>

<filter-class>

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

</filter-class>

   </filter>

   <filter-mapping>

       <filter-name>struts2</filter-name>

       <url-pattern>/*</url-pattern>

   </filter-mapping>

  <welcome-file-list>

    <welcome-file>index.jsp</welcome-file>

  </welcome-file-list>

</web-app>

 

6.接下来是前台的页面,其中包括login.html(登陆的界面),login.js(javascript代码),index.jsp(登陆成功后返回的界面)

Login.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=GB18030">

<link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css"/>

<script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script>

<script type="text/javascript" src="ext/ext-all-debug.js"></script>

<script type="text/javascript" src="js/login.js"></script>

<title>Extjs 学习</title>

</head>

<body>

 

</body>

</html>

 

Login.js

Ext.onReady(function (){

       //使用表单提示

       Ext.QuickTips.init();

       Ext.form.Field.prototype.msgTarget ="side";

       //定义一个输入表单

       var simple = new Ext.FormPanel({

              labelWidth:40,

              baseCls:'x-plain',

              defaults:{width:180},

              items:[{

                     xtype:'textfield',

                     fieldLabel:'账号',

                     name:'user.username',

                     allowBlank:false ,

                     blankText:'账号不能为空'

              },{

                     xtype:'textfield',

                     inputType:"password",

                     fieldLabel:"密码",

                     name:'user.password',

                     allowBlank:false ,

                     blankText:"密码不能为空"

              }],

              buttons:[{

                     text:"提交",

                     type:"submit",

                     handler:function (){

                            if (simple.form.isValid()){

                                   Ext.MessageBox.show({

                                          title:"请等待",

                                          msg:"正在加载",

                                          progressText:"",

                                          width:300,

                                          progress:true ,

                                          closable:false ,

                                          animEl:'loding'

                                   });

 

                                   var f = function (v){

                                          return function (){

                                                 var i = v/11;

                                                 Ext.MessageBox.updateProgress(i,'');

                                          }

                                   }

 

                                   for (var i = 1; i < 13; i++){

                                          setTimeout(f(i),i * 150);

                                   }

 

                                   //提交到服务器操作

                                   simple.form.doAction("submit",{

                                          url:"Login.action",

                                          method:"post",

                                          success:function (form,action){

                                                 document.location = 'index.jsp';

                                                 Ext.Msg.alert("登录成功!",action.result.message);

                                          },

                                          failure:function (form, action){

                                                 Ext.Msg.alert('登录失败',action.result.message);

                                          }

 

                                   });

                            }

                     }

                     },{

                            text:"重置",

                            handler:function (){

                                   //重置表单

                                   simple.form.reset();

                            }

                     }]

       });

       //定义窗体

       var _window = new Ext.Window({

              title:"登录窗口",

              layout:"fit",

              width:280,

              height:150,

              plain:true ,

              bodyStyle:"padding:10px",

              maximizable:false ,

              closeAction:"close",

              closable:false ,

              collapsible:true ,

              plain:true ,

              buttonAlign:"center",

              items:simple

       });

       _window.show();

});

 

Index.jsp

<%@ page language="java" contentType="text/html; charset=GB18030"

    pageEncoding="GB18030"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=GB18030">

<title>Insert title here</title>

</head>

<body>

恭喜你登陆成功了!

</body>

</html>

 

 

这个是例子是我看到的最全的一个实例是转载的,在此感谢下博主

(http://blog.sina.com.cn/s/blog_6d0ec1c20100n73p.html)。

测试过了,能成功。如果你还不是成功,我愿意帮助你解决这个实例,我的QQ:1019990976,注明extjs struts2 sina 谢谢

分享到:
评论

相关推荐

    struts2+extjs+json整合实例

    Struts2、ExtJS和JSON是Web开发中的三个关键技术,它们在构建动态、交互式的Web应用程序时发挥着重要作用。下面将详细介绍这三个技术及其整合过程。 首先,Struts2是一个基于MVC(Model-View-Controller)设计模式...

    struts2 json extjs 完整实例

    struts2 json extjs 完整实例 struts2 json extjs 完整实例 完整可用 无错! struts2 json extjs 完整实例 struts2 json extjs 完整实例 完整可用 无错! struts2 json extjs 完整实例 struts2 json extjs 完整...

    ExtJs + Struts2 + JSON 程序总结

    ExtJs + Struts2 + JSON 是一种常见的前端与后端数据交互的技术组合,常用于构建富客户端应用。这里我们详细探讨一下这三个技术组件以及它们如何协同工作。 首先,ExtJs 是一个JavaScript库,用于创建复杂的、用户...

    Struts2与extjs整合例子

    标题“Struts2与extjs整合例子”表明我们将探讨如何将这两个技术结合在一起,以实现后端与前端的高效协作。在实际项目中,这样的整合可以利用Struts2的强大处理能力和ExtJS的出色用户界面,创建出功能丰富且用户体验...

    extjs 跟 struts+json

    文章可能通过一个实际项目或示例,详细解释了如何将ExtJS的Grid Panel与Struts 2通过JSON进行数据交互,帮助读者理解这两种技术的整合过程。学习这些内容有助于提升Web应用的用户体验,实现数据的实时更新和交互。

    JSON.rar_JSON Hibernate_extjs_json struts ext_jsp json extjs_str

    在标签"json_hibernate extjs json_struts_ext jsp_json_extjs struts2"中,"json_struts_ext"和"jsp_json_extjs"暗示了JSON在Struts2扩展和JSP与ExtJS之间的交互作用。可能有一个配置或者插件用于让Struts2的动作类...

    一个运用Extjs,Struts2, json,iterator技术构建的iterator_jsonDemo2。 将数据从后台传到Extjs表现层。

    一个运用Extjs,Struts2, json,iterator技术构建的iterator_jsonDemo2。iterator_jsonDemo1的链接:http://download.csdn.net/detail/cafebar123/8816409 运用了Extjs,Struts2, json,iterator技术, 将数据从...

    struts2-hibernate-spring-Extjs-json.rar_JSON_extjs_extjs json st

    Struts2支持直接返回JSON结果,可以方便地与ExtJS等前端框架配合,实现异步更新页面。 综上所述,这个压缩包提供的资料可能涵盖了如何在Struts2中配置和使用Hibernate进行数据持久化,如何利用Spring进行依赖管理和...

    struts2与extjs tree的完美结合

    在这个“struts2与extjs tree的完美结合”的示例中,开发者利用了Struts2的Annotation特性来简化配置,以及Struts2JSON插件来处理JSON数据,从而实现在服务器端动态生成和返回Tree节点。Annotation使得开发者能够在...

    EXTJS json struts2制作登陆窗口

    本示例中,EXTJS、Struts2和JSON共同用于制作一个登录窗口。 首先,我们需要在项目中引入必要的库文件,如描述中所示,包括Struts2的核心库和其他依赖库,例如Commons-logging、Freemarker、Ognl等。这些库文件是...

    JPA STRUTS SPRING EXTJS JSON 同学录

    标题 "JPA STRUTS SPRING EXTJS JSON 同学录" 暗示这是一个使用特定技术栈开发的Web应用程序,旨在实现一个同学录的功能。这个应用可能包含用户登录、注册、查看、添加和编辑同学信息等核心功能。让我们详细探讨一下...

    struts2-extjs4.rar

    "struts2-extjs4.rar"这个压缩包文件包含了一个示例项目,演示了如何使用ExtJS4与Struts2进行JSON数据交互。 Struts2是一个基于MVC(Model-View-Controller)架构的开源Web应用程序框架,由Apache软件基金会维护。...

    extjs+struts2+hibernate+json登录程序

    Struts2可以通过配置插件支持JSON响应,使得后端可以直接返回JSON格式的结果,而ExtJS可以方便地解析这些数据,根据返回的状态来显示相应的提示信息,如登录成功或失败。 具体实现流程如下: 1. 用户在前端界面...

    struts2和ExtJs整合实例

    1. **Struts2与ExtJS的通信方式**: - JSON:由于Struts2和ExtJS都是异步的,通常通过JSON(JavaScript Object Notation)进行数据交换。Struts2可以通过配置Action返回JSON结果,ExtJS则解析这些JSON数据并更新...

    Extjs Tree + JSON + Struts2 例子

    然而,当使用 Struts2 的 JSON 插件时,它默认返回的对象格式与 ExtJS 需要的数组格式不符,如下所示: ```json {"cls":"folder","id":10,"leaf":false,"children":[{"cls":"file","id":11,"leaf":true,"children":...

    struts2+extjs4登录源码

    Struts2和ExtJS4是两个非常重要的Java Web开发框架,它们在构建高效、用户友好的Web应用程序中发挥着关键作用。在这个"Struts2+ExtJS4登录源码"项目中,我们可以深入理解这两个框架如何协同工作以实现一个基本的用户...

    ExtJS4+Accordion+SERVLET/STRUTS2+JSON+Ext.tree.Panel实例

    总结来说,这个实例展示了如何将前端的ExtJS4框架,特别是其Accordion布局和Ext.tree.Panel组件,与Servlet和Struts2后端框架集成,利用JSON进行数据交换,来创建一个动态的、交互性强的Web应用。用户可以通过折叠和...

    struts2+extjs2.1+json+hibernate+spring

    上网找资料,都是一些不全的. struts2+extjs2.1+json+hibernate+spring 自己整合的例子. 当中hibernate数据源可以配置自己的.后台输送json 前台接收.

    struts2 + extjs例子

    3. **Struts2配置**:struts.xml文件中会有针对ExtJS请求的Action配置,可能包括JSON结果类型,以便返回的数据能被ExtJS解析。 4. **Model-View-Controller**:Struts2负责后台业务处理和数据传输,ExtJS负责前端...

    struts2+extjs整合包

    Struts2的JSON插件可以方便地将Action的结果转换为JSON格式,供ExtJS的组件消费。同时,ExtJS可以通过Store和Proxy组件来管理和加载由Struts2返回的数据。 总的来说,这个整合包提供了开发基于Struts2和ExtJS的Web...

Global site tag (gtag.js) - Google Analytics