J2EE社區

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

          struts2和servlet的共存問題

          Posted on 2012-08-05 17:24 xcp 閱讀(4070) 評論(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放到最后定義是否有用?
          主站蜘蛛池模板: 额敏县| 富平县| 福州市| 莱州市| 全椒县| 措勤县| 确山县| 读书| 鄄城县| 甘谷县| 张家港市| 石首市| 丹棱县| 永昌县| 贵南县| 河北省| 怀柔区| 武清区| 微博| 英吉沙县| 曲阳县| 清水县| 乌鲁木齐县| 浠水县| 玉山县| 岐山县| 常山县| 榕江县| 浙江省| 三都| 堆龙德庆县| 龙江县| 东方市| 米脂县| 衢州市| 金山区| 青州市| 衡阳市| 遂宁市| 资阳市| 德昌县|