struts2jsonjquery ajax 操作

struts 和 json所用jar包 

package com.jokey.action;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.jokey.bean.User;
import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    
    private User user;

    public  List<User> getUsers() {
        return users;
    }

    public  void setUsers(List<User> users) {
        users = users;
    }

    //将会被Struts2序列化为JSON字符串的对象
    private Map<String, Object> dataMap;
    
    private  List<User> users = new ArrayList<User>();

    /**
     * 构造方法
     */
    public UserAction() {
        //初始化Map对象
        dataMap = new HashMap<String, Object>();
    }

    /**
     * 测试通过action以视图方式返回JSON数据
     * @return
     */
    public String login() {
        if(user!=null&&user.getId().equals("jokey")&&user.getPassword().equals("123")){
            dataMap.put("loginResult", "true");
        }else{
            dataMap.put("loginResult", "false");
        }
        return SUCCESS;
    };
    
    public String getList(){
        User user1 = new User();
        user1.setId("01");
        user1.setName("peter");
        User user2 = new User();
        user2.setId("02");
        user2.setName("tom");
        users.add(user1);
        users.add(user2);
        return SUCCESS;
    }
    
    public String delUser(){
        User user1 = new User();
        user1.setId("01");
        user1.setName("peter");
        User user2 = new User();
        user2.setId("02");
        user2.setName("tom");
        users.add(user1);
        users.add(user2);
        boolean flag = false;
        for (User user : users) {
            if(user.getId().equals(user.getId()));
            users.remove(user);
            flag = true;
            dataMap.put("delResult", flag);
        }
        return SUCCESS;
    }

    
    
    /**
     * Struts2序列化指定属性时,必须有该属性的getter方法,实际上,如果没有属性,而只有getter方法也是可以的
     * @return
     */
    public Map<String, Object> getDataMap
<?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.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />

    <package name="default" namespace="/" extends="json-default">
        <action name="login" class="com.jokey.action.UserAction" method="login">
            <result type="json">
                <param name="root">dataMap</param>
            </result>
        </action>
        <action name="getList" class="com.jokey.action.UserAction" method="getList">
            <result type="json">
                <param name="root">users</param>
            </result>
        </action>
        <action name="del" class="com.jokey.action.UserAction" method="delUser">
            <result type="json">
                <param name="root">dataMap</param>
            </result>
        </action>
        
    </package>


</struts>


() {
        return dataMap;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

}
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="json" uri="/struts-json-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <title>My JSP 'index.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
  <script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
  <script type="text/javascript" src="js/jquery.form.js"></script>
  <script type="text/javascript">
      function submitForm(){
          $.ajax({
            type: "POST",
            dataType:'json',
            data:$('#login').serialize(),//获取表单中提交内容 自动拼装参数
            //防止IE8 中文乱码
            contentType: "application/x-www-form-urlencoded; charset=utf-8",
            url: 'login.action',//提交到的action地址
            success: function(dataMap){
             if(dataMap.loginResult=='true'){
                     alert('登陆成功');
                    location.href='list.jsp';
             }else{
                 alert('登陆失败');
             }
            }
         });
      }
  </script>
  
  
  </head>
  
  <body>
 
       <s:form id="login" action="" theme="simple">
           <s:textfield name="user.id"></s:textfield>
           <s:password name="user.password"></s:password>
       </s:form>
           <button onclick="submitForm()">提交</button>
  </body>
</html>





list.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'list.jsp' starting page</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
  <script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
  <script>
  //文档加载后 自动请求数据
      $(document).ready(function(){
          init();
      });
  
  //初始化页面
  function init(){
      $.ajax({
          type: "POST",
          dataType:'json',
          //防止IE8 中文乱码
          contentType: "application/x-www-form-urlencoded; charset=utf-8",
          url: 'getList.action',//提交到的action地址
          success: function(users){
              var innerHtml='';
                for(var i=0;i<users.length;i++){
                    innerHtml+='<tr><td>'+users[i].id+'</td>+<td>'+users[i].name+'</td>+<td><a href=\"javascript:void(0);\" onclick=\"delUser('+users[i].id+')\">果断删除</a></td></tr>';
                }
                $('#userTable').html(innerHtml);
          }
       });
  }
  
  
      function delUser(id){
          $.ajax({
            type: "POST",
            dataType:'json',
            data:'user.id='+id,
            //防止IE8 中文乱码
            contentType: "application/x-www-form-urlencoded; charset=utf-8",
            url: 'del.action',//提交到的action地址
            success: function(dataMap){
             if(dataMap.delResult||dataMap.delResult=='true'){
                     alert('删除成功');
                     init();
             }else{
                 alert('删除失败');
             }
            }
         });
          
      }
  </script>
  </head>
  
  <body>
  <table id="userTable" border="1px" rules="all">
  
  </table>
  </body>
</html>
原文地址:https://www.cnblogs.com/cnjava/p/3044907.html