如何使用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個贊
實施 在……里面 方法,將傳入的 到 使用 HttpServletRequest#getRequestURI()
抓住這條路。 直截了當(dāng) 方法,如 substring()
,split()
,concat()
等等,提取出感興趣的部分,構(gòu)成新的路徑。 使用任何一種 ServletRequest#getRequestDispatcher()
然后 若要將請求/響應(yīng)轉(zhuǎn)發(fā)到新URL(服務(wù)器端重定向,未反映在瀏覽器地址欄中), 或
澆鑄進料 到 然后 HttpServletResponse#sendRedirect()
將響應(yīng)重定向到新URL(客戶端重定向,反映在瀏覽器地址欄中)。 注冊過濾器 web.xml
在.上 url-pattern
的 /*
或 /Check_License/*
,取決于上下文路徑,或者如果您已經(jīng)使用Servlet3.0,請使用 取而代之的是注釋。
FilterChain#doFilter()
mod_rewrite
.
添加回答
舉報
0/150
提交
取消