`
zwdsmileface
  • 浏览: 155285 次
社区版块
存档分类
最新评论

struts2自定义Filter

阅读更多
在struts2中自定义filter 防止用户通过手动输入网址进行相应操作
SessionFilter.java
public class SessionFilter implements Filter {
	
	public FilterConfig config;
	
	public void destroy() {
		// TODO Auto-generated method stub
		this.config=null;
	}
	public static boolean isContains(String container, String[] regx) {  
        boolean result = false;  
  
        for (int i = 0; i < regx.length; i++) {  
            if (container.indexOf(regx[i]) != -1) {  
                return true;  
            }  
        }  
        return result;  
    }  
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {  
        HttpServletRequest hrequest = (HttpServletRequest)request;  
        HttpServletResponseWrapper wrapper = new HttpServletResponseWrapper((HttpServletResponse) response);  
          
        String logonStrings = config.getInitParameter("logonStrings");         
        String includeStrings = config.getInitParameter("includeStrings");      
        String redirectPath = hrequest.getContextPath() + config.getInitParameter("redirectPath"); 
        String disabletestfilter = config.getInitParameter("disabletestfilter");
          
        if (disabletestfilter.toUpperCase().equals("Y")) {    
            chain.doFilter(request, response);  
            return;  
        }  
        String[] logonList = logonStrings.split(";");  
        String[] includeList = includeStrings.split(";");  
          
        if (!this.isContains(hrequest.getRequestURI(), includeList)) {
            chain.doFilter(request, response);  
            return;  
        }  
          
        if (this.isContains(hrequest.getRequestURI(), logonList)) {
            chain.doFilter(request, response);  
            return;  
        }  
          
        String user = ( String ) hrequest.getSession().getAttribute("name");
        if (user == null) {  
            wrapper.sendRedirect(redirectPath);  
            return;  
        }else {  
            chain.doFilter(request, response);  
            return;  
        }  
    }  
	public void init(FilterConfig filterConfig) throws ServletException {
		// TODO Auto-generated method stub
		config = filterConfig;  
	}

}
在web.xml中的配置
<filter>  
	    <filter-name>SessionFilter</filter-name>  
	    <filter-class>filter.SessionFilter</filter-class>  
	    <init-param>  
	        <param-name>logonStrings</param-name><!-- 对登录页面不进行过滤 -->  
	        <param-value>/project/index.jsp;login.action</param-value>  
	    </init-param>  
	    <init-param>  
	        <param-name>includeStrings</param-name><!-- 只对指定过滤参数后缀进行过滤 -->  
	        <param-value>.action;.jsp</param-value>  
	    </init-param>  
	    <init-param>  
	        <param-name>redirectPath</param-name><!-- 未通过跳转到登录界面 -->  
	        <param-value>/</param-value>  
	    </init-param>  
	    <init-param>  
	        <param-name>disabletestfilter</param-name><!-- Y:过滤无效 -->  
	        <param-value>N</param-value>  
	    </init-param>  
	</filter>  
	<filter-mapping>  
	    <filter-name>SessionFilter</filter-name>  
	    <url-pattern>/*</url-pattern>  
	</filter-mapping>
 
分享到:
评论

相关推荐

    struts2实例 自定义过滤器 文件上传下载 登录功能

    本实例展示了如何在Struts2环境中实现几个关键功能:自定义过滤器、文件上传下载以及用户登录功能。这些功能是任何Web应用程序的基础组成部分,理解和掌握它们对于提升Web开发技能至关重要。 首先,我们来探讨...

    使用struts2拦截器对登陆权限验证

    在Struts2中,拦截器(Interceptor)扮演着至关重要的角色,它允许开发者在动作执行前后插入自定义逻辑,如日志记录、权限验证等。在本案例中,我们将深入探讨如何使用Struts2拦截器实现登录权限验证,同时结合...

    struts2如何配置与自定义类型转换

    Struts2是一个强大的MVC框架,它在处理用户请求时涉及到数据类型的转换,这在处理复杂的表单数据或者自定义对象时尤其重要。本篇文章将详细介绍如何在Struts2中进行配置与自定义类型转换。 首先,Struts2的配置主要...

    自定义拦截器struts2源代码

    记得检查`web.xml`中的`filter`和`filter-mapping`配置,它们是Struts2与请求交互的关键部分。 总之,自定义Struts2拦截器是一项强大的技术,可以增强应用程序的控制和扩展性。通过分析提供的源代码,你可以深入...

    struts2完整版

    &lt;filter-class&gt;org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter&lt;/filter-class&gt; &lt;/filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;struts2&lt;/filter-name&gt; &lt;url-pattern&gt;/* &lt;/filter-mapping&gt; ``...

    结合struts2编写的通用过滤器filter

    本示例中的“通用过滤器filter”是专门为Struts2设计的,用于增强应用的安全性和功能性。 过滤器(Filter)在Java Servlet规范中定义,是基于请求/响应模型工作的。它们通过实现`javax.servlet.Filter`接口,并重写...

    Struts2视频教程

    Struts2使用过滤器(Filter)作为前端控制器,相比于Struts1使用servlet作为前端控制器更加优雅。 - **适用范围**:Struts2广泛应用于企业级Java Web项目的开发中,特别是那些需要处理大量用户交互和数据展示的应用。 ...

    马士兵Struts2笔记2013

    此外,Struts2也支持自定义验证逻辑和全局错误处理。 7. **Struts ValueStack(值栈)** ValueStack是Struts2的核心组件之一,它是一个数据存储结构,用于管理Action上下文中的对象。Action中的属性会被放入...

    Struts2框架 jar JAVA开发 Struts2.jar架包 Struts2开发实例

    然后配置web.xml文件,设置Struts2的前端控制器Filter。接着,创建Action类,它是业务逻辑的载体,并通过注解或配置文件进行配置。最后,定义视图层的JSP页面,利用Struts2的标签库来展示结果。 **Struts2配置文件*...

    struts2讲义 struts2讲义struts2讲义struts2讲义struts2讲义

    - 在web.xml中配置过滤器(Filter),通常使用`FilterDispatcher`作为入口点,它是Struts2的核心组件之一。 - 这个过滤器会捕获所有进入Web应用的HTTP请求,并将它们传递给Struts2框架处理。 - 配置过程中需要注意...

    让Struts2 在NetBeans 6中安家

    虽然NetBeans 6中并没有内置对Struts2的支持,但是借助自定义Library和手动配置,完全能够实现Struts2与NetBeans 6的无缝衔接。这一过程不仅增强了你对框架原理的理解,同时也提升了你在复杂环境下解决问题的能力。...

    Struts2 创建简单步骤

    Struts2是一个强大的MVC(Model-View-Controller)框架,...在实际开发中,你可能需要进一步学习Struts2的拦截器、结果类型、OGNL表达式、自定义拦截器、国际化、模型驱动等特性,以更好地利用这个框架提供的强大功能。

    struts2讲义,讲解struts2的框架

    在Struts1中,框架通过Servlet启动,而在Struts2中,它通过Filter启动。在`web.xml`配置文件中,需要定义一个名为`struts2`的过滤器,类为`org.apache.struts2.dispatcher.FilterDispatcher`。过滤器的映射应覆盖...

    struts2_filter_error.rar_filter err

    检查web.xml文件中的Struts2 Filter配置,确保`&lt;filter&gt;`和`&lt;filter-mapping&gt;`元素正确无误。过滤器类名应为`org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter`,并确保它被正确映射到`/*`或...

    Struts2初步使用总结

    Struts2提供了一系列默认的拦截器,并允许用户自定义拦截器。 **3.3 ActionMapper** `ActionMapper`负责将HTTP请求映射到对应的Action上。大部分情况下,`ActionMapper`并不需要显式配置,它会自动根据请求路径...

    struts2之配置实用案例struts001

    &lt;filter-class&gt;org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter&lt;/filter-class&gt; &lt;/filter&gt; &lt;filter-mapping&gt; &lt;filter-name&gt;struts2&lt;/filter-name&gt; &lt;url-pattern&gt;/* &lt;/filter-mapping&gt; `...

    struts2中文件上传过滤codeFilter

    在Struts2框架中,文件上传是一个常见的功能,它允许用户通过Web应用程序上传文件到服务器。`codeFilter`在此上下文中通常是指一个自定义过滤器,用于在文件上传过程中进行额外的安全检查或处理。这个过滤器可以防止...

    Struts2课堂学习总结

    `&lt;filter&gt;`标签内指定了过滤器名称和类,`&lt;filter-mapping&gt;`则指定了所有URL(通过`/*`)都将通过Struts2的`StrutsPrepareAndExecuteFilter`过滤器进行处理。避免使用像`/*.do`或`/*.action`这样的特定约定,以保持...

    struts2的lib包

    2. **Interceptor**(拦截器):拦截器是Struts2的一大特色,它允许开发者在Action执行前后插入自定义的处理逻辑,如权限验证、日志记录、性能监控等。拦截器的组合使用可以构建出强大的功能模块。 3. **Result**:...

    Struts2源码分析

    `FilterDispatcher`则是一个Servlet Filter,根据配置文件来决定哪些请求需要经过Struts2处理。如果配置不当,可能会导致问题,如将所有URL模式设为`/*`,确保所有请求都会经过Struts2过滤器。 `ActionProxy`是`...

Global site tag (gtag.js) - Google Analytics