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); } }); }); }); </script> </head> <body> <div id="result"></div> <form id="loginForm" method="post"> <legend>登陆页</legend> <div class="error"></div> <p> <label for="username">用户名</label> <br /> <input type="text" name="username" id="username" autocomplete='off' value="macrotea"/> </p> <p> <label for="password">密码</label> <br /> <input type="text" name="password" id="password" autocomplete='off' value="123456"/> </p> <p> <input type="submit" value="登陆" id="submit"/> </p> </form> </body> </html>