`
234390216
  • 浏览: 10233087 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A5ee55b9-a463-3d09-9c78-0c0cf33198cd
Oracle基础
浏览量:462628
Ad26f909-6440-35a9-b4e9-9aea825bd38e
springMVC介绍
浏览量:1775522
Ce363057-ae4d-3ee1-bb46-e7b51a722a4b
Mybatis简介
浏览量:1398369
Bdeb91ad-cf8a-3fe9-942a-3710073b4000
Spring整合JMS
浏览量:395023
5cbbde67-7cd5-313c-95c2-4185389601e7
Ehcache简介
浏览量:679990
Cc1c0708-ccc2-3d20-ba47-d40e04440682
Cas简介
浏览量:530894
51592fc3-854c-34f4-9eff-cb82d993ab3a
Spring Securi...
浏览量:1183954
23e1c30e-ef8c-3702-aa3c-e83277ffca91
Spring基础知识
浏览量:467938
4af1c81c-eb9d-365f-b759-07685a32156e
Spring Aop介绍
浏览量:151400
2f926891-9e7a-3ce2-a074-3acb2aaf2584
JAXB简介
浏览量:68154
社区版块
存档分类
最新评论

使用struts2时定义一个servlet过滤器

阅读更多

我一般使用struts2的时候都是匹配所有类型的,这时候就会出现一个问题,当去访问一个servlet的时候就系统会把它当作一个action来访问,就会出现找不到action的问题。所以这个时候就需要实现一个filter来过滤servlet,并且这个filter要放在struts2的filter之前,要在把它当作一个action之前直接把它进行跳转访问servlet

 

 

代码:

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

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;


public class ServletFilter implements Filter {

	private List<String> targets = new ArrayList<String>();
	
	public void destroy() {
		// TODO Auto-generated method stub

	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		// TODO Auto-generated method stub
		HttpServletRequest req = (HttpServletRequest)request;
		HttpServletResponse resp = (HttpServletResponse)response;
		String uri = req.getRequestURI();
		String target = uri.indexOf("?") > 0 ? uri.substring((uri.lastIndexOf("/")+1),uri.indexOf("?")) : uri.substring(uri.lastIndexOf("/")+1);
		//servlet的URL用的都是servlet/servlet的名称
		if (uri.contains("servlet") && targets.contains(target)) {
			req.getRequestDispatcher(uri.substring(9)).forward(req, resp);
		} else {
			chain.doFilter(req, resp);
		}
	}

	public void init(FilterConfig config) throws ServletException {
		// TODO Auto-generated method stub
		String targets = config.getInitParameter("targets");//在web.xml里面声明的filter里面的参数指定哪些servlet是需要过滤的,也可以不指定,直接过滤所有的servlet
		this.targets.addAll(Arrays.asList(targets.split(",")));
	}

}
0
2
分享到:
评论

相关推荐

    struts2配置过滤器

    本文将通过一个具体的示例来详细介绍如何在Struts2项目中配置过滤器。 #### 二、过滤器配置实例分析 ##### 2.1 web.xml配置解析 在给定的web.xml配置文件中,可以看到对`SessionInvalidate`过滤器进行了定义和...

    tomcat、struts2、servlet Filter(过滤器) 工作原理

    Servlet Filter(过滤器)是Servlet API的一部分,它允许开发者在请求被Servlet处理之前或之后对请求和响应进行拦截和修改。Filter可以用来实现如登录验证、字符编码转换、日志记录等多种功能。当一个请求到达Web...

    Java servlet过滤器配置详解

    本篇将深入讲解Java Servlet过滤器的配置,包括`EncodingFilter`类的使用、jsp页面配置以及`web.xml`文件的配置。 首先,`EncodingFilter`是一个常见的过滤器,主要用于解决HTTP请求和响应中的编码问题。在处理中文...

    Struts2中Servlet的配置

    当一个项目同时使用了Struts2框架和直接的Servlet时,可能会遇到问题,因为Struts2有自己的请求处理流程,可能会覆盖或干扰到Servlet的正常工作。为了解决这个问题,可以创建一个过滤器,例如`ReDispatcherFilter`...

    struts2.0字符编码使用过滤器

    在Web应用的`web.xml`配置文件中,我们需要定义一个过滤器,并将其关联到Struts2的Action请求。过滤器的配置包括: - 定义过滤器类:通常实现`javax.servlet.Filter`接口。 - 配置过滤器映射,将过滤器应用于所有...

    过滤器 Struts2全局变量 action转化do

    Struts2是一个非常流行的Java Web框架,用于构建MVC(模型-视图-控制器)架构的应用程序。在Struts2中,过滤器扮演着至关重要的角色,它们在请求到达实际的Action之前处理HTTP请求,提供了诸如认证、授权、数据转换...

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

    总的来说,这个"通用过滤器filter"是Struts2项目的一个实用组件,它增强了应用的安全性并简化了配置工作。通过理解和定制这样的过滤器,开发者可以更好地控制Web应用的行为,同时确保用户交互的安全。

    java-web -- servlet 拦截器 过滤器使用

    过滤器可以形成一个链,按照定义的顺序执行。 再来看拦截器(Interceptor),这是Java EE中的一个高级概念,尤其在Spring MVC和Struts2等框架中常见。拦截器不直接参与到Servlet生命周期,而是工作在Controller调用...

    基于struts2的文件上传+过滤器

    本篇文章将详细介绍如何在Struts2中实现文件上传功能以及使用过滤器进行文件类型的过滤。 首先,理解Struts2文件上传的基本原理。Struts2提供了`org.apache.struts2.interceptor.FileUploadInterceptor`拦截器来...

    struts2用cookie实现自动登录中用过滤器执行读取上下文方法

    在Struts2中,可以通过实现`Filter`接口或者继承`FilterDispatcher`类来自定义过滤器。在这个过滤器的`doFilter`方法中,我们可以检查请求是否带有自动登录相关的Cookie。如果找到该Cookie,就从Cookie中解析出用户...

    struts过滤器(拦截器)程序.zip

    在`struts过滤器(拦截器)程序.zip`中,我们可以看到这些概念如何在实际项目中得到运用,包括`web.xml`的配置、`struts.xml`的拦截器定义以及相关的Java源码和JSP页面,它们共同构成了一个完整的Struts2应用实例。

    struts03:拦截器、过滤器与拦截器的区别、文件上传

    过滤器是标准的Servlet组件,可在任何支持Servlet的Web应用中使用。 - **生命周期**:拦截器的生命周期由框架控制;过滤器的生命周期由Servlet容器控制,可以独立于应用启动和关闭。 3. 文件上传 - **基本概念**...

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

    Struts2是一个强大的MVC框架,它为Java Web应用程序提供了优雅的架构支持。在Struts2中,拦截器(Interceptor)扮演着至关重要的角色,它允许开发者在动作执行前后插入自定义逻辑,如日志记录、权限验证等。在本案例...

    Struts2主要Lib

    3. **配置文件**:Struts2的配置文件通常是`struts.xml`,定义了Action与结果的映射,过滤器设置,拦截器链等。它允许开发者以声明式的方式配置应用程序的行为。 4. **拦截器(Interceptor)**:拦截器是Struts2的...

    Struts2(一)

    - **配置控制器**:在`web.xml`中配置Struts2的过滤器(Filter),这一步骤至关重要,因为Struts2使用过滤器而非Servlet作为控制器,这相比Struts1是一个重大改进。 - **验证搭建结果**:完成以上步骤后,部署应用并...

    struts2讲义,讲解struts2的框架

    在`web.xml`配置文件中,需要定义一个名为`struts2`的过滤器,类为`org.apache.struts2.dispatcher.FilterDispatcher`。过滤器的映射应覆盖所有URL,以便所有请求都能被Struts2处理。当FilterDispatcher初始化时,它...

    Struts2框架搭建

    在`web.xml`文件中,添加一个名为`struts2`的过滤器,指向`org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter`类,并设定对应的过滤器映射。 运行项目,通过浏览器访问配置好的URL,你应该能...

    Struts2工作机制

    Struts2的核心是`FilterDispatcher`,它是一个Servlet过滤器。当用户发起HTTP请求时,`FilterDispatcher`首先会被调用。这个过滤器负责拦截请求,根据配置(通常在struts.xml文件中)决定如何处理请求。配置中,...

Global site tag (gtag.js) - Google Analytics