如何从servlet内部转发到web.xml路径?

时间:2014-09-09 04:38:39

标签: java servlets url-mapping

在我的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);
        }

1 个答案:

答案 0 :(得分:0)

使用sendRedirect而不是转发来解决或至少避免了问题。

        String userPage = "/my_proj/user/" + username;
        response.sendRedirect(userPage);