最近做项目用到了servlet的过滤器,发现如果仅仅只是从web.xml文件上配置不够灵活,很难达到项目要求,用户体验度也不好,故在配置文件中加上过滤应用全局:
<filter>
<filter-name>Limit</filter-name>
<filter-class>com.spditir.filter.LimitFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Limit</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
只放行和登录模块相关的资源,如下:
package com.speed.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/*
* 安全过滤器修正v1版本
* 功能:只允许登录过的用户访问资源
*/
public class LimitFilter implements Filter {
FilterConfig filterconfig;
public void init(FilterConfig arg0) throws ServletException {
filterconfig = arg0;
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) arg0;
HttpServletResponse response = (HttpServletResponse) arg1;
String request_uri = request.getRequestURI();
String ctx_path = request.getContextPath();
if(request_uri.substring(ctx_path.length()).equals("/loginFailure.jsp")
|| request_uri.substring(ctx_path.length()).equals("/")
|| request_uri.substring(ctx_path.length()).equals("/validateCode.action")
|| request_uri.substring(ctx_path.length()).equals("/loginByForm.jsp")
|| request_uri.substring(ctx_path.length()).equals("/userMgr.action"))
{
System.out.println("------filter输出------安全验证登录通过uri:"+request_uri);
arg2.doFilter(arg0, arg1);
}else if(request_uri.substring(ctx_path.length()).equals("/images/login2.jpg")
||request_uri.substring(ctx_path.length()).equals("/images/enter.gif")
||request_uri.substring(ctx_path.length()).equals("/images/reset.gif")
||request_uri.substring(ctx_path.length()).equals("/images/shutdown.jpg")){
arg2.doFilter(arg0, arg1);
}else{
if (request.getSession().getAttribute("USER_INFO") == null) {
response.setCharacterEncoding("utf-8");
System.out.println(ctx_path+"/loginFailure.jsp");
response.sendRedirect(ctx_path+"/loginFailure.jsp");
return;
} else {
arg2.doFilter(arg0, arg1);
}
}
}
public void destroy() {
}
}
分享到:
相关推荐
Servlet过滤器的简单使用,实现一个登陆界面。代码和博文几乎一致。
servlet 过滤器做的简单登陆demo 初学者的简单例子。
servlet过滤器实例经典过滤器,手把手交你配置过滤器,五大常用过滤器源码,走过路过的同事们注意了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1、Filter接口:所有的Servlet过滤器类都必须实现javax.servlet.Filter接口 a、init(FilterConfig): 这是Servlet过滤器的初始化方法,Servlet容器创建Servlet过滤器实例后将调用这个方法。在这个方法中可以读取...
jsp+servlet登录验证过滤器jsp+servlet登录验证过滤器jsp+servlet登录验证过滤器
比较好也比较常见的方法是用专门的servlet过滤器进行过滤。java中有个Filter类专门从事这类工作,下面以一个简单的实例进行演示: 实例说明:假设有一个web应用软件,如果是正常途径登录,我们会在其session中放入...
用过滤器来验证用户是否登录
简单的实现了一个Servlet过滤器,并配有文档按步骤教你怎么做
servlet过滤器详解
servlet过滤器和监听器,servlet过滤器和监听器课件,servlet过滤器和监听器PPT
主要为大家详细介绍了servlet+jsp实现过滤器,防止用户未登录访问,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
servlet过滤器配置及运行过程,servlet实例用法。
如果输入是中文,后台servlet再次输出这个内容时,可能就会是乱码,这是因为serlvet中默认是以ISO-8859-1格式编码的,如果后台有多个Servlet,多个参数,这样就不合适,这个问题,我们可以通过一个过滤器统一解决,使...
servlet,filter,过滤器技术servlet,filter,过滤器技术
过滤器提供一种面向对象的模块化机制,用以将公共任务封装到可插入的组件中。...由于是纯Java实现,所以Servlet过滤器是跨平台的模块化和可重用性,使得它们很容易地被部署到任何相容的J2EE环境中。
java中servlet文字过滤器,取出一下页面上的乱码。我就就要用到servlet这个过滤器。
第13章使用Servlet过滤器和监听器,基础知识
一个超帅的jsp过滤器 ,对登录进行验证
servlet 过滤器例子 filterservlet 过滤器例子 filterservlet 过滤器例子 filter 如果是action 则需要改动url patten
Servlet过滤器大全