JSP 开发之Struts2内建自定义拦截器

网络编程 2025-03-30 04:39www.168986.cn编程入门

关于JSP开发中Struts2内建自定义的介绍

Struts2框架中的自定义是一种强大的工具,用于请求参数、为Action属性赋值、执行数据校验以及处理文件上传等操作。当需要扩展Struts2的功能时,我们可以通过创建自定义并将其配置到Struts2容器中来实现。

配置主要涉及到四个配置元素:

1. 配置元素:用于配置自定义的基本信息,包括的名称和实现的类。还可以配置的参数。

例如:

```xml

参数值

...

```

2. 栈配置元素:用于配置一个栈,一个栈中可以包含多个,也可以引用其他的栈。这些按照配置的先后顺序执行。

例如:

```xml

参数值

...

```

3. 在包配置中使用:配置好了之后,可以在Struts2的包配置中使用该。在使用自定义时,还必须显示地使用系统默认的defaultStack。

例如:

```xml

```

Struts2框架中提供了一个强大的实现类——AbstractInterceptor。这个类已经为我们实现了init()和destroy()方法,而我们只需专注于实现intercept()拦截方法即可。让我们通过一个简单的例子来展示如何使用它。

代码示例:

```java

public class SimpleInterceptor extends AbstractInterceptor {

private String username;

private String password;

// 省略setter和getter方法

@Override

public String intercept(ActionInvocation invocation) throws Exception {

// 获取被拦截的Action实例

LoginAction action = (LoginAction) invocation.getAction();

System.out.println("开始拦截:" + new Date());

// 记录开始时间

long start = System.currentTimeMillis();

// 回调执行Action被拦截的处理方法

String result = invocationvoke();

System.out.println("结束执行:" + new Date());

// 记录结束时间并计算执行时间

Long end = System.currentTimeMillis();

System.out.println("执行用时:" + (end - start) + "ms");

return result;

}

}

```

如果我们希望对特定的方法进行拦截,或者对某些方法放行,那么Struts2的MethodFilterInterceptor类将非常有用。它是AbstractInterceptor的子类,提供了更加细粒度的控制。这个类有三个主要方法,其中两个setter方法允许我们在配置时指定需要拦截或放行的方法。

配置示例:

```xml

login,execute

regiset

```

当多个作用于同一个Action时,它们的执行顺序遵循一定的规则。在Action的控制方法执行之前,先定义的会先执行;而在Action的控制方法执行之后,后定义的才会执行。这个规则在invocationvoke()这个点上进行分界。

感谢大家的阅读,希望这些内容能对大家有所帮助。如果您觉得本站内容有价值,请继续支持我们!

使用`cambrian.render('body')`来呈现文章内容。

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by