struts2+ajax+jquery
ajax交互
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="js/jquery-1.12.3.js"></script> <script type="text/javascript"> $(function() { $("input:eq(0)").click(function() { $.ajax({ url : "ajax/ajax.action", data : "word='text交互'", type : "post", dataType : "text", success : function(data) { alert(data); }, error : function(XMLHttpRequest, textStatus, errorThrowing) { alert(textStaus); } }); }); $("input:eq(1)").click( function() { $.ajax({ url : "json/json.action", data : { "name" : "小明" }, type : "post", dataType : "text", success : function(data) { alert(data); $("textarea").html(data); //如果返回值类型是text,则需要手动转换为js的json对象 var obj = eval("(" + data + ")"); alert(obj.name+obj.age+obj.tel); var users = obj.users; for (var int = 0; int < users.length; int++) { alert(user[i].username + "------------------" + users[i].password); } }, error : function(XMLHttpRequest, textStatus,errorThrowing) { alert(textStatus); } }); }); }); </script> </head> <body> <input type="button" value="点击" /> <br> <input type="button" value="json交互" /> <br> <textarea rows="" cols=""></textarea> </body> </html>
action:
AjaxAction.java
public class AjaxAction extends ActionSupport {
private String word;
public String getWord() {
return word;
}
public void setWord(String word) {
this.word = word;
}
public InputStream getContentStream() throws Exception {
return new ByteArrayInputStream("你好事假".getBytes("utf-8"));
}
@Override
public String execute() throws Exception {
System.out.println("AjaxAction.execute()" + word);
return SUCCESS;
}
}
JsonAction.java
public class AjaxAction extends ActionSupport { private String word; public String getWord() { return word; } public void setWord(String word) { this.word = word; } public InputStream getContentStream() throws Exception { return new ByteArrayInputStream("你好事假".getBytes("utf-8")); } @Override public String execute() throws Exception { System.out.println("AjaxAction.execute()" + word); return SUCCESS; } }
JsonAction.java
public class AjaxAction extends ActionSupport { private String word; public String getWord() { return word; } public void setWord(String word) { this.word = word; } public InputStream getContentStream() throws Exception { return new ByteArrayInputStream("你好事假".getBytes("utf-8")); } @Override public String execute() throws Exception { System.out.println("AjaxAction.execute()" + word); return SUCCESS; } }
stryts.xml
<package name="ajaxp" namespace="/ajax" extends="struts-default"> <action name="ajax" class="com.clc.Action.AjaxAction"> <result name="success" type="stream"> <!-- 当struts2解析这个结果的时候 也就是Action执行完了 需要使用一个输入流读取内容,然后再写入到网络的客户端 inputName用来指定从哪里读取 将contentStream的首字母大写,加上get前缀, 得到一个方法名getContentStream 会调用action中的这个方法得到一个输入流 要求在Action中有一个getContentStream名字的方法 sInputStream类型的返回值类型 --> <param name="inputName">contentStream</param> <param name="contentCharSet">utf-8</param> </result> </action> </package> <package name="jsonPk" namespace="/json" extends="json-default"> <action name="json" class="com.clc.Action.JsonAction"> <result type="json"> <!-- 调用message的getter方法:getMessage()方法 --> <!-- json的结果类型会将对象转换为json字符串,返回给客户端 --> <param name="root">message</param> </result> </action> </package>