zoukankan      html  css  js  c++  java
  • 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的形式,看情况选择使用哪种方式

  • 相关阅读:
    一个转角--->程序猿
    一个转角--->程序猿
    科技申报项目总结
    科技申报项目总结
    mysql事务
    mysql事务
    浅谈SSM框架
    浅谈SSM框架
    Spring-IOC(解释依赖注入DI)
    Maven基础知识,如何搭建Maven环境,Maven常用命令,如何搭建一个Maven项目
  • 原文地址:https://www.cnblogs.com/tele-share/p/7487742.html
Copyright © 2011-2022 走看看