`
Mrzhao2013
  • 浏览: 10487 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

web.xml 同时配置Struts2与Servlet的解决方法

阅读更多

* 该类是定义了一个过滤器(随便你放在摸个包下面),当既用到struts2有用到servlet时,
* 必须用该过滤器对所有的servlet做一次过滤,否则servlet将无法正常运行。
* 同时在web.xml中,在定义struts的核心控制器前面添加该过滤器,添加代码如下:
* <filter>
*   <filter-name>redisp</filter-name>
*   <filter-class>filters.ReDispatcherFilter(该过滤器的类名)</filter-class>
*   <init-param>
*    <param-name>includeServlets</param-name>
*    <param-value>所配置的servlet,注意是那url-pattern</param-value>
*   </init-param>
* </filter>
* <filter-mapping>
*   <filter-name>redisp</filter-name>
*   <url-pattern>/*</url-pattern>
* </filter-mapping>
* @author xsl
*
*/

ReDispatcherFilter的完整代码为:
package zy.page.demo.servletconf;

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 {

		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);
		if (this.includes.contains(target)) {
			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(",")));

	}

}


web.xml做的配置为(可参照第一段内容的说明配置拦截器):
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
	<welcome-file-list>
		<welcome-file>./page/showpage.jsp</welcome-file>
	</welcome-file-list>
	<filter>
		<filter-name>redisp</filter-name>
		<filter-class>zy.page.demo.servletconf.ReDispatcherFilter</filter-class>
		<init-param>
			<param-name>includeServlets</param-name>
			<param-value>downexcel</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>redisp</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<servlet>
		<description>This is the description of my J2EE component</description>
		<display-name>This is the display name of my J2EE component</display-name>
		<servlet-name>downexcel</servlet-name>
		<servlet-class>zy.demo.test.DownExcel</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>downexcel</servlet-name>
		<url-pattern>/downexcel</url-pattern>
	</servlet-mapping>
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<!-- 让Struts 2的核心Filter拦截所有请求 -->
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<!--
		<servlet> <servlet-name>Readxml</servlet-name>
		<servlet-class>zy.demo.utils.Readxml</servlet-class>
		<load-on-startup>1</load-on-startup> </servlet>
	-->
</web-app>

注意:拦截器的配置要放在servlet配置的前面,否则无效。实测成功!
1
1
分享到:
评论

相关推荐

    struts.xml和applicationContext.xml、web.xml的配置

    在Java Web开发中,`struts.xml`, `applicationContext.xml` 和 `web.xml` 是三个至关重要的配置文件,它们各自负责不同的职责,并协同工作来构建一个完整的应用框架。以下是关于这三个配置文件的详细说明。 首先,...

    spring在web.xml中和在struts中的不同配置..pdf

    在本文中,我们将探讨Spring在`web.xml`中的配置与在Struts中的配置差异,以及这两种配置方式背后的基本原理。 首先,Spring的核心是ApplicationContext,它是一个管理Bean的容器,可以看作是应用程序的上下文环境...

    Web.xml中配置Struts[参考].pdf

    Struts框架在Web.xml中的配置 Struts框架是Java EE中的一种基于MVC模式的Web应用程序框架,它提供...在Web.xml中配置Struts框架需要配置ActionServlet和初始化参数,以便Servlet容器能够正确地加载和使用Struts框架。

    struts1中web.xml配置详解

    在 struts1 框架中,web.xml 文件是必不可少的配置文件之一,它用于配置 Struts 应用程序的核心组件 ActionServlet。本文将详细解释 web.xml 文件中的配置项和相关知识点。 1. 配置 Struts 的 ActionServlet 在 ...

    web.xml配置文件详解

    `web.xml`是Java Web应用程序的核心配置文件之一,主要用于定义Web应用程序的结构与行为。它是Servlet容器(如Tomcat)读取Web应用程序配置信息的主要来源,因此深入理解其配置项及其作用至关重要。 #### 二、web....

    在web.xml中配置action或.do

    ### 在web.xml中配置action或.do的理解与实践 #### 一、引言 在Web开发领域,特别是基于Java的Web应用程序开发中,`web.xml`文件扮演着至关重要的角色。它不仅定义了Web应用的基本配置,还管理着诸如Servlet、过滤...

    Web.xml中配置Struts[文].pdf

    总结,`Web.xml`中的Struts配置是整个Struts应用程序的基础,它定义了Servlet的实例化、初始化参数以及与Struts相关的各种配置。正确配置这些元素对于构建功能完善的Struts应用至关重要。同时,随着技术的发展,...

    sruts2.0 web.xml 配置文件

    `web.xml`配置文件在Struts2中扮演着至关重要的角色,它是整个应用的部署描述符,定义了应用程序的入口点、过滤器、Servlet以及其他Web组件的配置信息。在这里,我们将深入探讨`web.xml`配置文件在Struts2中的应用...

    web.xml 配置大全

    本篇文章将深入探讨`web.xml`配置大全,包括其基本结构、常见元素以及与Spring、Struts2、JSF等框架的集成。 `web.xml`的根元素是`&lt;web-app&gt;`,它包含了所有其他配置元素。这个文件一般位于项目的`WEB-INF`目录下,...

    javaweb项目中web.xml的作用

    2. servlet:用于配置servlet,例如struts1的ActionServlet是struts1的核心。 3. servlet-mapping:用于配置servlet的映射关系,例如将ActionServlet映射到*.do。 web.xml文件不是一个Web的必要文件,没有web.xml...

    spring在web.xml中和在struts中的不同配置.[收集].pdf

    本篇文章将深入探讨Spring在`web.xml`中与在Struts中的不同配置方式,以及这两种方式背后的设计思想。 首先,ApplicationContext是Spring的核心组件,它是一个容器,负责管理和装配应用程序中的Bean。在Web应用中,...

    Web.xml配置详解

    在Web开发中,`web.xml`文件是Web应用程序的部署描述符,它是Java Servlet规范的一部分,用于配置Web应用的各种组件,如Servlet、过滤器、监听器等。理解并熟练掌握`web.xml`的配置对于任何Web开发者来说都至关重要...

    去掉.action去掉.do字样 隐藏struts2 URL地址action, strus1的扩展名do也是同理.zip

    为了去掉这个.action,我们需要配置Struts2的配置文件,通常是struts.xml。在该文件中,我们可以定义一个全局结果类型(global result type)来处理所有请求的后缀: ```xml &lt;constant name="struts.action....

    web.xml详解

    `web.xml`是Java Web应用程序的核心配置文件,它遵循Java EE规范中的定义,用于定义Web应用的组件、监听器、过滤器以及它们之间的映射关系。在这个文件中,你可以配置Servlet、过滤器、会话超时、错误页面、欢迎文件...

    struts2版本 2.1.6 必须的jar包 和 web.xml 文件的修改

    在本文中,我们将深入探讨Struts2版本2.1.6中的核心jar包以及如何调整`web.xml`配置文件以实现正确部署。 首先,Struts2的核心jar包是框架运行的基础,它们提供了Action映射、拦截器、结果类型和其他关键功能。对于...

    org.springframework.web.struts-sources-3.0.4.RELEASE.jar

    总之,`org.springframework.web.struts-sources-3.0.4.RELEASE.jar`是Spring与Struts集成的关键,它使得开发者能够在享受Struts的MVC架构的同时,充分利用Spring的强大功能,提升项目的质量和可维护性。了解和掌握...

    Struts2手动搭建所有的jar包及相应的struts.xml和web.xml

    然后,我们需要配置`web.xml`文件,这是Servlet容器的配置文件,用来注册Struts2的DispatcherServlet(Action Servlet)。在`web.xml`中添加如下内容: ```xml &lt;web-app&gt; &lt;filter-name&gt;struts2 &lt;filter-class&gt;...

    SSH和SSI等框架常用基础配置web.xml

    在Java Web应用开发中,`web.xml`是部署描述符的核心部分,用于定义与Web应用程序相关的配置信息。对于使用SSH(Struts + Spring + Hibernate)和SSI(Struts + Spring + iBatis)等框架的应用程序而言,合理的`web....

    struts2和servlet的共存问题

    但在某些场景下,开发者可能需要同时使用Struts2和其他Servlet技术(如自定义Servlet或第三方Servlet),这时就会遇到Struts2与Servlet的共存问题。 #### 二、问题描述 当Struts2作为Web应用程序的前端控制器时,...

Global site tag (gtag.js) - Google Analytics