服务器无法跳转到正确的路径

时间:2019-04-28 16:53:25

标签: jsp tomcat servlets

我写了一些关于用户的servlet,最后我想将它们抽象到userServlet,所以我创建了一个userServlet扩展baseServet,通过basicServlet获取retRequestURI并获取方法名称并调用method。但是在我的userServlet中,某些方法不能跳到正确的路径,因为我猜是虚拟路径。.但是我不知道如何编写正确的路径或其他方法来解决这种情况。请查看代码

这是我的基本Servlet

    public class BaseServlet extends HttpServlet {

        @Override
        protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

            //完成方法的分发
            //1.获取请求路径,
            String requestURI = req.getRequestURI();// /case/user/add
            System.out.println("请求的路径是:"+requestURI);
            //2.获取方法的名称
            String methodName = requestURI.substring(requestURI.lastIndexOf('/') + 1);
            System.out.println("方法名称是:"+methodName); // add

            try {
                //3.获取方法的对象
                Method method = this.getClass().getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
                //4.执行方法
                Object invoke = method.invoke( this, req, resp);
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }
        }
    }

this is part of my userServlet

@WebServlet("/user/*")
public class UserServlet extends BaseServlet {   
public void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        
request.getRequestDispatcher("index.jsp").forward(request,response);
}

}

在我的login.jsp中,我输入正确的路径,以便baseServelt可以调用登录方法,但在这一行中 request.getRequestDispatcher(“ index.jsp”)。forward(request,response); 它跳到

  

localhost / case / user / index.jsp

代替

  

localhost / case / index.jsp

因为所有带有用户的路径都将由basicServet调用,所以baseServelt会产生一个java.lang.NoSuchMethodException;。 我想要的路径是

  

localhost / case / index.jsp

我如何获得正确的路径?

0 个答案:

没有答案