经过Action处理的结果需要展现成xml结构那么我想通过传统的struts2 在<result>success.jsp</result> 里面,就jsp里面结构按照标准的xml结构展现出来。
而有的同事想直接在Action里面通过 getResponse().getWriter();out.write(resultStr.toString());直接写出来。
也就不通过jsp来解析了。我想知道这2种方式 的性能有多大区别。如果不大的话,我倾向选择 通过Jsp来展现xml。谢谢!

解决方案 »

  1.   

    struts2中action中这样getResponse().getWriter();out.write(resultStr.toString());
    这样可得到想要结果么?
    能发下代码,见识下吗?
      

  2.   

    为什么不用titles框架?那个更容易
      

  3.   


    可以的。action :public String action() {
    Writer out = null;
    out = getResponse().getWriter();
    out.write("这是内容");
    out.flush();
    return NONE;//最重要的是这里。
    }
      

  4.   


    我感觉也不大,但是我倾向用 传统的struts2的result方式,这样思路更清晰,也好维护。
      

  5.   

    我同意LZ的做法、action里写那些代码给人感觉层次不清晰。
      

  6.   

    以前用的是直接在jsp页面拼装xml文件,形如:<%@ page contentType="text/html" pageEncoding="UTF-8"%>
    <%
      StringBuffer content = new StringBuffer(""); 
      content.append("<?xml version=\"1.0\"   encoding=\"UTF-8\" ?>");
      content.append("<roots>");
      content.append("<Week>");
      content.append(request.getAttribute("week"));
      content.append("</Week>");
      content.append("<Month>");
      content.append(request.getAttribute("month"));
      content.append("</Month>");
      content.append("<Quarter>");
      content.append(request.getAttribute("quarter"));
      content.append("</Quarter>");
      content.append("</roots>");
      response.setCharacterEncoding("UTF-8");
      out.print(content);
    %>
      

  7.   


    但是这些东西放在action里面拼接的,很不清晰想放在jsp里面拼接xml。不知道效率上影响大吗?
      

  8.   

    如果大家有什么结论告诉小弟,小弟好说服技术总监 改变 xml输出形式。。谢谢了。
      

  9.   

    使用jaxb之类的直接在action中生成xml不可以吗?
      

  10.   


    用response 传值给页面是比较好的方式吧...
    在页面中用js的xmlHttpRequest对象的responseXML获取xml数据,
    然后根据需要解析,用response配合 xmlHttpRequest对象正好也实现异步刷新,
    非刷新操作下实现对xml文件的操作,相对会好很多吧
      

  11.   

    那就试一试jaxb吧,jaxb是一种把xml映射成为后台java类的一种很好的处理方法。  可以根据xml文件生成对应的java类,也可以根据后台的类生成xml文件。也可以修改xml的数据,类似于添加数据。你有没有见过单纯的以xml文件作为web平台的页面?我们公司的平台就是xml为页面,其中用到了jaxb。
      

  12.   

    自己写个result的实现就可以。