Nasıl Java sunucu uygulaması bir filtre gelen sunucu uygulaması bir istek url değiştirmek için kullanılır?
Nasıl sunucu uygulaması bir filtre değiştirmek için gelen sunucu uygulaması bir istek url edebilirim
http://nm-java.appspot.com/Check_License/Dir_My_App/Dir_ABC/My_Obj_123
için
http://nm-java.appspot.com/Check_License?Contact_Id=My_Obj_123
?
Güncelleme: aşağıda BalusC bu adımlara uygun olarak, aşağıdaki kod ile geldim:
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() {
//
}
}
web.xml
ilgili giriş şöyle:
<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>
Sunucu tarafında çalıştım hem de istemci tarafında beklenen sonuçları ile yönlendirin. Teşekkürler BalusC işe yaradı!
CEVAP
javax.servlet.Filter
uygulamak.doFilter()
yöntem,HttpServletRequest
30 *gelen döküm.HttpServletRequest#getRequestURI()
yol kapmak için kullanın.java.lang.String
basit yöntemlerisubstring()
,split()
,concat()
ve benzeri ilgi çekici kısmını ayıklamak ve yeni bir yol oluşturmak için kullanın.- Öne istek/yeni URL cevabı (sunucu tarafı, tarayıcı Adres yansıtılan değil, yönlendirme bar), ya da
ServletRequest#getRequestDispatcher()
RequestDispatcher#forward()
kullanınyaHttpServletResponse
ServletResponse
gelen dökme veHttpServletResponse#sendRedirect()
yeni URL (istemci tarafında yeniden yönlendirme, tarayıcı adres çubuğuna yansıyan) yanıt yönlendirmek için. - Kayıt filtre
web.xml
url-pattern
/*
/Check_License/*
bağlı olarak bağlam yolu, ya da eğer sen zaten Sunucu uygulaması 3.0 kullanın@WebFilter
ek açıklama için bu yerine.
URL eğer kodda bir kontrol eklemeyi unutmayınihtiyacı vardeğişti ve eğerdeğilo zaman sadece FilterChain#doFilter()
sonsuz bir döngüde kendisini arayacak başka çağrı.
Alternatif olarak da sadece varolan bir 3. parti API için yaptıkları iş için senin gibi Tuckey's UrlRewriteFilter olabilir hangi yapılandırılmış şekilde yapacaksınız Apache mod_rewrite
.
Nasıl bir Java Sunucu uygulaması gelen...
Nasıl yürütme SAVAŞTA ek açıklamaları ...
Nasıl dosyaları kullanarak JSP/Sunucu ...
Nasıl benim sunucu uygulaması JUnit ku...
Sunucu uygulaması için bağımlılık 3.0 ...