webservlet在doGet中 不执行 req.getRequestDispatcher(USER_VIEW).forward(req,resp),一直在doget里面循环

 @WebServlet(
        urlPatterns = {"/user/*"},
        initParams = {
                @WebInitParam(name = "USER_VIEW",value = "user.jsp")
        }
)

public class User extends HttpServlet {
    private String USER_VIEW;

    public void init(){
        USER_VIEW = getServletConfig().getInitParameter("USER_VIEW");
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        UserService userService = (UserService) getServletContext().getAttribute("userService");

        String usrname = req.getPathInfo().substring(1);
        if(userService.isUerExisted(usrname)){
            Blah blah = new Blah();
            blah.setUsername(usrname);
            List<Blah> blahs = userService.getBlahs(blah);
            req.setAttribute("blahs",blahs);
        }
        req.setAttribute("username",usrname);
        req.getRequestDispatcher(USER_VIEW).forward(req,resp);
    }

USER_VIEW 是 user.jsp 页面.
在浏览器请求:http://localhost:8080/wbojsp/user/liming
请求大神支援!

图片说明

从图中看得出来,当path不是/开头时,会自动添加当前请求的路径。所以你的请求会一直被servlet拦截处理而不到页面。

截图只是httpservlet的一个实现类。

https://blog.csdn.net/zhouzhiande/article/details/52167626

doGet 加一句,你就知道原因了
System.out.println(req.getRequestURI());