У меня есть сервлет с именем User.java
. Сопоставляется с шаблоном URL
<servlet-mapping>
<servlet-name>User</servlet-name>
<url-pattern>/user/*</url-pattern>
</servlet-mapping>
Внутри сервлета анализируется путь после косой черты в user/
, данные об этом пользователе извлекаются из базы данных, задаются в атрибутах, а затем должна отображаться страница user_home.jsp
. Код для этого:
User user = UserManager.getUserInfoById(userPath);
request.getSession().setAttribute("user", user);
request.getRequestDispatcher("resources/jsp/user_home.jsp").forward(request, response);
Проблема в том, что вместо открытия этого user_home.jsp
запрос еще раз сопоставляется с тем же сервлетом User.java
. Это ничего не делает.
Я поместил операторы вывода в начало метода doGet
, поэтому я вижу, что URL-адрес
http://localhost:8080/myproj/user/resources/jsp/user_home.jsp
поэтому кажется очевидной проблемой то, что он отображается прямо на шаблон user/*
.
Как мне заставить сервлет отображать эту страницу без сопоставления URL-адресов и правильно отображать jsp
, что мне нужно?
forward()
не меняет URL. Вы уверены, что вас перенаправляют сuser_home.jsp
наUser.java
? если да, то возможно стоит почистить запрос от определенных параметров. - person Nir Alfasi   schedule 05.09.2014