ajax struts2 數據的返回形式


這篇隨筆算是接上篇的數據請求返回,上一篇關於分頁用的返回的數據形式是json,http://www.cnblogs.com/tele-share/p/7192206.html這次主要探討ajax從struts接收html和io流的數據形式.

方式一:接收html格式的數據

jsp頁面

 1 <!-- ajax從struts請求拼接完成的html -->
 2           <script type="text/javascript">
 3               var url = "${pageContext.request.contextPath}/test?time=" + new Date().getTime();  4  $("#findAjax").click(function() {  5  $.ajax({  6  url:url,  7  type:"GET",  8  dataType:"html",  9  data:null, 10  aysnc:false, 11  success:function(backdata) { 12  // alert(backdata); 13  $("body").append(backdata); 14  }, 15  error:function(ajax) { 16  alert(ajax.readyState); 17  } 18  }) 19  }) 
20           </script>
21           

后台struts方法

 1 public String execute() throws Exception {
 2             System.out.println("TestAction.execute()");  3         StringBuffer sb = new StringBuffer();  4         sb.append("<table border='2px'>").append("<tr><td>編號</td><td>姓名</td></tr>");  5         sb.append("<tr><td>1</td><td>wyc</td></tr>");  6         sb.append("<tr><td>2</td><td>tele</td></tr>");  7         sb.append("<tr><td>3</td><td>fifth</td></tr>");  8         sb.append("</table>");  9         HttpServletResponse response = ServletActionContext.getResponse(); 10         response.setContentType("text/html;charset=utf-8"); 11         PrintWriter pw = response.getWriter(); 12  pw.write(sb.toString()); 13  pw.flush(); 14  pw.close(); 15  System.out.println(sb); 16         return null; 17     }    

 

方式二:以流的方式

jsp頁面

 1 <script type="text/javascript">
 2               var url = "${pageContext.request.contextPath}/test2?time=" + new Date().getTime();  3               $("#findAjax").click(function() {  4  $.ajax({  5  url:url,  6                         type:"GET",  7                         dataType:"html",  8                         data:null,  9                         aysnc:false, 10                         success:function(backdata) { 11  alert(backdata); 12                             $("body").append(backdata); 13  }, 14                         error:function(ajax) { 15  alert(ajax.readyState); 16  } 17  }) 18  }) 19           </script>
20   

后台struts方法,注意中文亂碼問題

 1 private InputStream is;  2     public InputStream getIs() {  3         return is;  4  }  5     
 6     public String execute2() {  7         StringBuffer sb = new StringBuffer();  8         sb.append("<table border='2px'>").append("<tr><td>編號</td><td>姓名</td></tr>");  9         sb.append("<tr><td>1</td><td>wyc</td></tr>"); 10         sb.append("<tr><td>2</td><td>tele</td></tr>"); 11         sb.append("<tr><td>3</td><td>fifth</td></tr>"); 12         sb.append("</table>"); 13         String string = sb.toString(); 14         try { 15             is = new ByteArrayInputStream(string.getBytes("utf-8")); 16         } catch (UnsupportedEncodingException e) { 17             // TODO Auto-generated catch block
18  e.printStackTrace(); 19  } 20         
21         return "OK"; 22     }

配置文件(本可以用通配符的方式來寫,但為了清晰采用這種方式,雖然只有一個action)

 1 <!-- test -->
 2     <package name="xxx" extends="struts-default">
 3     <!-- 依賴servlet Api返回數據 -->
 4         <action name="test" class="com.itcast.action.TestAction" method="execute">
 5         </action>
 6         
 7         <!-- 使用流的方式返回數據,注意type=stream -->
 8         <action name="test2" class="com.itcast.action.TestAction" method="execute2">
 9         <result name="OK" type="stream">
10             <param name="contentType">text/html;charset = utf-8</param>
11             <param name="inputName">is</param>
12         </result>
13         </action>
14     </package>

總結:第一種方式依賴servlet api,但全部在服務器端完成拼接,客戶端得到數據直接插入即可.第二種則是java流的方式,可以用於生成圖片傳輸至客戶端,當然還有json的形式,看情況選擇使用哪種方式

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM