关于将struts2框架下,使自定义过滤器对部分的action(一个action或多个action)请求忽略的方法

关于将struts2框架下,使自定义过滤器对部分的action请求忽略的方法

首先需要了解一个方法

request.getServletPath()

他将返回一个当前请求的路径的醉详细名称
例如对路径htt p://stuts/sss/test.action
返回"/test.action"
判断一下就好

判断情况有两种
一种只有一个需要忽略的路径,
一种有多个需要忽略的路径,

当然第二中是全面的,但有个缺点,需要辅助数组和标志,与循环判断,相比第一种,他只是一种解决办法罢了,可能还有更优,我没想出来
1(只有一个需要忽略的路径,)filter如下

@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
			throws IOException, ServletException {
		// TODO 自动生成的方法存根
		HttpServletRequest req = (HttpServletRequest) arg0;
		//忽略登录页面
		**if (!req.getServletPath().equals("/login.action")) {**
			if (req.getSession().getAttribute("user") == null||req.getSession().getAttribute("user").equals("")) {
				//重定向不含struts标签的其他页面
				arg0.getRequestDispatcher("/call/loginout.html").forward(arg0, arg1);
			}

		} else {
			//登录间隔最长时长默认30分钟
			req.getSession().setMaxInactiveInterval(60*30);
		}
		arg2.doFilter(arg0, arg1);
	}

2.对忽略多个action:

filter如下:

@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
			throws IOException, ServletException {
		// TODO 自动生成的方法存根
		HttpServletRequest req = (HttpServletRequest) arg0;
		// 忽略登录页面
		// 不能简单使用或表达式判断,不然只认第一个路径,所以方法如下
		**// 要忽略的路径数组
		String ignore[] = { req.getServletPath(), "/relogin.action", "/login.action" };
		// 多个路径判断忽略
		boolean flag = true;
		for (int i = 1; i < ignore.length; i++)
			if (ignore[0].equals(ignore[i])) {
				flag = false;
				break;
			}
		System.out.print(flag);
		// 忽略后操作**
		if (flag) {
			if (req.getSession().getAttribute("user") == null || req.getSession().getAttribute("user").equals("")) {
				// 重定向不含struts标签的其他页面
				arg0.getRequestDispatcher("/call/loginout.html").forward(arg0, arg1);
			}

		} else {
			// 登录间隔最长时长默认30分钟
			req.getSession().setMaxInactiveInterval(60 * 30);
		}

		arg2.doFilter(arg0, arg1);
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值