Я пишу некоторый сервлет о пользователе и, наконец, я хочу абстрагировать их до 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
как я могу получить правильный путь?