• [ExtJS5学习笔记]第三十二节 sencha extjs 5与struts2的ajax交互配置


    本文地址:http://blog.csdn.net/sushengmiyan/article/details/43487751

    本文作者:sushengmiyan

    ------------------------------------------------------------------------------------------------------------------------------------


    sencha extjs 5 增加一个struts2的配置,这样可以在设置好前台布局之后,与后台交互获取数据显示。现在有一个问题是struts2对于url的跳转action支持比较良好,但是对于像Extjs这样,ajax请求的,无url跳转的实现,还是需要一点点技巧的。本文实例讲解一个Ext.Ajax.request的请求实例,返回后台处理之后的结果。


    步骤一:创建struts2的配置文件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.0.dtd">  
       
    <struts>  
       
        <constant name="struts.devMode" value="true" />  
       
        <package name="basicstruts2" extends="struts-default">  
       
            <action name="index">  
                <result>/index.jsp</result>  
            </action>  
       
        </package>  
       
    </struts> 

    这个文件需要放置在src目录下,可以在下载的struts2中的webapp下找一个文件来直接使用,不需要自己一行代码一行代码的去敲,毕竟我们会使用就可以了。


    步骤二:对web.xml修改,增加struts2的支持

    <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>  
    这表示struts2会接管所有的请求,这样我们前台的请求都会纳入struts2的支持了


    步骤三:增加struts2核心jar包以及struts2依赖的jar包

    需要的jar包邮以下几个: 

    1.commons-fileupload-1.3.1.jar

    2.commons-io-2.2.jar

    3.commons-lang3-3.2.jar

    4.freemarker-2.3.19.jar

    5.javassist-3.11.0-GA.jar

    6.ognl-3.0.6.jar

    7.struts2-core-2.3.20.jar

    8.xwork-core-2.3.20.jar

    这8个jar包都可以在struts2的lib包里面找到,拷贝到项目lib目录下就可以了,依赖的jar包之前有专门罗列过,参照:

    http://blog.csdn.net/sushengmiyan/article/details/43272061


    到此为止,我们的项目就配置成功了struts2,怎么去验证成功与否呢?我们使用extjs写一个ajax的request

    步骤四:书写前台ajax请求

    		Ext.Ajax.request({
    			url: 'foo',
    			async: false,
    			success: function(response) {
    				debugger;
    				var data = Ext.decode(response.responseText);
                                    console.log(data);
    
    			}
    		});
    这里使用Ext.Ajax.request发送请求,指定了url为foo这个url就对应着struts2的一个action连接。我这里不太喜欢配置xml文件,而是喜欢使用struts2的注解的方式来实现跳转,所以下一步,增加一个注解插件

    步骤五 增加struts2的注解插件

    jar包增加struts2-convention-plugin-2.3.20.jar

    步骤六:熟悉后台实现代码

    在src目录下增加自己的实现类

    我这里新建了一个包com.oasystem.action

    新增一个类TestAction

    package com.oasystem.action;
    
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Map;
    
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.struts2.ServletActionContext;
    import org.apache.struts2.convention.annotation.Action;
    import org.apache.struts2.convention.annotation.Result;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class TestAction extends ActionSupport {
    
    	private static final long serialVersionUID = 5316344216452587235L;
    	private String _dc;
    	//这里就是使用注解指定struts2 action调用的地方
    	@Action(value = "/foo")
    	//方法设置成了void 不需要返回数据之间将数据写回到response中了
    	public void foo() {
    		HttpServletResponse response = ServletActionContext.getResponse();
    		response.setCharacterEncoding("utf-8");
                    String abc = "{'a':'测试'}";
    
                    try {
    			response.getWriter().write(abc);
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	};	
    	
    	public String get_dc()
    	{
    	  return this._dc;
    	};
    	
    	public void set_dc(String dc)
    	{
    	   this._dc = dc;
    	};
    
    }
    
    


    OK测试一下,启动tomcat服务器,执行这个ajax请求:


    命令行输出内容:


    OK到现在,就已经成功将struts2与sencha extjs实现了关联。所有的后台都可以由struts2来接管了。

  • 相关阅读:
    CH6301 疫情控制
    [BeiJing2010组队]次小生成树 Tree
    CH6303 天天爱跑步
    CH6302 雨天的尾巴
    POJ3417 Network
    Problem 1999. -- [Noip2007]Core树网的核
    [Apio2010]patrol 巡逻
    「TJOI2018」str
    NOI2018 你的名字
    BZOJ5137 [Usaco2017 Dec]Standing Out from the Herd
  • 原文地址:https://www.cnblogs.com/muyuge/p/6152475.html
Copyright © 2020-2023  润新知