Wie verwende ich einen Servlet-Filter in Java, um eine eingehende Servlet-Anfrage-URL zu ändern?

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!

InformationsquelleAutor der Frage Frank | 2010-04-27

Schreibe einen Kommentar