В моем сервлете я хотел бы переслать на другой сервлет путем вызова пути, определенного в web.xml
.
Так, например, в моем web.xml
я определил:
<servlet-mapping>
<servlet-name>User</servlet-name>
<url-pattern>/user/*</url-pattern>
</servlet-mapping>
Я хотел бы, чтобы моя карта сервлета была
request.getRequestDispatcher("/user/" + user.getUsername()).forward(request, response);
Однако, когда я перехожу к сервлету, который должен запустить этот путь, возвращаемая им страница пуста. Смысл, в пути есть что-то не так. Я знаю, что он достигает этого кода, потому что я поставил перед ним инструкции Sysout.
Кто-нибудь знает, почему это неправильно отображается? Я пробовал каждую логическую комбинацию.
ADDED
Это код сервлета, который должен обрабатывать этот путь
String pathInfo = request.getPathInfo();
Pattern urlPattern = Pattern.compile("^/([^/]+)$");
Matcher matcher = urlPattern.matcher(pathInfo);
if (matcher.matches()){
String userPath = matcher.group(1);
my_proj.components.User user = UserManager.getUserByUsername(userPath);
request.getSession().setAttribute("user", user);
request.getRequestDispatcher("/resources/jsp/user_home.jsp").forward(request, response);
}
Решила или, по крайней мере, избежала проблемы, используя sendRedirect
вместо forward.
Т.е.
String userPage = "/my_proj/user/" + username;
response.sendRedirect(userPage);