`
youanyyou
  • 浏览: 192097 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

使用struts2框架后servlet不能正常工作解决方案

阅读更多

     在同一个项目中间,如果既用到servlet有用了struts2的框架,运行项目时可能无法正常使用servlet,原因是在配置struts2的核心控制器时<url-pattern>/*</url-pattern>所致,需要定义一个过滤器,将servlet过滤,使struts2的核心控制器对servlet不起作用。注意:在xml文件中定义的servlet过滤器要写在struts2核心控制器前面,否则还是不能使用。举例来说,定义的过滤器文件是ReDispatcherFilter.java,只需按照该文件中注释内容做以下配置,即可。

文件内容如下:

 

package filters;

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;

/**
* 该类是定义了一个过滤器,当既用到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名字</param-value>
*   </init-param>
* </filter>
* <filter-mapping>
*   <filter-name>redisp</filter-name>
*   <url-pattern>/*</url-pattern>
* </filter-mapping>
* @author xsl
*
*/
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(",")));

}

}

使用时复制该段代码,按照注释做相应配置就可以了。

深圳人才网 深圳招聘网 深圳人才招聘网 深圳人才大市场 

企业、个人免费注册,获取想要的 深圳 软件工程师招聘信息 月薪最低3000-8000,更有高端猎头职位! 

www.szrcwz.com                                                                                                                                           

                  Google 提供的广告

分享到:
评论

相关推荐

    实战STRUTS 电子书

    基于Struts应用程序框架构造的应用程序,除了可以复用业已证明可用的解决方案外,同时也可以使得开发人员更加关注应用程序的特性。Struts是由Apache软件基金会支持的开源软件。 本书完整介绍了Struts框架结构,涵盖...

    Spring攻略(第二版 中文高清版).part2

    11.11.2 解决方案 472 11.11.3 工作原理 472 11.12 使用GORM查询 475 11.12.1 问题 475 11.12.2 解决方案 475 11.12.3 工作原理 475 11.13 创建自定义标记 477 11.13.1 问题 477 11.13.2 解决方案...

    java中文乱码解决方案

    1.2 使用struts框架字符集不能设成gb2312,要改成utf-8。  2. 在struts.properties 添加: struts.devMode=false struts.enable.DynamicMethodInvocation=true struts.i18n.reload=true struts.ui.theme=simple ...

    Spring攻略(第二版 中文高清版).part1

    11.11.2 解决方案 472 11.11.3 工作原理 472 11.12 使用GORM查询 475 11.12.1 问题 475 11.12.2 解决方案 475 11.12.3 工作原理 475 11.13 创建自定义标记 477 11.13.1 问题 477 11.13.2 解决方案...

    分步实现struts2 mvc 框架源码.7z

    用户在jsp页面增、删、改、查,在响应servlet中接受请求并处理,通过不断优化方案,阐述Struts-MVC所能解决的问题。该资源包含4个版本源码,均可直接运行。

    java三大框架

    Spring也许称得上是个一站式解决方案,提供了一个典型应用所需要的大部分基础架构。它还涉及到了其他framework没有考虑到的内容。 尽管它仅仅是一个从2003年2月才开始的开源项目,但Spring有深厚的历史根基。 ...

    业务系统增加hessian接口解决方案

    在Spring+iabtis框架中,增加hessian接口,要实现以下几点: 1.绕过系统本身的认证,拦截器直接将该实现方法的...如果解决方案有不足之处,欢迎留言中进行斧正。如果不懂也可以留言咨询,本人最近会尽量回来看看。

    Java知识拾遗:三大框架的技术起源

    Struts、Hibernate和Spring是我们Java开发中的常用关键,他们分别针对不同的应用场景给出最合适的解决方案。但你是否知道,这些知名框架最初是怎样产生的? 我们知道,传统的Java Web应用程序是采用JSP+Servlet+...

    structs程序设计从入门到精通word文档

    终极解决方案 9 3.5为 Web 服务构建 Struts 应用程序 9 3.6Struts标记库是如何工作的 9 3.7Struts 9 3.8struts简单例子的分析(含代码注释和配置文件说明) 9 3.9本章小结 10 第4章 配置STRUTS组件 10 4.1 Web 应用...

    外文翻译 stus MVC

    Struts is a set of cooperating classes, servlets, and JSP tags that make up a reusable MVC 2 design. This definition implies that Struts is a framework, rather than a library, but Struts also contains...

    【计算机软件毕业设计】二手车交易平台的分析、设计与实现文献综述1.doc

    关键词:SSH集成框架 Web 1主流Web开发框架分析 1.1 MVC结构模式和WebWork框架 2012年王欢认为MVC的工作原理是,使用MVC时,当用户向Web容器发送一个请求后, Web容器会根据请求和地址去调用一个Servlet进行处理,...

    百度地图毕业设计源码-Tmall_SSH:技术栈Struts2+Hibernate+Spring+Jsp+Tomcat,是JavaWeb入门非

    整套技术来作为解决方案,实现模仿天猫网站的各种业务场景,现在开始使用框架技术,毕竟工作中还是要用框架。 本项目技术相对老旧,现在很少用 Struts2 了,但如果接手老项目的话还是要懂的,学习过程我们也可以认识...

    freemarker-gae-pre2.jar包

    FreeMarker是专为实际的一代的 HTML 网页,特别是通过的servlet为基础的应用程序... 但是请注意,我们提供了型的解决方案中使用FreeMarker作为视图组成部分模型2框架(如Struts的) ,这也让你使用JSP的taglibs的模板。

    JAVA WEB从入门到精通 随书源码 J2EE

    第五篇则通过Struts+Spring+Hibernate解决方案实现一个完整的应用实例。 全书配合大量的图例及代码说明,细致地讲解了Struts、Hibernate和Spring框架开发技术,是学习J2EE开发的不错的参考书。

    混合Eclipse、WTP、Struts和Hibernate

    在“CreatingWebApplicationswiththeEclipseWTP”(http://jdj.sys-con.com/read/152270.htm)一文中,我们使用EclipseWebToolsProject、Tomcat应用服务器和MySQL...第一个问题可通过使用开源Struts框架解决,该框架通

    Struts in Action中文版

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

    网上体育商城的设计与实现毕业设计答辩PPT.pptx

    采用的技术 Struts框架诞生于2001年,Struts 2是Struts的下一代产品,Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的...

    java开源包2

    JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一...

    ssh(structs,spring,hibernate)框架中的上传下载

     以上是Spring+Hibernate将文件二进制数据持久化到数据库的解决方案,而Struts通过将表单中file类型的组件映射为ActionForm中类型为org.apache.struts.upload. FormFile的属性来获取表单提交的文件数据。  工程...

Global site tag (gtag.js) - Google Analytics