转自:https://www.cnblogs.com/tele-share/p/7487742.html
方式一:接收html格式的数据
jsp页面
<!-- ajax从struts请求拼接完成的html --> <script type="text/javascript"> var url = "${pageContext.request.contextPath}/test?time=" + new Date().getTime(); $("#findAjax").click(function() { $.ajax({ url:url, type:"GET", dataType:"html", data:null, aysnc:false, success:function(backdata) { // alert(backdata); $("body").append(backdata); }, error:function(ajax) { alert(ajax.readyState); } }) }) </script>
后台struts方法
public String execute() throws Exception { System.out.println("TestAction.execute()"); StringBuffer sb = new StringBuffer(); sb.append("<table border='2px'>").append("<tr><td>编号</td><td>姓名</td></tr>"); sb.append("<tr><td>1</td><td>wyc</td></tr>"); sb.append("<tr><td>2</td><td>tele</td></tr>"); sb.append("<tr><td>3</td><td>fifth</td></tr>"); sb.append("</table>"); HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType("text/html;charset=utf-8"); PrintWriter pw = response.getWriter(); pw.write(sb.toString()); pw.flush(); pw.close(); System.out.println(sb); return null; }
方式二:以流的方式
jsp页面
<script type="text/javascript"> var url = "${pageContext.request.contextPath}/test2?time=" + new Date().getTime(); $("#findAjax").click(function() { $.ajax({ url:url, type:"GET", dataType:"html", data:null, aysnc:false, success:function(backdata) { alert(backdata); $("body").append(backdata); }, error:function(ajax) { alert(ajax.readyState); } }) }) </script>
后台struts方法,注意中文乱码问题
private InputStream is; public InputStream getIs() { return is; } public String execute2() { StringBuffer sb = new StringBuffer(); sb.append("<table border='2px'>").append("<tr><td>编号</td><td>姓名</td></tr>"); sb.append("<tr><td>1</td><td>wyc</td></tr>"); sb.append("<tr><td>2</td><td>tele</td></tr>"); sb.append("<tr><td>3</td><td>fifth</td></tr>"); sb.append("</table>"); String string = sb.toString(); try { is = new ByteArrayInputStream(string.getBytes("utf-8")); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } return "OK"; }
配置文件(本可以用通配符的方式来写,但为了清晰采用这种方式,虽然只有一个action)
<!-- test --> <package name="xxx" extends="struts-default"> <!-- 依赖servlet Api返回数据 --> <action name="test" class="com.itcast.action.TestAction" method="execute"> </action> <!-- 使用流的方式返回数据,注意type=stream --> <action name="test2" class="com.itcast.action.TestAction" method="execute2"> <result name="OK" type="stream"> <param name="contentType">text/html;charset = utf-8</param> <param name="inputName">is</param> </result> </action> </package>总结:第一种方式依赖servlet api,但全部在服务器端完成拼接,客户端得到数据直接插入即可.第二种则是java流的方式,可以用于生成图片传输至客户端,当然还有json的形式,看情况选择使用哪种方式