JavaEE, filtry, uruchamianie jeśli podano parametry.

0

Cześć.
Uczę się Javy EE i mam problem z filtrami.
Zastanawiam się czy jest sposób, aby filtr uruchomił się jedynie jeśli przy wywołaniu servletu zostanie podany jakiś parametr.
Np. mam servlet:

@WebServlet("/Hello.world")
public class TestServlet extends HttpServlet{ 
    private static final long serialVersionUID = 1L;

    public TestServlet() {
        super();
    }

    protected void doGet(HttpServletRequest request,
                         HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        out.println("Test");
    }
 }

Oraz mam filtr:

@WebFilter(filterName = "TestFilter", urlPatterns={"/Hello.world"}, initParams={@WebInitParam(name = "param1", value = "abc")})
public class TestFilter implements javax.servlet.Filter {
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        PrintWriter out = servletResponse.getWriter();
        out.println("test filtra");
        if(servletRequest.getParameter("param1").equals("abc")) {
            out.println("Parametr OK");
        }
        filterChain.doFilter(servletRequest,servletResponse);
    }

    public void destroy() {

    }
}

Tutaj rozwiązałem to tak, że po prostu filtr uruchamia się zawsze, a dopiero w nim sprawdzana jest obecność parametru. Czyli nie do końca tak jakbym chciał, ale działanie prawie to samo. Czy jest to poprawne rozwiązanie?

I jeszcze jedna sprawa. Filtry uruchamiane są przed servletem. Czy jest jakiś mechanizm, coś jak postFiltr, który uruchamiałby się po servlecie?

0

Kontrola sterowania wraca do Filtra po dotarciu do Servletu i wykonuje się kod za metodą doFilter.

0

Nie bardzo rozumiem. O jaki kod za metodą doFilter chodzi? Gdzie go wstawić? W jaką metodę?

Ah, już ogarnąłem... Ciemna masa ze mnie ;D

1 użytkowników online, w tym zalogowanych: 0, gości: 1