通过BaseServlet自己创建的servlet类来继承HttpServlet,再由其他servlet类来继续BaseServlet,这样就可以完成方法分发了。
public class BaseServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// System.out.println("baseServlet的方法被执行了。。。");
//完成 方法分发
//获取请求路径
String uri = req.getRequestURI();
System.out.println("请求uri:"+ uri);
//获取方法对象名称
String methodName = uri.substring(uri.lastIndexOf('/') + 1);
//获取方法对象Method
//谁调用我?我就代表谁
System.out.println(this);
//执行方法
try {
Method method = this.getClass().getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
//执行方法
//暴力反射
method.setAccessible(true);
method.invoke(this, req, resp);
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
这边利用注释形式来请求路径,通过继承BaseServlet来查找到具体的方法,从而实现方法转发。
@WebServlet("/category/*")
public class CategoryServlet extends BaseServlet {
protected void add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("/category/add方法。。。");
}
protected void find(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("/category/find方法。。。");
}
}
276

被折叠的 条评论
为什么被折叠?



