本文共 1919 字,大约阅读时间需要 6 分钟。
如何在 Struts 2 中配置和使用自定义拦截器
在 Struts 2 开发中,默认拦截器(defaultStack)提供了许多核心功能,如文件上传、数据验证等。为了实现更多定制化需求,我们可以创建自定义拦截器。以下将详细说明自定义拦截器的配置步骤。
拦截器在 Struts 2 中扮演着关键角色。通过拦截器,可以在 Action invoke 之前或之后执行自定义逻辑,如权限验证、日志记录等。默认拦截器 stack(defaultStack)包含 many 内置拦截器,如 OGNL 解析器、参数转换器和值域评估器等。若定义自己的拦截器,需确保引用默认 stack,以保持系统正常功能。
首先,创建一个实现 Interceptor 接口的类。Assume 我们需要一个权限验证的拦截器,名称为 permission:
public class PermissionInterceptor implements Interceptor { public void destroy() { // 适用于资源释放或 cleanup } public void init() { // 对于初始化逻辑 } public String intercept(ActionInvocation invocation) throws Exception { Object user = ActionContext.getContext().getSession().get("user"); if (user != null) { return invocation.invoke(); // 允许访问 } else { ActionContext.getContext().put("message", "权限不足"); return "error"; } }}
在 Struts configuration 文件中(通常位于应用的 struts.xml
),将自定义拦截器添加到现有的配置中。假设已经有一个 employee
包距intructure,我们在其中添加拦截器配置:
/WEB-INF/page/success.jsp
创建一个 Action 类以使用自定义拦截器。例如,HelloWorldAction 类:
public class HelloWorldAction { private String message; private Person person; // setter 和 getter 方法 public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public String addUI() { this.message = "添加 UI 成功"; return "success"; } public String execute() throws Exception { this.message = "系统执行成功"; return "success"; }}
完成以上步骤后,检查应用 server logs 是否有拦截器相关的错误信息,确保所有配置正确加载。同时,在 Action 类中添加 @Scope("prototype")
可以帮助处理多个请求的惯例。
通过以上配置,我们已成功实现并整合了一个自定义拦截器,用于对Action 的执行权限进行控制。这不仅增强了应用程序的安全性,也为未来扩展自定义拦截器提供了基础。
转载地址:http://oedrz.baihongyu.com/