У меня есть фильтр, который отображается на все запросы:
@WebFilter({ "/*" })
Я использую этот фильтр для сопоставления URL-адресов, чтобы я мог иметь тщетные URL-адреса для своих jsps и для обработки 404-х, однако это также означает, что мне нужно вручную добавлять сервлеты для обычной обработки цепочки запросов:
String requri = ((HttpServletRequest) request).getRequestURI(); //get requested url
String page = "";
if(requri.equals("/contact/") || requri.equals("/contact"))
page = "contact.jsp";
else if(requri.equals("/about/") || requri.equals("/about"))
page = "about.jsp";
else if(requri.equals("/SomeServlet"))
chain.doFilter(request, response); //if requested url is a servlet, then carry on normally
//send requested url to servlet which will then forward user to the appropriate page
request.getRequestDispatcher("/GetPage?page="+page).forward(request, response);
return;
Все отлично работает.
Но есть ли способ получить список отображений URL для всех сервлетов? Так что мне не нужно вручную перечислять каждое отображение URL для сервлетов .. т.е.:
else if(requri.equals("/SomeServlet") || requri.equals("/AnotherServlet") || requri.equals("/SomeOtherServlet"))
chain.doFilter(request, response); //if requested url is a servlet, then carry on normally
Идеал:
else if(isAServlet(requri))
chain.doFilter(request, response); //if requested url is a servlet, then carry on normally