日期:2014-05-16  浏览次数:20386 次

struts2+jquery+ajax+json+struts2_json_plugin配置例子

1.struts.xml

	<constant name="struts.i18n.encoding" value="utf-8" />

	<package name="jsondefault" namespace="/json" extends="json-default">
		<action name="loginByAjax" class="com.mtea.s2.action.LoginByAjax">
			<result type="json"/>
		</action>
	</package>

2.Action

package com.mtea.s2.action;

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

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;

public class LoginByAjax extends ActionSupport{
	private String username;
	private String password;
	private boolean pass;
	private String message;
	private List<String> fruitList=new ArrayList<String>();
	private Map<String,String> realNameMap=new HashMap<String,String>();
	private User user=new User("xiao7",22);
	
	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 boolean isPass() {
		return pass;
	}
	public void setPass(boolean pass) {
		this.pass = pass;
	}
	
	public String getMessage() {
		return message;
	}
	public void setMessage(String message) {
		this.message = message;
	}
	public List<String> getFruitList() {
		return fruitList;
	}
	public void setFruitList(List<String> fruitList) {
		this.fruitList = fruitList;
	}
	public Map<String, String> getRealNameMap() {
		return realNameMap;
	}
	public void setRealNameMap(Map<String, String> realNameMap) {
		this.realNameMap = realNameMap;
	}
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	@Override
	public String execute() throws Exception{
		//init
		fruitList.add("苹果");
		fruitList.add("香蕉");
		fruitList.add("芒果");
		realNameMap.put("张", "三");
		realNameMap.put("李", "四");
		
		if (username.equals("macrotea") && password.equals("123456")) {
			pass = true;
			message = "用户名密码正确";
			System.out.println("message:" + message);
		} else {
			message = "用户名密码不正确";
			pass = false;
			System.out.println("message:" + message);
		}
		
		//只能返回success
		return Action.SUCCESS;
	}
/*
	//其实不用继承ActionSupport,不用重写execute()
	public String execute(){
		// do someting
	}
	这样也可以的,不过已经养成了手贱的习惯
*/
}

?3.jsp,通过ff3.6,ie7+

<%@ page language="java" contentType="text/html; charset=UTF-8" import="java.util.*" session="true"%>
<%@ page import="java.text.*" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>set your title</title>
    <script src="/js/jquery-1.3.2.js" type="text/javascript"></script>
	<script type="text/javascript">
		$(document).ready(function() {
			//$("#loginForm #submit").click(function(event){
			
			$("#loginForm").submit(function(event){
				
				//必须的,无论你是$("#loginForm #submit").click(function(event){
				//阻止默认行为再进行ajax提交
				event.preventDefault();
				$.ajax({
					   type: "POST",
					   //我是使用struts2+struts2-json-plugin-2.2.1.jar的,这些都不用设置
					   //contentType: "text/html;charset=utf-8",
					   //contentType: "application/json;charset=utf-8",
					   url: "/json/loginByAjax",
					   data: {
						   username:$("#username").val(),
						   password:$("#password").val()
					   },
					   success: function(data){
					     $("#result").html(data);