1发送ajax请求使用stream进行响应
Result的type属性的stream取值。
1.1定义Action
1 public class UserAction
2 {
3 private String uname;
4 //声明输入流对象
5 private InputStream inputStream;
6 public InputStream getInputStream()
7 {
8 System.out.println("-------------getInputStream");
9 return inputStream;
10 }
11 public String getUname()
12 {
13 return uname;
14 }
15 public void setUname(String uname)
16 {
17 this.uname = uname;
18 }
19 //org.apache.struts2.dispatcher.StreamResult
20 /**验证用户名的唯一性***/
21 public String unameIsExists()
22 {
23 System.out.println("----------unameIsExists");
24 List<String> list = new ArrayList<String>();
25 list.add("admin");
26 list.add("lisi");
27 String msg=null;
28 if(list.contains(uname))
29 {
30 msg="用户名不可用...";
31 }
32 else
33 {
34 msg="用户名可用...";
35 }
36 //将msg响应到客户端,将msg中的数据封装到InputStream
37 try
38 {
39 inputStream=new ByteArrayInputStream(msg.getBytes("UTF-8"));
40 }
41 catch (Exception e)
42 {
43 // TODO Auto-generated catch block
44 e.printStackTrace();
45 }
46 return "ajax";
47 }
48 }
1.2 配置UserAction
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE struts PUBLIC
3 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
4 "http://struts.apache.org/dtds/struts-2.3.dtd">
5 <struts>
6 <package name="user" namespace="/" extends="struts-default">
7 <action name="userAction_*" class="com.guangsoft.action.UserAction"
8 method="{1}">
9 <result name="ajax" type="stream">
10 <param name="inputName">inputStream</param>
11 </result>
12 </action>
13 </package>
14 </struts>
1.3实现UI页面
1 <script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
2 <script type="text/javascript">
3 function sendReuqest()
4 {
5 var uname=$("#uname").val();
6 $.post("userAction_unameIsExists.action","uname="+uname,function(data)
7 {
8 $("#sp").html(data);
9 });
10 }
11 </script>
12 </head>
13 <body>
14 <input type="text" id="uname" onblur="sendReuqest()" />
15 <span id="sp"></span>
16 </body>
1.4总结
当请求发送到服务器上,先执行处理请求的方法,通过处理请求的方法的返回值,查找对应的result,如果result的type属性为stream,自动调用inputName属性对应的值对应的get方法,获得流对象。
2.发送ajax请求使用json响应
2.1 加入jar包
struts2-json-plugin-2.3.16.1.jar
2.2 建立Action
1 public class UserAction2
2 {
3 UsersDao dao = new UsersDaoImpl();
4 private Users user;
5 private List<Users> ulist;
6 //将ulist集合作为json对象的集合响应到客户端
7 public List<Users> getUlist()
8 {
9 System.out.println("-----------getUlist");
10 return ulist;
11 }
12 public Users getUser()
13 {
14 return user;
15 }
16 public void setUser(Users user)
17 {
18 this.user = user;
19 }
20 //org.apache.struts2.json.JSONInterceptor
21 /***验证用户名是否可以:将不可用的用户名全部响应到客户端**/
22 public String unameExistsList()
23 {
24 System.out.println("-------------unameExistsList");
25 ulist=dao.selectUanemByUname(user.getUname());
26 //将ulist集合作为json对象的集合响应到客户端
27 return "ajax";
28 }
29 }
2.3 配置UsersAction2
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE struts PUBLIC
3 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
4 "http://struts.apache.org/dtds/struts-2.3.dtd">
5 <struts>
6 <package name="user" namespace="/" extends="json-default">
7 <action name="userAction_*" class="com.guangsoft.action.UserAction"
8 method="{1}">
9 <result name="ajax" type="stream">
10 <param name="inputName">inputStream</param>
11 </result>
12 </action>
13 <action name="userAction2_*" class="com.guangsoft.action.UserAction2"
14 method="{1}">
15 <result name="ajax" type="json">
16 <param name="root">ulist</param>
17 </result>
18 </action>
19 </package>
20 </struts>
2.4 建立UI页面
1 <head>
2 <script>
3 function sendReuqest()
4 {
5 var uname=$("#uname").val();
6 $.post("userAction2_unameExistsList.action","user.uname="+uname,function(data)
7 {
8 //alert(data);
9 var div=$("#div");
10 div.html(""); //清空
11 //对json集合进行遍历
12 $(data).each(function(index,item)
13 {
14 //alert(index+" "+item);
15 //div.html(item.uname);
16 div.append("
17 <div>"+item.uname+"</div>
18 ")
19 });
20 });
21 }
22 </script>
23 </head>
24 <body>
25 <!-- <input type="text" id="uname" onblur="sendReuqest()"/><span id="sp"></span> -->
26 <input type="text" id="uname" onkeyup="sendReuqest()" />
27 <div style="border: solid 1px red; 20%;margin-top: 5px" id="div">
28 </div>
29 </body>
重点:将需要响应到客户端的数据封装为inputStream对象
将msg的内容封装为InputStream对象
结果的类型必须为stream,将流对象的名字赋值给inputName属性
将需要使用json格式响应到客户端的数据封装到list集合
给ulist属性赋值,自动调用ulist对应的get方法