Tôi cần chuyển tiếp yêu cầu (đến jsp nhưng tôi không nghĩ đó là vấn đề) từ http.Filter nếu URI của yêu cầu ban đầu vượt qua một số xác thực mà bộ lọc của tôi chạy.Yêu cầu chuyển tiếp từ bộ lọc
Tôi thấy điều này page that faced similar task
Tôi vẫn cần phải tìm những điều sau đây:
Làm thế nào tôi có thể nhận được ServletContext trong
doFilter()
phương pháp (theo thứ tự để gọi về phía trước API)getServletContext()
không recignizedTôi có phải
call chain.doFilter()
trước khi chuyển tiếp, sau khi chuyển tiếp hay không? Ngoài ra, tôi có phải gọi sốchain.doFilter()
nếu xác thực của tôi được thông qua hoặc chỉ khi nó không thành công (vì trong trường hợp này tôi sẽ không tiếp tục chuyển tiếp trang của mình)?
Câu hỏi này thực sự tiếp tục this thread, được rõ ràng hơn, các mã có thể là một cái gì đó như:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
if (request instanceof HttpServletRequest) {
HttpServletRequest httpServletRequest = ((HttpServletRequest)request);
String requestURI = httpServletRequest.getRequestURI();
String contextPath = httpServletRequest.getContextPath();
if (<this is my implementation of the validation of this filter>){
getServletContext().getRequestDispatcher(
"MySpecific.jsp").forward(request,response);
}
}
chain.doFilter(request,response);
}
cả hai câu trả lời đều ổn. Cái kia là đầu tiên. – Spiderman
Cất bộ lọc FilterConfig trong khi khởi tạo và gọi FilterConfig.getServletContext() Đây là phương pháp ưa thích của tôi vì không có phiên rõ ràng: – Gurnard