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 阅读(149) 评论(0) 收藏 举报
 
                    
                     
                    
                 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号 
