Прежде всего позвольте мне описать, что я пытаюсь сделать, что, я думаю, довольно просто. У меня есть веб-сайт с пользователями, и я хочу ограничить доступ к странице view_profile.jsp только для зарегистрированных пользователей. У меня есть фильтр, сопоставленный с:
<url-pattern>/auth/*</url-pattern>
который выглядит так
try {
HttpSession session = ((HttpServletRequest)request).getSession();
UserBean user = (UserBean)session.getAttribute("currentUser");
if (user != null && user.isValid()){
System.out.println("Filter: context -> " + ((HttpServletRequest)request).getContextPath()); //returns ""
chain.doFilter(request, response);
}
else{
((HttpServletResponse)response).sendRedirect("/login.jsp"); //works fine
}
Этот фильтр запускается, когда на странице index.jsp пользователь щелкает ссылку:
<a href="./auth/view_profile?profile=${sessionScope.currentUser.username}">
//yeah, he will 'view' himself - it's just an example
который должен привести пользователя к сервлету, сопоставленному с ViewProfileServlet, сопоставленному с:
<url-pattern>/auth/view_profile</url-pattern>
который выглядит так:
try {
String username = (String) request.getParameter("profile");
// here is getting info from database and setting request attributes
// works fine
//response.sendRedirect("/view_profile.jsp");
System.out.println("ViewProfileServlet: In context -> " + getServletContext().getContextPath()); // returns ""
dis = getServletContext().getRequestDispatcher("/view_profile.jsp");
// i've tried request.getRequestDispatcher. no difference
System.out.println("ViewProfileServlet: forward to '/view_profile.jsp'");
dis.forward(request, response);
}
Что, в свою очередь, должно привести пользователя к /view_profile.jsp (в корневом контексте, а не в /auth) и работать, чего не происходит. Что происходит, так это запуск ViewProfileServlet и отображение view_profile.jsp, хотя кажется, что контекст по-прежнему /auth, потому что все ссылки на view_profile.jsp указывают, например, на localhost:8080/auth/some-page.jsp. Кроме того, файлы css не загружаются, они даже не запрашиваются (по крайней мере, согласно firebug), а источник страницы показывает ошибку 404 Glassfish, где предполагается, что css.
Я был бы очень признателен за любую помощь, я впервые делаю что-то в jsp, и я полностью потерялся здесь.