struts2中自定义拦截器

本文详细介绍了如何在Struts框架中通过自定义拦截器实现用户名权限验证,确保只有以'r'结尾的用户名才能访问特定命名空间下的Action。包括拦截器类的实现、配置文件调整及关键步骤解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天struts实验课 要求struts自定义拦截器,使用户名不是以r结尾的用户不不得访问/sec命名空间下的Action

很简单 从jsp页面中获取输入的用户名,在拦截器中判断下即可。
拦截器的实现类
“`
package interceptor;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class CheckQuanxian extends AbstractInterceptor {

@Override
public String intercept(ActionInvocation invocation) throws Exception {

// ActionContext ctx =invocation.getInvocationContext();// 获得Action上下文
// Map session = ctx.getSession(); // 获取session
// String user = (String) session.get(“username”);
HttpServletRequest request = ServletActionContext.getRequest();
String user = request.getParameter(“username”);
if (user.endsWith(“r”)) {
return invocation.invoke();
}
((ActionSupport) invocation.getAction()).addActionMessage(“用户名不是以r结尾,无权访问”);
return “login”;
}

}

但在拦截器的实现类中获取uesrname时遇到了麻烦
用invocation.getInvocationContext().getSession().get(“username”); 获取不到username的值。原因是根本就没向session里面存username这个值
解决办法
可用ServletActionContext访问servlet API用getParameter()获取

配置文件

注意配置文件有一定的是顺序的
result-types
interceptors
default-interceptor-ref
default-action-ref
default-class-ref
global-results
global-exception-mappings
action*(就是所有的action放到最后)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值