在我的Servlet中,我想通过调用web.xml
中定义的路径转发到另一个Servlet。
例如,在我的web.xml
中,我定义了:
<servlet-mapping>
<servlet-name>User</servlet-name>
<url-pattern>/user/*</url-pattern>
</servlet-mapping>
我想将我的servlet映射到
request.getRequestDispatcher("/user/" + user.getUsername()).forward(request, response);
但是当我转到应该启动此路径的Servlet时,它返回的页面是空白的。意思是,路径有问题。我知道它正在达到这个代码,因为我把Sysout语句放在它之前。
有谁知道为什么这不能正确映射?我尝试了所有逻辑组合
ADDED
这是应该处理此路径的Servlet代码
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);
}
答案 0 :(得分:0)
使用sendRedirect
而不是转发来解决或至少避免了问题。
即
String userPage = "/my_proj/user/" + username;
response.sendRedirect(userPage);