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的核心包的版本一致---------------------