Struts2的控制器

本文深入解析Struts2框架的控制器组件,包括过滤器、拦截器与Action类的功能与配置。过滤器作为前端控制器,负责请求过滤;拦截器在Action之前执行,实现特定业务逻辑;而Action类则是用户自定义的控制器,负责执行具体的业务逻辑。

控制器(Controller)是MVC框架的核心部分,

Struts2框架的控制器由三种组件组成:过滤器、拦截器、Action类。


过滤器:

过滤器是Struts2控制器的最前端控制器,请求对象首先被过滤器过滤

1、ActionContextCleanUp过滤器:该过滤器是可选的,主要为了集成SiteMesh等插件。

2、其他过滤器:其他过滤器是根据需要配置的过滤器,例如,应用中使用到了SiteMesh这样的插件,就需要配置插件的相关过滤器。

3、FilterDispatcher过滤器:通过该过滤器的主要功能包括执行Action、清空ActionContext对象以及服务静态内容等,是Struts2应用中必须配置使用的过滤器。

web.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>/*</url-pattern>  
  9.     </filter-mapping>  
拦截器

<struts>
	<package name="com.etc.chapther" extheds="struts-default">
		<action name="Login" class="com.etc.action.LoginAction">
			<result name="success">/welcome.jsp</result>
			<result name="fail" >/index.jsp<result>
		</action>
	</package>
</struts>

上述struts.xml中的com.etc.chaper包没有定义默认拦截器引用,唯一的Action也没有定义拦截器引用,但是LoginAction仍然有拦截器。

因为配置文件struts.xml中的包都默认继承struts-defalut报,所以com.etc.chapter包定义了默认拦截器引用

<default-interceptor-ref name="defalutStack"/>


Action

Action是Struts2的第三层次的控制器,需要程序员自行开发。

------------------------------------------------

自定义拦截器

public class InterceptorTester implements Interceptor{
	
	public void destroy(){
		
	}
	public void init(){
		
	}
	public String intercept(ActionInvocation arg0) throws Exception{
		System.out.println("InterceptorTester拦截器被调用,拦截的Action的类名:"+arg0.getAction().getClass().getName());
		arg0.invoke();
		return null;
	}
}
在struts.xml中配置

<package name="com.etc.chapther" extheds="struts-default">
<interceptors>
<interceptor name="tester" class="com.etc.interceptor.InterceptorTester"></interceptor>
</interceptors>
</package>
<package name="com.etc.chapther" extheds="struts-default">
<action name="Login" class="com.etc.action.LoginAction">
<interceptor-ref name="defaultStack" ></interceptor-ref>
<interceptor-ref name="tester"></interceptor-ref>
<result name="success">/welcome.jsp</result>
<result name="fail" >/index.jsp<result>
</action>
</package>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值