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放到最后定義是否有用?
          主站蜘蛛池模板: 双峰县| 兴业县| 平阳县| 宜阳县| 海原县| 蒙阴县| 通许县| 思茅市| 偏关县| 福安市| 绿春县| 乌兰浩特市| 利津县| 江油市| 青龙| 内黄县| 惠来县| 道孚县| 临沧市| 梁河县| 沐川县| 三原县| 谢通门县| 黄陵县| 苍山县| 栾川县| 林周县| 南昌县| 瓮安县| 汉川市| 绥滨县| 太白县| 泽州县| 密山市| 西林县| 积石山| 西平县| 万年县| 崇义县| 犍为县| 香格里拉县|