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方法...");
}
}

 

posted @   一位程序袁  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示