`
Mrzhao2013
  • 浏览: 10352 次
  • 性别: 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
分享到:
评论

相关推荐

    Web.xml配置详解

    本文档详细讲解了关于web工程中web.xml文件相关配置;希望对web开发者有一定的帮助。

    Struts配置详解.doc

    Struts应用采用两个基于XML的配置文件来配置,分别是web.xml和struts-cofig.xml文件.web.xml文件是配置所有web应用的,而struts-config.xml文件是struts专用的配置文件。事实上也是可以根据需要给这个配置文件起其他...

    根据所学习的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—...

    J2EE电子商务系统开发从入门到精通

    6.3.5 struts-config.xml文件配置..... 129 6.4 员工权限操作模块..... 130 6.4.1 实现效果..... 130 6.4.2 视图组件的实现..... 132 6.4.3 控制器组件实现..... 133 6.4.4 struts-config.xml配置..... 133 6.5 小结...

    Struts2教程

    由于 Struts 的入口点是 ActionServlet ,所以得在 web.xml 中配置一下这 个 Servlet 。 2. 编写 Action 类(一般从 org.apache.struts.action.Action 类继承)。 3. 编写 ActionForm 类(一般从 org.apache.struts....

    关于JSP配置文件web.xml加载顺序详解

    1、启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取和两个结点。 2、紧急着,容创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文。 3、容器将转换为键值对,并...

    struts2+spring2+ibates

    3、配置web.xml (分别配置sping,struts) 4、写sping的application和applicationservices或者其它配置.(可对些文件分为其它文件,在web.xml中注册即可) 5、配置struts.xml 6、配置sqlmapconfig.xml,如果有include,则...

    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.如何...

    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 ...

    struts in Action

    2.3.2. Servlet 解决方案.................................................................................................44 2.3.3. Servlet 框架.............................................................

    struts2总结第一章

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

    SpringStrutsHibernate的配置

    Servlet必须在:项目名\WebRoot\WEB-INF这个目录下面的web.xml文件进行配置。改变web.xml的默认文件名:(一般默认引入的文件名,我们不改) http://blog.csdn.net/qq413041153/article/details/7922961 ...

    Struts2属性文件详解

    Struts2属性文件详解 struts.configuration 该属性指定加载Struts 2...该属性的默认值为struts- default.xml,struts-plugin.xml,struts.xml,看到该属性值,所以应该明白为什么Struts 2框架默认加载struts.xml文件了.

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    10.3.4 建立Spring的配置文档dispatcherServlet-servlet.xml 10.3.5 配置web.xml 10.3.6 启动Tomcat运行程序 10.4 Spring 的视图(View) 10.4.1 视图简介 10.4.2 视图解析 10.5 Spring的控制器(Controller) ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    10.3.4 建立Spring的配置文档dispatcherServlet-servlet.xml 10.3.5 配置web.xml 10.3.6 启动Tomcat运行程序 10.4 Spring 的视图(View) 10.4.1 视图简介 10.4.2 视图解析 10.5 Spring的控制器(Controller) ...

    Struts2执行流程

    Struts2执行流程 1. web.xml 部署描述符 2. FilterDispatcher 实现StrutsStatics, Filter接口 (1)Filter:一个filter是一个对象用于执行过滤任务为每个请求资源(一个servlet或静态内容),或响应一个资源,或两者.过滤...

    Struts in Action中文版

    2.3.2. Servlet 解决方案.................................................................................................44 2.3.3. Servlet 框架............................................................

    Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)

    《Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)》内容全面,结构清晰,注重实战,非常适合Java Web开发人员学习使用,同时也可以作为软件公司的案头必备参考书。 此版本为扫描版,字体清楚,...

    解决struts2下载异常的jar包 struts2-sunspoter-stream-1.0.jar

    at javax.servlet.http.HttpServletResponseWrapper.sendError(HttpServletResponseWrapper.java:108) at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:770) at org.apache.struts2....

Global site tag (gtag.js) - Google Analytics