2012-12-03 3 views
3

각 URL (/ *)에 대해 호출되도록 구성된 서블릿 필터를 작성했습니다. 어떤 조건을 기준으로 조건이 통과되면 정상적인 실행을 chain.doFilter(request,response까지 진행하고 싶습니다. 오류 메시지와 함께 동일한 요청 URL을 열고 싶습니다.요청 페이지에서 서블릿 필터가 오류 메시지를 전달하는 방법은 무엇입니까?

"특정 텍스트 상자에 입력 한 값이 잘못되었습니다." . 이것이 가능한가?

response.sendRedirect(request.getURL())을 사용해야합니까? 내가 각 URL에 필터를 구성했기 때문에 무한 루프로 끝나기를 바란다. 요청 매개 변수에 대한 유효성 검사를하고 있습니다.

+1

필자는'Filter'에서 유효성 검사를하지 않을 것입니다. 특히'/ *'에 매핑 된 것은 유효하지만 좀 더 목표가 있습니다. – Qwerky

+0

ok .. 여기에는 각 요청마다 수행해야 할 몇 가지 유효성 검사가 있습니다. 그래서 필터로 시도한 이유는 무엇입니까 – Rajesh

답변

4

서블릿에서와 똑같이 수행하십시오. 전달을 수행하십시오.

request.getRequestDispatcher("/WEB-INF/some.jsp").forward(request, response); 

필터는 기본적으로 전달에서 다시 호출되지 않습니다. 추가적인 장점은 JSP가 동일한 요청을 재사용하므로 세션 또는 쿠키 기반 해결 방법/해킹없이 유효성 검사 오류 메시지를 요청 속성으로 설정할 수 있다는 것입니다. 구체적인 문제에 관련없는


, 이것은 전적으로 올바른 접근 방식이 아니다. 양식 별 유효성 검사 작업은 이 아닌 servlet에서 수행해야합니다. 서블릿 DRY를 유지하려면 프런트 컨트롤러 패턴을 보거나 이미 프런트 컨트롤러 서블릿을 제공하는 MVC 프레임 워크를 채택하고 JSF 또는 Spring MVC과 같이 박스 밖으로 괜찮은 유효성 검사를 선택하십시오.

+0

고맙습니다 .. 한 가지 더 도움이됩니다 .. 그 요청을 알 수있는 방법이 있는지 알려주실 수 있습니까? 이 필터에서 jsp는 무엇입니까? 내 httpRequest.getUri() 동작 문자열을 제공하고 JSP가 아닌. – Rajesh

+0

컨트롤러에 매핑됩니다. 이것이 프론트 컨트롤러에서해야하는 이유 중 하나입니다. 일반적으로 프론트 컨트롤러는 어느 JSP인지 정확하게 알고 있습니다. 그러나 당신이 분명히 Spring의 프론트 컨트롤러를 사용하고있는 것처럼 검증 기능을 사용하는 것이 어떨까요? – BalusC

+0

그것은 모든 요청에 ​​대한 일반 검사이므로 요청 필터에서 처리 할 것을 생각했습니다. 봄 요격기를 작성하면 작업을 쉽게 처리 할 수 ​​있습니다. 모든 요청에 ​​대한 확인을 원하므로 – Rajesh

관련 문제