`

Struts2配置servlet

阅读更多
在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(",")));

}

}
分享到:
评论

相关推荐

    Struts2中Servlet的配置

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

    struts2和servlet的共存问题

    ##### 方法4:在Struts配置文件中调整 - **具体操作**:在`struts.xml`配置文件中调整拦截器的匹配规则,避免不必要的拦截。 - **实现步骤**: - 在`struts.xml`中找到或创建一个拦截器栈,并调整其匹配规则,确保...

    java上传与下载——struts2和servlet案例

    在Struts2中实现文件上传,我们需要配置Action类、表单以及struts.xml配置文件。Action类会处理用户提交的请求,表单用于收集用户选择的文件,而struts.xml则定义了请求的映射和处理逻辑。Struts2提供了File和Files...

    Struts2访问ServletAPI

    当一个请求到达服务器时,Struts2的过滤器(通常名为`FilterDispatcher`或`StrutsPrepareAndExecuteFilter`)会捕获这个请求,然后根据配置的Action映射决定执行哪个Action。在Action执行过程中,如果需要直接访问...

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

    在这个“Struts2之Servlet API及单元测试初识案例struts005”中,我们将探讨Struts2如何与Servlet API结合使用,以及如何进行单元测试。 Servlet API是Java EE平台的核心部分,用于构建动态Web应用程序。Struts2...

    Struts2之Servlet文件上传详解案例struts010

    综上所述,本案例“Struts2之Servlet文件上传详解”将引导你了解如何结合Struts2和Servlet实现文件上传功能,包括配置、Action编写、JSP页面设计以及注意事项。通过实践,你将更深入地理解Struts2框架在处理复杂Web...

    struts2配置过滤器

    ### Struts2配置过滤器详解 #### 一、概述 Struts2是基于MVC模式的一个开源框架,它能够帮助开发者构建出结构清晰且易于维护的Web应用。在实际开发过程中,为了实现某些功能(例如用户认证、权限控制等),往往...

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

    本教程将指导你如何配置环境,以便使用Struts2、Servlet和Spring进行Web开发。首先,我们需要确保已经安装了Eclipse for JavaEE、Struts2、Servlet容器(如Tomcat)以及Spring框架的相关依赖。 **1. 安装与配置** ...

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

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

    关于struts和servlet同时用

    2. 服务器接收到请求后,Servlet容器(如Tomcat)根据web.xml中的配置找到对应的Servlet(通常是Struts的Front Controller,如.struts2Dispatcher)。 3. Struts DispatcherServlet解析请求,根据配置文件确定要调用...

    struts2和jspServlet上传

    开发者可以通过设置这些插件的配置选项,控制上传行为,如限制文件类型、大小,或者设定上传的URL(通常是Struts2 Action或Servlet的URL)。 总的来说,Struts2和JSP Servlet在文件上传方面各有优势,Struts2提供了...

    struts2 配置JSP时需要的jar

    3. **Servlet API**:由于Struts2是基于Servlet技术的,因此需要`javax.servlet-api.jar`和`javax.servlet.jsp-api.jar`,它们提供了Servlet和JSP的API接口。 4. **Spring框架**:SSH(Struts2、Spring、Hibernate...

    struts2 配置文件

    - `&lt;servlet&gt;`: 配置Servlet的相关信息。 - `&lt;servlet-mapping&gt;`: 映射Servlet的URL模式。 - `&lt;taglib&gt;`: 配置标签库的位置和URI。 ##### 2. 为Struts2应用配置web.xml - **ActionServlet 配置**: - 使用 `...

    struts2参数配置

    - **Struts配置文件**:是Struts2的核心配置文件,通常位于`/WEB-INF/struts-config.xml`。 - 配置文件中定义了框架的主要行为,如Action映射、拦截器、结果类型等。 - 通过`struts-config.xml`文件,可以灵活地控制...

    servlet和struts2笔记

    ### servlet和struts2笔记 #### 一、Servlet 基础 **Servlet** 是 Java Web 开发中的一种核心技术,它被设计用于处理客户端发送到服务器的 HTTP 请求,并且能够生成响应。Servlet 可以看作是服务器端的小程序,...

    struts2配置文件

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

    学生信息管理系统,主要用struts2 和servlet实现.zip

    《基于Struts2和Servlet的学生信息管理系统开发详解》 在Java Web开发领域,构建一个高效、易维护的学生信息管理系统是一项常见的任务。本项目利用Struts2框架和Servlet技术,结合MySQL数据库,为教学环境提供了...

    Servlet简单模拟Struts2

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

    struts2核心配置文件

    ### Struts2核心配置文件详解 #### 一、概述 Struts2框架是Java Web开发领域内一个重要的轻量级框架,它简化了基于MVC(Model-View-Controller)设计模式的应用程序开发过程。在Struts2框架中,有两个核心配置文件...

Global site tag (gtag.js) - Google Analytics