struts2使用FilterDispatcher进行url过滤,默认是所有的url都过滤,但是项目中有些url是不想用struts2进行过滤的,网上搜了不少方法
1.修改web.xml文件。
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
只让过滤器对加有.action后缀的路径有效,如果需要拦截.jsp,加上*.jsp就行了。
但是这样如果有无后缀名的url(如/demo/)就不能过滤了
2.修改struts2核心jar中的default.properties文件
把struts.action.extension=action,,
改为struts.action.extension=action,do,jsp,
但我改了之后发现根本没效果,不知为何
3.自定义一个继承StrutsPrepareAndExecuteFilter的过滤器,将配置换成自己自定义的过滤器。(推荐此法)
public class ExtendStrutsFilter extends StrutsPrepareAndExecuteFilter {
@Override
public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
//不过滤的url,可以自行添加
if ("/demo/fileupload".equals(request.getRequestURI())) {
//System.out.println("使用自定义的过滤器");
chain.doFilter(req, res);
}else{
//System.out.println("使用默认的过滤器");
super.doFilter(req, res, chain);
}
}
}
修改web.xml
<!-- sturts2过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<!-- 改为自己的过滤器 -->
<filter-class>
com.filter.ExtendStrutsFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这种方法试验成功
分享到:
相关推荐
BIRT与Struts2的整合虽然带来了一些技术上的挑战,尤其是过滤器冲突的问题,但通过自定义BirtFilter并进行适当的配置,完全可以有效地解决这些问题。这对于那些希望在Struts2应用中集成强大报表功能的开发者来说,...
在使用富文本编辑器ueditor与Struts2框架结合进行图片上传时,常常会遇到一些问题,这些问题可能涉及文件过滤、文件类型限制、文件大小控制、上传路径设置等多个方面。以下是一些解决这些问题的关键知识点: 1. **...
`codeFilter`在此上下文中通常是指一个自定义过滤器,用于在文件上传过程中进行额外的安全检查或处理。这个过滤器可以防止恶意用户上传不安全的文件类型,例如脚本文件,或者限制文件大小以保护服务器资源。以下是对...
1. **依赖冲突**:在使用Struts2的过程中可能会遇到与其他框架的依赖冲突问题,解决方法通常是调整依赖版本或者排除不必要的依赖。 2. **配置错误**:配置文件的错误是常见的问题之一,可以通过仔细检查配置文件以及...
- **前端控制器模式**:Struts2的前端控制器是过滤器(Filter),而Spring MVC的前端控制器是DispatcherServlet。这种设计简化了请求处理流程。 - **请求处理流程**:当用户请求到达时,Struts2的前端控制器会根据配置...
Struts2是一个流行的Java web应用程序框架,用于构建MVC(模型-视图-控制器)架构的应用。...记得实践是学习的最佳途径,尝试创建一个简单的Struts2应用,将理论知识转化为实际操作,这将有助于巩固你的学习成果。
- 此步骤会自动添加Struts2的相关库,并在`src`目录下生成`struts.xml`配置文件,同时在`web.xml`中配置Struts2的过滤器。 3. **配置Struts2** - 在Struts2的配置界面,可以选择Struts2的版本和所需的Jar包。 - ...
4. **Struts2过滤器处理**:过滤器根据配置文件struts.xml中的信息来处理请求。 5. **解析namespace和action**:过滤器先根据namespace定位到相应的包(package),再根据action名称定位到具体的Action类。 6. **执行...
1. **web.xml**:Web容器级别的配置文件,主要用于配置过滤器,如**StrutsPrepareAndExecuteFilter**或**FilterDispatcher**。后者在早期版本中使用较多,但新版本更推荐使用前者,因为它提供了更多功能和更高效的...
在Java Web开发中,Spring... 首先,需要在项目中引入Struts2的依赖,并在web.xml中配置Struts2的核心过滤器`org.apache.struts2.dispatcher.FilterDispatcher`或更新版本的`org.apache.struts2.dispatcher.ng.filter....
在`web.xml`文件中,你需要定义一个名为`struts2`的过滤器,指定其类为`org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter`。这是从Struts2.1版本开始引入的,之前版本使用的是`...
- **web.xml**:它是Web应用的部署描述符,负责配置Servlet容器如何加载Struts2的核心过滤器`StrutsPrepareAndExecuteFilter`。通过这个过滤器,Struts2能够拦截所有的HTTP请求,并将其转发到相应的Action处理。 - ...
5. **过滤器配置**:Struts2的过滤器需要在web.xml中正确配置。确认`FilterDispatcher`或`StrutsPrepareAndExecuteFilter`已设置,并且在其他过滤器之前运行。 6. **类加载问题**:确保项目结构和构建工具(如Maven...
3. **配置web.xml**:在WEB-INF目录下,编辑web.xml文件,配置Struts2的过滤器,将Struts2的前端控制器指向所有的HTTP请求。 4. **创建Action类**:在src/main/java目录下创建Action类,继承Struts2的ActionSupport...
Struts2的主要目标是提供一个更加灵活和强大的解决方案,以解决Struts1.x版本中存在的问题,如表现层技术单一、与Servlet API耦合严重、不易测试等。 在Struts1.x中,表现层技术主要局限于JSP,与Servlet API耦合...