Wie Sie ein servlet-filter in Java zu ändern servlet eine eingehende Anfrage-url?

Wie kann ich ein servlet-filter zu ändern servlet eine eingehende Anfrage-url von

http://nm-java.appspot.com/Check_License/Dir_My_App/Dir_ABC/My_Obj_123

zu

http://nm-java.appspot.com/Check_License?Contact_Id=My_Obj_123

?


Update: nach BalusC die Schritte unten, ich kam mit dem folgenden code:

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() {
        //
    }
}

Den entsprechenden Eintrag in web.xml wie folgt Aussehen:

<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>

Ich versucht, sowohl die server-Seite und client-Seite umleiten, mit den erwarteten Ergebnissen. Es funktionierte, Dank BalusC!

Verwandte Frage: stackoverflow.com/questions/2723829/...
Die version der servlet-Spezifikation verwenden Sie ? Wie Sie Anfragen ändert sich mit den verschiedenen Versionen.
diesen Beitrag es hat auch einen Filter, der das tut, was Sie wollen
Bitte beachten Sie, dass wenn Sie Ihre original-URL Parameter enthält, also nm-java.appspot.com/Check_License/Dir_My_App/Dir_ABC/My_Obj_123?**param1=A&param2=B** dann diese Parameter werden auch weitergeleitet zur nächsten servlet/jsp. Ich habe nicht einen Weg finden, um loszuwerden, oder ersetzen Sie original-Parameter (nur mit HttpServletRequestWrapper). Irgendwelche Ideen?.. Update: es scheint, dass http://ocpsoft.org/opensource/how-to-safely-add-modify-servlet-request-parameter-values/ behebt dieses problem.
Danke ich war auf der Suche für ein Beispiel für die url-Umschreibung und-Verschlüsselung .

InformationsquelleAutor Frank | 2010-04-27

Schreibe einen Kommentar