第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用Java中的servlet過濾器更改傳入的servlet請求url?

如何使用Java中的servlet過濾器更改傳入的servlet請求url?

暮色呼如 2019-06-29 17:15:56
如何使用Java中的servlet過濾器更改傳入的servlet請求url?如何使用servlet篩選器更改傳入的servlet請求urlhttp://nm-java.appspot.com/Check_License/Dir_My_App/Dir_ABC/My_Obj_123到http://nm-java.appspot.com/Check_License?Contact_Id=My_Obj_123?更新根據(jù)BalusC下面的步驟,我得出了以下代碼:public class UrlRewriteFilter implements Filter {     @Override     public void init(FilterConfig config) throws ServletException {         //     }     @Override     public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws ServletException, IOException {         HttpServletRequest request = (HttpServletRequest) req;         String requestURI = request.getRequestURI();         if (requestURI.startsWith("/Check_License/Dir_My_App/")) {             String toReplace = requestURI.substring(requestURI.indexOf("/Dir_My_App"), requestURI.lastIndexOf("/") + 1);             String newURI = requestURI.replace(toReplace, "?Contact_Id=");             req.getRequestDispatcher(newURI).forward(req, res);         } else {             chain.doFilter(req, res);         }     }     @Override     public void destroy() {         //     }}的相關(guān)條目web.xml看上去是這樣的:<filter>     <filter-name>urlRewriteFilter</filter-name>     <filter-class>com.example.UrlRewriteFilter</filter-class></filter><filter-mapping>     <filter-name>urlRewriteFilter</filter-name>     <url-pattern>/*</url-pattern></filter-mapping>我嘗試了服務(wù)器端和客戶端重定向的預(yù)期結(jié)果。成功了,謝謝BalusC!
查看完整描述

3 回答

?
森林海

TA貢獻2011條經(jīng)驗 獲得超2個贊

  1. 實施

    javax.servlet.Filter.

  2. 在……里面

    doFilter()

    方法,將傳入的

    ServletRequest

    HttpServletRequest.

  3. 使用

    HttpServletRequest#getRequestURI()

    抓住這條路。
  4. 直截了當(dāng)

    java.lang.String

    方法,如

    substring()split()concat()

    等等,提取出感興趣的部分,構(gòu)成新的路徑。
  5. 使用任何一種

    ServletRequest#getRequestDispatcher()

    然后

    RequestDispatcher#forward()

    若要將請求/響應(yīng)轉(zhuǎn)發(fā)到新URL(服務(wù)器端重定向,未反映在瀏覽器地址欄中),

    澆鑄進料

    ServletResponse

    HttpServletResponse

    然后

    HttpServletResponse#sendRedirect()

    將響應(yīng)重定向到新URL(客戶端重定向,反映在瀏覽器地址欄中)。
  6. 注冊過濾器

    web.xml

    在.上

    url-pattern

    /*

    /Check_License/*

    ,取決于上下文路徑,或者如果您已經(jīng)使用Servlet3.0,請使用

    @WebFilter

    取而代之的是注釋。

不要忘記在代碼中添加一個檢查,如果URL需要將被改變,如果,然后打電話FilterChain#doFilter(),否則它將稱自己為無限循環(huán)。

或者,您也可以使用現(xiàn)有的第三方api為您完成所有工作,如Tuckey的UrlRewriteFilter它可以按照您對Apache的配置方式進行配置。mod_rewrite.


查看完整回答
反對 回復(fù) 2019-06-29
?
SMILET

TA貢獻1796條經(jīng)驗 獲得超4個贊

你可以用準(zhǔn)備好的URL重寫過濾器像這樣的規(guī)則:

<rule>
  <from>^/Check_License/Dir_My_App/Dir_ABC/My_Obj_([0-9]+)$</from>
  <to>/Check_License?Contact_Id=My_Obj_$1</to></rule>

檢查實例為了更多.。例子。


查看完整回答
反對 回復(fù) 2019-06-29
  • 3 回答
  • 0 關(guān)注
  • 1454 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號