SORU
27 NİSAN 2010, Salı


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
27 NİSAN 2010, Salı


  1. javax.servlet.Filter uygulamak.
  2. doFilter() yöntem, HttpServletRequest 30 *gelen döküm.
  3. HttpServletRequest#getRequestURI() yol kapmak için kullanın.
  4. 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.
  5. Ö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 ve HttpServletResponse#sendRedirect() yeni URL (istemci tarafında yeniden yönlendirme, tarayıcı adres çubuğuna yansıyan) yanıt yönlendirmek için.
  6. 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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • EmbarkToHeaven

    EmbarkToHeav

    3 EYLÜL 2007
  • Hollyscoop

    Hollyscoop

    30 Ocak 2007
  • The Amazing Atheist

    The Amazing

    20 Kasım 2006