Сервер не может перейти на правильный путь - PullRequest
0 голосов
/ 28 апреля 2019

Я пишу некоторый сервлет о пользователе и, наконец, я хочу абстрагировать их до userServlet, поэтому я создаю расширение userServlet baseServet, через basicServlet get retRequestURI и для получения имени метода и вызова method.but в моем userServlet некоторые методы не могутперейти к правильному пути, потому что виртуальный путь, я думаю ... но я не знаю, как написать правильный путь, или другие методы решают эту ситуацию ... пожалуйста, посмотрите код

Это мой базовый сервлет

    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").вперед (запрос, ответ); переход на

localhost / case / user / index.jsp

вместо

localhost / case / index.jsp

Поскольку basicServet будет вызывать все пути с пользователем, поэтому baseServelt создаст исключение java.lang.NoSuchMethodException;я хочу, чтобы путь был

localhost / case / index.jsp

как я могу получить правильный путь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...