struts2针对几种响应场景的配置

首先是web.xml的配置 
Xml代码   收藏代码
  1. <filter>  
  2.         <filter-name>struts2</filter-name>  
  3.         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  
  4.     </filter>  
  5.       
  6.     <filter-mapping>  
  7.         <filter-name>struts2</filter-name>  
  8.         <url-pattern>*.action</url-pattern>  
  9.     </filter-mapping>    
  10.           
  11.     <servlet>    
  12.         <servlet-name>CXFServlet</servlet-name>    
  13.         <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>    
  14.         <load-on-startup>1</load-on-startup>    
  15.     </servlet>    
  16.     
  17.     <servlet-mapping>    
  18.         <servlet-name>CXFServlet</servlet-name>    
  19.         <url-pattern>/webservice/*</url-pattern>    
  20.     </servlet-mapping>  

我用的struts2的版本是2.3.4.1,所以这里的<filter>应该是StrutsPrepareAndExecuteFilter,不再是旧的DispatcherFilter 

另外这里的<filter-mapping>,我配的不是/*,而是*.action,目的是不把特殊路径的请求,交给struts2处理,比如下面的/webservice/*,就不要经过struts2 

下面是struts.xml的配置 
Xml代码   收藏代码
  1. <package name="bookManage" extends="json-default" namespace="/book">  
  2.           
  3.         <interceptors>  
  4.               
  5.             <interceptor name="loginInterceptor" class="loginInterceptor" />  
  6.               
  7.             <interceptor-stack name="secureStack">  
  8.                 <interceptor-ref name="loginInterceptor" />  
  9.                 <interceptor-ref name="defaultStack" />  
  10.             </interceptor-stack>  
  11.               
  12.         </interceptors>  
  13.           
  14.         <default-interceptor-ref name="secureStack" />  
  15.           
  16.         <global-results>  
  17.              <result name="login" type="redirectAction">../login.action</result>  
  18.         </global-results>  
  19.           
  20.         <action name="list" class="bookAction" method="list">  
  21.             <result name="success">../jsp/bookManage/bookList.jsp</result>  
  22.         </action>  
  23.           
  24.         <action name="delete" class="bookAction" method="delete">  
  25.             <result name="success" type="redirectAction">list.action</result>  
  26.         </action>  
  27.           
  28.         <action name="originAjax" class="bookAction" method="originAjax" />  
  29.   
  30.         <action name="pluginAjax" class="bookAction" method="pluginAjax">  
  31.             <result type="json">  
  32.                 <param name="excludeNullProperties">true</param>  
  33.             </result>  
  34.         </action>  
  35.           
  36.     </package>  

以上的配置有简化,分别针对4种不同的场景: 



第一种,Action处理后跳转到jsp页面 
Xml代码   收藏代码
  1. <action name="list" class="bookAction" method="list">  
  2.             <result name="success">../jsp/bookManage/bookList.jsp</result>  
  3.         </action>  

这里默认的resultType是dispatcher 

对应的Action写法 
Java代码   收藏代码
  1. public String list() {  
  2.         books = bookService.getAllBooks();  
  3.         return SUCCESS;  
  4.     }  




第二种,Action处理后,流转到另外一个Action,相当于Servlet规范中的redirect 
Xml代码   收藏代码
  1. <action name="delete" class="bookAction" method="delete">  
  2.             <result name="success" type="redirectAction">list.action</result>  
  3.         </action>  

这里的resultType是redirectAction 

对应的Action写法 
Java代码   收藏代码
  1. public String delete() {  
  2.         bookService.deleteBookById(id);  
  3.         return SUCCESS;  
  4.     }  



第三种,在Action中直接写响应,不流转 
Xml代码   收藏代码
  1. <action name="originAjax" class="bookAction" method="originAjax" />  

这里就没有<result>元素 

对应的Action写法 
Java代码   收藏代码
  1. public void originAjax() throws IOException {  
  2.         HttpServletResponse response = ServletActionContext.getResponse();  
  3.         PrintWriter writer = response.getWriter();  
  4.         writer.print("hello " + ajaxField);  
  5.         writer.flush();  
  6.         writer.close();  
  7.     }  




第四种,通过json插件,返回json字符串,不流转 
Xml代码   收藏代码
  1. <action name="pluginAjax" class="bookAction" method="pluginAjax">  
  2.             <result type="json">  
  3.                 <param name="excludeNullProperties">true</param>  
  4.             </result>  
  5.         </action>  

这里的resultType是json,这种方式本质上和第三种一样 

对应的Action写法 
Java代码   收藏代码
  1. public String pluginAjax() {  
  2.         ajaxField = "hello " + ajaxField;  
  3.         return SUCCESS;  
  4.     }  

另外,这里面配置了拦截器、拦截器栈、全局result,可以把这些东西提取到公共的package里,让其它的业务子package来extends
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值