struts2 之 ajax

1. 在struts2中也可以像servlet一样来实现ajax---通过HttpServletResponse来实现。

2.实现步骤:

  a)Action代码如下:

public class AjaxAction {
    private String name;
    public String ajax() throws IOException{
        HttpServletResponse resp = ServletActionContext.getResponse();
        if("siggy".equals(name))
        resp.getWriter().print("true");
        else{
            resp.getWriter().print("false");
        }
        return null;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

b) 配置文件如:

<action name="ajax" class="cn.sxt.action.AjaxAction" method="ajax">
        </action>

c)Jsp:

<head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
      <script type="text/javascript" src="js/jquery-1.11.3.min.js"></script>
      <script type="text/javascript">
          $(function(){
              $("#name").blur(function(){
                  $.post("ajax.action",{'name':$(this).val()},function(data){
                      if("true"==data){
                          $("#name").css("border","1px solid red");
                      }else{
                          $("#name").css("border","1px solid green");
                      }
                  });
              });
          });
      
      </script>
  </head>
  <body>
    用户名:<input type="text" id="name" />
  </body>

3.通过struts2 的插件来实现异步操作:

a) 导入 jar 包:

asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
commons-beanutils-1.8.0.jar
commons-collections-3.1.jar
commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar
commons-lang-2.4.jar
commons-lang3-3.1.jar
commons-logging-1.1.1.jar
ezmorph-1.0.6.jar
freemarker-2.3.19.jar
jackson-core-asl-1.9.2.jar
jackson-mapper-asl-1.9.2.jar
javassist-3.11.0.GA.jar
json-lib-2.3-jdk15.jar
ognl-3.0.5.jar
struts2-core-2.3.4.jar
struts2-json-plugin-2.3.4.jar
xwork-core-2.3.4.jar

b)编写Action类:

public class JsonAction {
    private JSONArray root;

    public String execute(){
        List<User> list = new ArrayList<User>();
        list.add(new User(1,"张三",33));
        list.add(new User(2,"李四",23));
        list.add(new User(3,"王五",34));
        root = JSONArray.fromObject(list);
        return Action.SUCCESS;
    }
    public JSONArray getRoot() {
        return root;
    }

    public void setRoot(JSONArray root) {
        this.root = root;
    }
}

c) 配置Action

<action name="json" class="cn.sxt.action.JsonAction">
            <result type="json">
                <param name="root">root</param>
            </result>
        </action>

d)jsp页面:

<script type="text/javascript" src="js/jquery-1.11.3.min.js"></script>
  <script type="text/javascript">
      $(function(){
          $("#btn").click(function(){
              $.post("json.action",function(data){
                  var html="";
                  for(var i=0;i<data.length;i++){
                      html+="<tr><td>"+data[i].id+"</td><td>"+data[i].name+"</td><td>"+data[i].age+"</td></tr>";
                  }
                  $("#content").html(html);
              });
          });
          
      });
  </script>
  </head>
  
  <body>
  <button id="btn">获取数据</button>
    <table width="80%" align="center">
        <tr>
            <td>编号</td>
            <td>姓名</td>
            <td>年龄</td>
        </tr>
        <tbody id="content"></tbody>
    </table>
  </body>

注意:以上是返回JSONArray,如果直接返回对象写法如下:

public class Json1Action {
    private List<User> list;
    public String execute(){
        list = new ArrayList<User>();
        list.add(new User(1,"张三",33));
        list.add(new User(2,"李四",23));
        list.add(new User(3,"王二麻子",34));
        return Action.SUCCESS;
    }
    public List<User> getList() {
        return list;
    }
    public void setList(List<User> list) {
        this.list = list;
    }
}

配置如下:

<action name="json" class="cn.sxt.action.Json1Action">
            <result type="json">
                <param name="root">list</param>
            </result>
        </action>

 

posted on 2017-04-19 16:44  forever_2h  阅读(143)  评论(0编辑  收藏  举报

导航