分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

ajax从struts2请求数据的返回形式

发布时间:2023-09-06 01:09责任编辑:赖小花关键词:暂无标签

这篇随笔算是接上篇的数据请求返回,上一篇关于分页用的返回的数据形式是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 block18 ????????????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的形式,看情况选择使用哪种方式

ajax从struts2请求数据的返回形式

原文地址:http://www.cnblogs.com/tele-share/p/7487742.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved