jquery发送ajax请求,以及struts2的action响应请求并传回json数据的做法

-------------------jquery代码------------------

function login() {
    var rem = $('#remember').val();
    $.ajax({
        type : 'post',  //请求的方式
        url : loginURL,  //地址
        datatype : "json", //参数的类型  
        data : {      //参数
            'checkCode' : yzm,
            'username' : username,
            'password' : hex_md5($("#password").val()),
            'remember' : rem
        },
        timeout: 5000,
        error: function (xmlHttpRequest, error) {  //方法发生错误执行的方法
            ui.error("登陆失败!");
            return;
        },
        success : function(data) {          //方法执行成功之后执行的方法
          
            if (data.success) {//data.success是后台定义的一个boolean类型的数据
        //if...else根据个人的需求来写              
                if((!data.jsonMap.checkedUserFlag) && data.jsonMap.pwdFlag && !data.jsonMap.firstLoginFlag){
                    window.location = changeURL;
                } else if(data.jsonMap.checkedUserFlag && !data.jsonMap.firstLoginFlag){
                    window.location = changeURL;
                } else {
                    window.location = loginSuccessURL;
                }
            } else {
                ui.error(data.msg);
                randomYzm();
                $("#verification_code").val("");
            }
        }
    });
}
--------------------------------action中的回传参数----------------------------------

package com.login.action;

import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import com.login.pojo.Customer;
import com.login.service.LoginService;
import com.opensymphony.xwork2.ActionSupport;
import com.util.classes.JSONBean;

public class loginAction extends ActionSupport {

    // 客户管理服务
    private LoginService loginService;

    public static final String TILES = "tiles";
    protected String targetUrl; // 跳转的页面

    // 用户名
    private String username;
    // 密码,旧密码
    private String password;
    // 验证码
    private String checkCode;
    // 记住用户名
    private String remember;

    private JSONBean root = new JSONBean(); //定义要回传的json对象,注意一定要有get,set方法
    
    public JSONBean getRoot() {
        return root;
    }
    public void setRoot(JSONBean root) {
        this.root = root;
    }
    
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getCheckCode() {
        return checkCode;
    }

    public void setCheckCode(String checkCode) {
        this.checkCode = checkCode;
    }

    public String getRemember() {
        return remember;
    }

    public void setRemember(String remember) {
        this.remember = remember;
    }

    public String validateUser(){
        HttpSession session = ServletActionContext.getRequest().getSession();
        String v_code = session.getAttribute("vcode").toString();
        String msg ="";
        Customer dbCustomer = null;
        if(!checkCode.equals(v_code)){
            msg="验证码错误";
            root.setSuccess(false);
            root.setMsg(msg);
        }else{
            msg="登录成功";
            dbCustomer=loginService.checkCustomerByLoginId(username);
            
            if(dbCustomer!=null){
                root.setSuccess(true);
                root.setMsg(msg);
            }else{
                dbCustomer = loginService.checkCustomerByUsername(username);
                msg="登录成功";
                if(dbCustomer!=null){
                    root.setSuccess(true);
                    root.setMsg(msg);
                }else{
                    root.setMsg("用户在系统中不存在!");
                }                
            }
            
        }        
        return "json";
    }
}
jsonBean 类 中定义了 一些变量 如success,msg,jsonMap  也可以直接在action中定义

------------------------------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>
        <package name="default" extends="struts-default,tiles-default,json-default"> <!--定义的包继承json-default-->
                <action name="*" class="loginAction" method="{1}">
                     <result name="success">page/jsp/login.jsp</result>
                     <result  name="tiles" type="tiles" >${targetUrl}</result>
                     <result name="json" type="json">    
                           <param name="root">root</param>
                        </result>
                </action>
        </package>
    </struts>

--------------------------------对了最后记得项目中一定要有json的jar struts2-json-plugin-2.3.4.jar 版本尽量跟struts2的核心包的版本一致---------------------

    

原文地址:https://www.cnblogs.com/javawebstudy/p/2936342.html