205 Stimmen

Wie kann man einen Servlet-Filter in Java verwenden, um eine eingehende Servlet-Anfrage-URL zu ändern?

Wie kann ich einen Servlet-Filter verwenden, um eine eingehende Servlet-Anforderungsurl von

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

a

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

?


Update : Gemäß den unten aufgeführten Schritten von BalusC habe ich den folgenden Code erstellt:

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

Der entsprechende Eintrag in web.xml sehen so aus:

<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 habe sowohl die serverseitige als auch die clientseitige Umleitung mit den erwarteten Ergebnissen ausprobiert. Es hat funktioniert, danke BalusC!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X