struts2为什么用拦截器?有什么好处?起什么作用?

本文详细介绍了Struts2框架中的拦截器概念及其重要作用。解释了拦截器如何帮助开发者在Action执行前后添加处理逻辑,实现代码模块化及重用。此外,还探讨了通过拦截器实现的具体功能,如日志记录、登录验证和权限检查。

struts2为什么用拦截器?有什么好处?起什么作用?

指尖冰凉°d5  |  浏览 5521 次   问题未开放回答  |举报
该问题下回答为网友贡献,仅供参考。
推荐于2016-08-28 05:30:26 最佳答案
拦截器(interceptor)是Struts2最强大的特性之一,也可以说是struts2的核心,拦截器可以让你在Action和result被执行之前或之后进行一些处理。同时,拦截器也可以让你将通用的代码模块化并作为可重用的类。
Struts2中的很多特性都是由拦截器来完成的。拦截是AOP的一种实现策略。拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行。同时也是提供了一种可以提取action中可重用的部分的方式。

xiaofeizm55333 

采纳率:73% 来自团队:IT之禅 擅长: JAVA相关

其他回答

拦截器可以说相当于是个过滤器:就是把 不想要的或不想显示的内容给过滤掉。拦截器可以抽象出一部分代码可以用来完善原来的action。同时可以减轻代码冗余,提高重用率。
比如在登入一个页面时,如果要求用户密码、权限等的验证,就可以用自定义的拦截器进行密码验证和权限限制。对符合的登入者才跳转到正确页面。这样如果有新增权限的话,不用在action里修改任何代码,直接在interceptor里修改就行了。
(个人观点,请选择看待!)
 本回答被提问者采纳
度智媛    |  推荐于2016-06-02 11:47:22
评论 
36  4
1、拦截器是struts2的核心,拦截器可以让你在Action和result被执行之前或之后进行一些处理。
2、好处:拦截器也可以让你将通用的代码模块化并作为可重用的类。Struts2中的很多特性都是由拦截器来完成的。
3、作用:可以构成拦截器栈,完成特定功能。比如日志记录、登录判断、权限检查等作用。
sunjinfu1987    |  发布于2015-12-15 23:01
评论 
7 
Struts2中创建自定义拦截器需要以下几个步骤: 1. **创建自定义拦截器类**:继承自`com.opensymphony.xwork2.interceptor.Interceptor`,并实现`com.opensymphony.xwork2.interceptor.Interceptor`接口中的`intercept(ActionInvocation invocation)`方法。 2. **注册拦截器**:在你的`struts.xml`文件中注册这个拦截器。 3. **使用拦截器**:在需要的地方配置拦截器。 下面是一个具体的示例: ### 1. 创建自定义拦截器类 首先,创建一个自定义的拦截器类,例如`MyCustomInterceptor`: ```java package com.example; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; import com.opensymphony.xwork2.interceptor.Interceptor; public class MyCustomInterceptor extends AbstractInterceptor { @Override public String intercept(ActionInvocation invocation) throws Exception { // 在调用实际的action之前执行的逻辑 System.out.println("Before action execution"); // 调用实际的action String result = invocation.invoke(); // 在调用实际的action之后执行的逻辑 System.out.println("After action execution"); return result; } } ``` ### 2. 注册拦截器 接下来,在`struts.xml`文件中注册这个拦截器: ```xml <struts> <package name="default" namespace="/" extends="struts-default"> <!-- 注册自定义拦截器 --> <interceptors> <interceptor name="myCustomInterceptor" class="com.example.MyCustomInterceptor"/> </interceptors> <!-- 将自定义拦截器添加到默认拦截器堆栈 --> <default-interceptor-ref name="myCustomInterceptor"/> </package> </struts> ``` ### 3. 使用拦截器 最后,你可以在需要的地方使用这个拦截器,例如在一个action上: ```xml <struts> <package name="default" namespace="/" extends="struts-default"> <!-- 注册自定义拦截器 --> <interceptors> <interceptor name="myCustomInterceptor" class="com.example.MyCustomInterceptor"/> </interceptors> <!-- 将自定义拦截器添加到默认拦截器堆栈 --> <default-interceptor-ref name="myCustomInterceptor"/> <!-- 定义一个action --> <action name="exampleAction" class="com.example.ExampleAction"> <result type="dispatcher">/example.jsp</result> </action> </package> </struts> ``` 通过以上步骤,你就成功地创建了一个自定义拦截器并在Struts2中使用了它。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值