struts返回( return)的问题

    技术2022-05-19  22

    整理了网上的一些资料

      附上一些链接:

    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进行了很好的封装)

     

    还有待完善,求指导

     


    最新回复(0)