J2EE社區

          茍有恒,何必三更起五更眠;
          最無益,只怕一日曝十日寒.
          posts - 241, comments - 318, trackbacks - 0, articles - 16

          struts2和servlet的共存問題

          Posted on 2012-08-05 17:24 xcp 閱讀(4055) 評論(1)  編輯  收藏 所屬分類: struts2

          先看一下struts2 的web.xml文件:
          <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>
          在請求應用時,struts2將會截獲所有請求,對于servlet請求將不能夠正常相應,是struts2把servlet當成action了,因為servlet和action都是沒有后綴的


          解決方法目前有四種:

          方法1:統一在servlet后面加上.servlet(包括web.xml配置文件中和頁面上使用servlet的地方)

          方法2:繼承StrutsPrepareAndExecuteFilter,實現以下兩個方法。

          public void init(FilterConfig filterConfig) throws
          ServletException {
                ..............................

          }

          public void doFilter(ServletRequest request, ServletResponse response,
          FilterChain chain) throws
          IOException, ServletException {
          ...............................
          if(url.contain("servlet")){
          ((HttpServletResponse) response).sendRedirect(redirectUrl);
          }

          super.doFilter(request, response, chain);


          }


          方法3:修改攔截頁面配置
          原:
          <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-mapping>

          <filter-name>struts2</filter-name>

          <url-pattern>*.action</url-pattern>
          </filter-mapping>
          <filter-mapping>

          <filter-name>struts2</filter-name>

          <url-pattern>*.jsp</url-pattern>
          </filter-mapping>
          <filter-mapping>

          <filter-name>struts2</filter-name>

          <url-pattern>/user/*</url-pattern>
          </filter-mapping>


          servlet的請求路徑不必改變


          方法4:在struts.xml文件中修改

          struts2攔截了servlet請求的解決 

          ……




          名稱: ?4C.ESL | .↗Evon
          口號: 遇到新問題?先要尋找一個方案乄而不是創造一個方案こ
          mail: 聯系我


          Feedback

          # re: struts2和servlet的共存問題  回復  更多評論   

          2013-10-17 09:14 by www.eyny.cn
          改變web.xml中的filter位置,將struts2放到最后定義是否有用?
          主站蜘蛛池模板: 宁晋县| 驻马店市| 常州市| 澄城县| 资源县| 获嘉县| 定兴县| 黔西| 工布江达县| 伊川县| 长海县| 朝阳县| 茂名市| 青铜峡市| 瓦房店市| 长丰县| 伊金霍洛旗| 屏东市| 环江| 木里| 阜城县| 屯门区| 出国| 渭南市| 巴塘县| 临漳县| 轮台县| 施甸县| 伊春市| 青海省| 绥江县| 乌海市| 于田县| 章丘市| 蓝田县| 徐汇区| 措美县| 龙岩市| 简阳市| 青河县| 崇文区|