struts返回( return)的问题

来源:互联网 发布:mac ruby woo试色 编辑:程序博客网 时间:2024/05/13 05:21

整理了网上的一些资料

  附上一些链接:

1)struts.xml的常用配置解析

  http://www.java3z.com/cwbwebhome/article/article2/TestS3.html

2)struts返回数据

http://www.360doc.com/content/08/1128/11/61497_2010494.shtml

 

 

1.最基本的,如果执行完struts2的函数后想跳转到另一个页面,则在struts.xml里配置

      <package name="struts2" extends="struts-default">//name没有特定的要求用什么,一般是便于理解意思
            <action name="example" class="xxx.xxx" >
                <result name="success" >xxx.jsp</result>
            </action>
        </package>

 

  不得不说一下 result的 type属性了:默认是:”dispatcher“

 

  chain

    用来处理Action链

    com.opensymphony.xwork2.ActionChainResult

dispatcher

    用来转向页面,通常处理JSP

    org.apache.struts2.dispatcher.ServletDispatcherResult

freemaker

    处理FreeMarker模板

    org.apache.struts2.views.freemarker.FreemarkerResult

httpheader

    控制特殊HTTP行为的结果类型

    org.apache.struts2.dispatcher.HttpHeaderResult

redirect

    重定向到一个URL

    org.apache.struts2.dispatcher.ServletRedirectResult

redirectAction

    重定向到一个Action

    org.apache.struts2.dispatcher.ServletActionRedirectResult

stream

    向浏览器发送InputSream对象,通常用来处理文件下载,还可用于返回AJAX数据

    org.apache.struts2.dispatcher.StreamResult

velocity

    处理Velocity模板

    org.apache.struts2.dispatcher.VelocityResult

xslt

    处理XML/XLST模板

    org.apache.struts2.views.xslt.XSLTResult

plainText

    显示原始文件内容,例如文件源代码

    org.apache.struts2.dispatcher.PlainTextResult

redirect-action

    重定向到一个Action

    org.apache.struts2.dispatcher.ServletActionRedirectResult

plaintext

    显示原始文件内容,例如文件源代码

    org.apache.struts2.dispatcher.PlainTextResult

 

对于每一个type的具体应用,还没大弄懂,想用的时候网上应该能搜到。

 

 

2.如果想从struts只返回数据,页面不进行跳转(一般用ajax异步交换)

  方法一:引入json-plugin.jar包

  struts.xml按如下方式配置

  <package name="json" extends="json-default">   
         <action name="example" class="xxxAction" >
            <result name="" type="json"></result>
        </action>
    </package>

 

  方法二:将action 方法的return 值设定为null,将要返回的数据通过out.print或者。print.用个例子来说明吧。

    @Override
    public String execute() throws Exception {
        data=new ArrayList<String>();
        data.add("you and me");
        data.add("he and she");

        String test="test";


        HttpServletResponse response=ServletActionContext.getResponse();

        response.setContentType("text/html;charset=GBK");
        PrintStream out=new PrintStream(response.getOutputStream());


        out.print(data);

        out.print(test);   

      //或者

        ServletActionContext.getResponse().getWriter().write(data.toString());


        return null;
    }

  

    对应的struts.xml文件配置如下:

   <package name="struts2" extends="struts-default">       
           <action name="example" class="xxxAction" >
          <result></result>
          </action>
    </package>


   说明:

     方法二,在js前端得到的是string,你可以在前端将string转化为你想要的数据格式(比如json),例如对于jQuery可以使用jqGrid插件的方式

  


 前端采用ajax(可以选择jQuery,ExtJS,dwr等,都对ajax进行了很好的封装)

 

还有待完善,求指导