zoukankan      html  css  js  c++  java
  • 转载 在Struts2中使用servlet 配置问题

    在做WEB项目时,要么是Struts+Spring+Hibernate, 要是就直接使用servlet。这次碰到一个项目,经理想要把之前一个用servlet做的部分模块移植到当前项目下(Struts+Spring),这 时发现Struts2.X(Struts1.X没试过不知道行不行)不能和servlet同时使用,主要是由于页面的请求都被struts给拦截了,根本 访问不了servlet,发现这个原因后本人是先直接在struts的配置文件中加上

    <constant name="struts.action.extension" value="do,action"/> (请求的后缀要有.do或.action才到struts配置文件里找对应的action),运行站点,可以工作了。

            没想到刚过两天,在测试上传功能时又出错了(该上传功能也是 从原先的项目移植过来的),找不到上传的文件,这到是奇了怪了,仔细看了下log,发现在执行请求的servlet前还是经过了struts的过滤链,这 时我想可能是struts的文件过滤那块把文件给绑定到某个地方(好像使用struts2上传文件就是这么回事:通过文件拦截器 ,将文件绑定到action中的对应属性),而当servlet去获取request中的文件二进制流时,将找不到文件,导致上传的文件为空,造成后续的 操作失败。至此只能在web.xml关于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>

    将其改为:

     <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>*.action;*.do;...</url-pattern>(过滤不同的后缀,要分开写 ,在此为方便写在一起)
      </filter-mapping>

    至此struts和servlet可以一起运行啦

  • 相关阅读:
    [Python学习之路] 猜大小游戏
    C语言学生成绩管理系统(简易版)
    malloc动态分配字符串数组“ 一个月内的提醒”
    结构体指针排序
    C语言结构体排序
    数据测压,数据库查询,修改,添加
    badboy脚本录制
    性能测试
    JDK开发环境搭建及环境变量配置(win10)Jmeter之安装和配置
    Charles 修改返回值response(方法 breakpoints)
  • 原文地址:https://www.cnblogs.com/xiao0/p/2138397.html
Copyright © 2011-2022 走看看