Struts2异步获取json数据一个简单的demo

这个demo由ideal写的,是一个mvn项目,下面是目录结构

Struts2异步获取json数据一个简单的demo

ajaxtest.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<script type='text/javascript' src='js/jquery-1.12.3.min.js'></script>
<script>
    function test() {
        $.ajax({
            type:"post",
            url:"test.action",
            dataType:"json",
            success:function(data){
                var d = eval("("+data+")");
                $("#name").text(""+d.name+"");
                $("#sex").text(""+d.sex+"");
                $("#age").text(""+d.age+"");
            }
        })
    }
</script>
<html>
<head>
    <title>Struts2异步请求</title>
</head>
<body>
    <a href="#" onclick="test()">获取数据</a><br>
    名字:<span id="name"></span><br>
    性别:<span id="sex"></span><br>
    年龄:<span id="age"></span><br>
</body>
</html>

struts.xml

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

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>

    <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>

    <!--创建一个default包,继承自Struts2的struts-default包-->
    <package name="default" namespace="/" extends="struts-default,json-default">
        
        <action name="test" class="cn.wgb.action.AjaxAction" method="ajax">
            <result name="success"></result>
            <result type="json">
                <param name="root">result</param>
            </result>
        </action>

    </package>
</struts>

AjaxAction

package cn.wgb.action;

import com.opensymphony.xwork2.ActionSupport;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;

public class AjaxAction extends ActionSupport {

    private String result;

    public String getResult() {
        return result;
    }

    public void setResult(String result) {
        this.result = result;
    }

    public String ajax(){
        Map<String,Object> map = new HashMap<String,Object>();
        //存点数据,在jsp展示用
        map.put("name","小明");
        map.put("sex","180cm");
        map.put("age",18);
	
        JSONObject json =new JSONObject(map);	//转json
        result = json.toString();

        return SUCCESS;
    }
}

pom.xml

<!--Struts2和JSON需要的依赖包如下-->
<!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-core -->
<dependency>
  <groupId>org.apache.struts</groupId>
  <artifactId>struts2-core</artifactId>
  <version>2.5.18</version>
</dependency>

<!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils -->
<dependency>
  <groupId>commons-beanutils</groupId>
  <artifactId>commons-beanutils</artifactId>
  <version>1.9.3</version>
</dependency>

<!-- https://mvnrepository.com/artifact/commons-collections/commons-collections -->
<dependency>
  <groupId>commons-collections</groupId>
  <artifactId>commons-collections</artifactId>
  <version>3.2.1</version>
</dependency>

<!-- https://mvnrepository.com/artifact/commons-lang/commons-lang -->
<dependency>
  <groupId>commons-lang</groupId>
  <artifactId>commons-lang</artifactId>
  <version>2.6</version>
</dependency>

<!-- https://mvnrepository.com/artifact/net.sf.ezmorph/ezmorph -->
<dependency>
  <groupId>net.sf.ezmorph</groupId>
  <artifactId>ezmorph</artifactId>
  <version>1.0.6</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-json-plugin -->
<dependency>
  <groupId>org.apache.struts</groupId>
  <artifactId>struts2-json-plugin</artifactId>
  <version>2.5.18</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
  <groupId>org.json</groupId>
  <artifactId>json</artifactId>
  <version>20180813</version>
</dependency>

web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>

  <filter>
    <filter-name>struts2</filter-name>
    <!--如果Struts2版本是2.3以下版本->
    <!--org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter-->
    
    <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <welcome-file-list>
    <welcome-file>ajaxtest.jsp</welcome-file>
  </welcome-file-list>

</web-app>

测试页面:
Struts2异步获取json数据一个简单的demoStruts2异步获取json数据一个简单的demo