`
shukuiyan
  • 浏览: 413588 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在struts2中使用filter来配置servlet处理业务。。。。

阅读更多

在一个struts2项目中,如果同时用到了servlet和struts2的框架,运行项目时可能无法正常使用servlet,原因是在配置struts2的核心控制器时如下配置所致

<filter>
  <filter-name>struts2</filter-name>
  <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
 </filter>

 <filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

此时要想请求不经过该FilterDispatcher过滤器而直接响应servlet,可以通过自定义一个过滤器,将servlet过滤,使struts2的核心控制器对servlet不起作用。注意:在xml文件中定义的servlet过滤器要写在struts2核心控制器前面,否则还是不能使用。举例来说,定义的过滤器文件是ReDispatcherFilter.java,只需按照该文件中注释内容做以下配置,即可

<filter>
   <filter-name>redisp</filter-name>
   <filter-class>filters.ReDispatcherFilter</filter-class>
   <init-param>
    <param-name>includeServlets</param-name>
    <param-value>attachmentUpload.do,aa.do</param-value>
   </init-param>
 </filter>
 <filter-mapping>
   <filter-name>redisp</filter-name>
   <url-pattern>/*</url-pattern>
 </filter-mapping>
   <servlet>
        <servlet-name>attachmentUpload</servlet-name>
        <servlet-class>com.yan.AttachmentUploadServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>attachmentUpload</servlet-name>
        <url-pattern>/attachmentUpload.do</url-pattern>
    </servlet-mapping>

在filters包下定义ReDispatcherFilter类,如下:

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

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

public class ReDispatcherFilter implements Filter {

public void destroy() {
   // TODO Auto-generated method stub

}

public void doFilter(ServletRequest req, ServletResponse resp,
    FilterChain chain) throws IOException, ServletException
{
 
   System.out.println(" filter  beginning...........");
 HttpServletRequest request = (HttpServletRequest)req;
   String target = request.getRequestURI();
   target = target.lastIndexOf("?")>0  
      ?target.substring(target.lastIndexOf("/")+1,target.lastIndexOf("?")-target.lastIndexOf("/"))
      :target.substring(target.lastIndexOf("/")+1);
 
   System.out.println(target);
   for(int i=0;i<this.includes.size();i++)
    System.out.println(this.includes.get(i));
   if(this.includes.contains(target))
   {
    System.out.println("includes.contains(target) is true");
    RequestDispatcher rdsp = request.getRequestDispatcher(target);
  
    System.out.println("go..............."+rdsp);
    rdsp.forward(req, resp);
   }
   else
    chain.doFilter(req, resp);
}
private ArrayList<String> includes = new ArrayList<String>();

public void init(FilterConfig config) throws ServletException {
 
   this.includes.addAll( Arrays.asList(config.getInitParameter("includeServlets").split(",")));

}

}

http://hi.baidu.com/xsl2007/blog/item/4eb796cf94e35f0992457e11.html

分享到:
评论

相关推荐

    Struts2中Servlet的配置

    在Struts2中,Servlet的配置和使用方式与标准Servlet容器中的配置有所不同,主要是为了更好地整合框架的功能。以下是关于Struts2中Servlet配置的相关知识点: 1. **实现ServletResponseAware/ServletRequestAware...

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

    在Struts2中,用户请求首先会被Struts2的ActionServlet拦截,然后通过配置的Action映射找到对应的Action类来处理请求。Action执行完成后,返回一个Result,该Result定义了如何展示结果,可能是跳转到一个新的JSP页面...

    Servlet简单模拟Struts2

    在本主题"Servlet简单模拟Struts2"中,我们将探讨如何利用Servlet来实现类似Struts2框架的一些关键功能,包括请求拦截、XML配置解析、动态代理以及日志拦截。 首先,让我们了解一下Struts2框架的核心特性。Struts2...

    Struts2 part 3:在Action中使用ServletAPI

    在"Struts2 part 3:在Action中使用ServletAPI"这一主题中,我们将深入探讨如何在Struts2的动作类(Action)中集成和利用Servlet API来增强应用的功能。 Servlet API是Java Servlet规范的一部分,它提供了一系列...

    Servlet和Struts2的交互(转载)

    2. 使用Filter转发:配置Struts2的Filter在Servlet处理完请求后,将控制权交给Struts2,由Struts2来决定下一步的动作。 Struts2提供了许多强大的特性,如拦截器(Interceptor)、插件机制、OGNL表达式语言等。拦截...

    struts2所有包和配置文件

    在Struts2中,`web.xml`通常会包含Struts2的前端控制器Servlet,即`org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter`的配置。这个过滤器负责拦截HTTP请求,并将它们路由到Struts2的Action类...

    struts2配置过滤器

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

    struts2配置文件

    其次,`web.xml`是Servlet容器的部署描述符,虽然不是Struts2特有的,但在Struts2应用中也需要进行配置。以下是`web.xml`中与Struts2相关的配置: 1. **Struts2 Filter**:你需要定义一个`Filter`来初始化Struts2...

    Struts2之Servlet API及单元测试初识案例struts005

    Struts2框架在处理HTTP请求时,会利用Servlet API中的Servlet、Filter和ServletConfig等接口。例如,`Filter`接口用于拦截和处理请求,`Servlet`接口则用于处理请求和响应,而`ServletConfig`提供了与Web应用相关的...

    Struts2_interceptor_和_filter区别

    在Web应用的部署描述文件`web.xml`中,通过`&lt;filter&gt;`和`&lt;filter-mapping&gt;`元素来配置Filter及其映射规则。 - **Interceptor** 的实现则需创建一个实现`org.apache.struts2.interceptor.Interceptor`接口的类,主要...

    Struts2内容整理

    * 在 web.xml 文件中,我们可以配置 Struts2 框架的 Filter,用于将请求路由到 Struts2 框架中。 * 在 struts.xml 文件中,我们可以配置 Struts2 框架的各种常量、Action、结果类型等。 Struts2 的Action Action ...

    struts2 在eclipse 配置成功

    在Eclipse这个流行的Java集成开发环境中配置Struts2,可以帮助开发者更高效地构建动态Web项目。以下将详细介绍如何在Eclipse中成功配置Struts2。 1. **环境准备**: - 首先确保你的系统上已经安装了Java JDK和...

    struts2项目部署

    3. **配置web.xml**:在`web.xml`中配置Struts2的核心过滤器`org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter`。同时,确保配置了正确的Context路径和其他必要配置。 4. **配置struts.xml*...

    eclipse for javaee配置web开发环境(struts2+servlet+sping)字体.doc

    - 在Struts2的配置中,可以通过Action的`@Result`注解或`struts.xml`中的`result`元素指定Spring MVC的结果处理方式。 通过以上步骤,你将能够在Eclipse for JavaEE环境中配置一个基础的Web开发环境,支持Struts2、...

    struts2 使用action属性接收中文参数(post提交)

    在处理用户请求时,Struts2允许开发者通过Action类来接收和处理参数,包括中文参数。当我们需要通过POST方法提交包含中文字符的数据时,可能会遇到编码问题,因为HTTP请求默认使用的是ASCII编码,而中文字符需要UTF-...

    Struts2包和配置文件

    同时,`struts.xml`文件中的配置会指导Struts2如何处理请求和响应,你需要在这里定义Action、结果类型、拦截器栈等。 总之,Struts2包和配置文件为你提供了构建高效、结构化的Web应用的工具和蓝图。通过合理的配置...

    struts2配置环境需要的jar包

    3. **配置web.xml**:在`web.xml`中添加Struts2的Filter配置,如下: ```xml &lt;filter&gt; &lt;filter-name&gt;struts2&lt;/filter-name&gt; &lt;filter-class&gt;org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter...

    MAX的struts2教程、struts2 API、servlet API

    2. **配置与搭建**:讲解如何配置Struts2的XML配置文件,以及如何在项目中集成Struts2框架。 3. **Action与结果**:讲解如何创建Action类,处理用户请求,并返回不同的结果页面。 4. **拦截器**:介绍Struts2强大的...

    ssh中struts2,spring,各配置说明

    在实际开发中,可能还需要配置Hibernate相关的SessionFactory、TransactionManager等,但这些通常在Spring.xml中处理,不在web.xml中直接配置。SSH整合时,需要注意各个框架的版本兼容性,避免因版本不匹配导致的...

Global site tag (gtag.js) - Google Analytics