BaseServlet抽取
BaseServlet抽取
优化Servelet,减少Servlet数量,现在是一个功能一个Servlet,将其优化为一个模块一个Servlet相当于在数据库中一张表对应一个Servlet,现在Servlet中提供不同的方法,完成用户的请求,
图解:
public class BaseServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// System.out.println("BaseServlet的service的方法被执行了...");
// 完成方法分发
// 获取请求路径
String uri = req.getRequestURI();
System.out.println("请求的路径"+uri);
// 获取方法名称
String name = uri.substring(uri.lastIndexOf("/") + 1);
System.out.println("方法名称"+name);
// 获取方法对象Method
System.out.println(this);
try {
// 忽略访问权限符
Method method = this.getClass().getDeclaredMethod(name, HttpServletRequest.class, HttpServletResponse.class);
// 暴力反射
// method.setAccessible(true);
// 执行方法
method.invoke(this,req,resp);
} catch (NoSuchMethodException e) {
throw new RuntimeException(e);
} catch (InvocationTargetException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
}
@WebServlet("/user/*")
public class UserServlet extends BaseServlet{
public void add(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("user的add方法...");
}
public void find(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("user的find方法...");
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY