`

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 1、在struts2的action中可以通过实现ServletResponseAware/ServletResquestAware接口 (org.apache.struts2.inteceptor.ServletResponseAware/ServletResquestAware)直接访问 HttpServletResponse/...

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

    eclipse for javaee配置web开发环境(struts2+servlet+sping)字体.doc 让你快速学会在eclipse for javaee里开发javaweb项目

    解决struts2配置为/*之后 servlet不能使用的问题

    解决struts2配置为/*之后 servlet不能使用的问题

    xdoclet1 xdoclet1 spring3.0.5、struts1.3、struts2.1、 servlet

    其中包括xdoclet2与hibernate3.6的整合xdoclet1.2.3分别与spring3.0.5、struts1.3、struts2.1、 servlet的整合配置。其中还有相应的.xdt文件模板,其中struts2.1.xdt为自己写的。 需要xdoclet1.2.3 ...

    03解决struts2配置文件无提示问题

    Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,...

    struts2配置详解

    1、Struts1 里使用 ActionServlet 作为控制器; Struts2 使用了一个过滤器作为控制器 2、Struts1 中每个 HTML 表单都对应一个 ActionForm 实例. Struts2 中, HTML 表单将被直接映射到一个 POJO. 3、Struts1 的验证...

    根据所学习的Struts 2的相关知识,设计Struts2框架下的登录功能

    2. 建立一个Web Project(命名为struts_exam1),并添加Struts 2 的相关jar 包; 3. 编写登录页面(login.jsp)、登录成功(login_success.jsp)和登录失败页面(login_fail.jsp); 4. 编写Ation实现类,实现execute()...

    javaWeb_struts2框架实现简单用户注册登录

    3.控制器采用action开发,替代传统的servlet,直接跳转页面返回一个字符串即可,需配置struts.xml对应的jsp。 4.struts2,可以直接对表单提交的数据封装成对象,简洁!当然需要在web.xml中配置核心filter—...

    JSP Struts配置文件详解

    描述:用于配置ActionServlet 数量:最多一个 属性: @bufferSize:指定上传文件的输入缓冲的大小.默认为4096 @className:指定当前控制器的配置类.默认为org.apache.struts.config.ControllerConfig @...

    Struts课堂笔记.rar--struts2的struts.properties配置文件详解

    The org.apache.struts2.config.Configuration implementation class org.apache.struts2.config.Configuration接口名 struts.configuration.files A list of configuration files automatically loaded by ...

    struts1和struts2的区别

    struts1的配置比struts2麻烦很多。不仅要在.xml里写繁多的配置,多数也还要写一个FormBean来和action对应。struts2配置简单。不用继续servlet,任何一个带有方法的类都能当作action来使用。

    struts2总结第一章

    Struts2第一章 一、 介绍: a) Struts2是以web work优秀的设计思想为核心,吸收了struts1的部分优点,建立了一个基于webwork和struts1的MVC框架。 二、 优点: a) 结构清晰,使开发者只关注业务逻辑实现即可。 b) ...

    Struts2入门教程(全新完整版)

    3.初识struts2配置文件 4 (1).web.xml文件 4 (2).struts.xml文件 4 (3).struts.properties(参default.properties) 4 (4)struts-default.xml 4 (5)其它配置文件 4 4.让MyEclipse提示xml信息 4 5.如何...

    Struts2教程

    Struts2 虽然在大版本号上是第二个版本,但基本上在配置和使用上已经完全颠覆了 Struts1.x 的方式(当然, Struts2 仍然是基于 MVC 模式的,也是动作驱动的,可能这是唯一 没变的东西)。 Struts2 实际上是在 ...

    Struts2属性文件详解

    该属性指定加载Struts 2配置文件的配置文件管理器.该属性的默认值是org.apache.Struts2.config.DefaultConfiguration, 这是Struts 2默认的配置文件管理器.如果需要实现自己的配置管理器,开发者则可以实现一个实现...

    struts2的总结,适合初学者

    1、是mvc的基础,其他的框架比如struts1,struts2,webwork都是从servlet基础上发展过来的。所以掌握servlet是掌握mvc的关键。 2、Servlet把最底层的api暴漏给程序员,使程序员更能清楚的了解mvc的各个特点。 3、...

    struts2.1配置

    struts配置是关于struts2.1的几笔配置 配置struts * 拷贝struts lib下的所有jar到WEB-INF/lib下 * 修改web.xml文件,配置ActionServlet * 提供struts-config.xml文件

    struts2讲义_吴峻申

    3.1 使用web.xml配置Struts2实现Web项目Struts2应用 37 3.2 使用配置文件struts.xml实现页面导航定义 38 3.3 使用Action类控制导航业务数据 40 3.4 使用ActionSupport进行校验 42 第4章 另一Struts2核心技术:拦截器...

    Struts配置详解.doc

    Struts配置文件详解 web.xml、struts-cofig.xml以及struts-cofig.xml中各个标签的作用。 Struts应用采用两个基于XML的配置文件来配置,分别是web.xml和struts-cofig.xml文件.web.xml文件是配置所有web应用的,而...

    servlet与Struts action线程安全问题分析

    servlet与Struts action线程安全问题分析

Global site tag (gtag.js) - Google Analytics