serlvet代码优化
前面我们写的增删改查都有对应的servlet,并且一个表对应着多个增删改查,不利于管理和编写,下面我将servlet进行归类,对于同一个实体的操作方法,写入一个servlet中,比如:
UserServlet,BrandServlet。
类似下面:
public class UserServlet{
public void selectAll()
public void add()
public void update()
public void delete()
...
}
将注解里面的urlPattern修改成下面这种:
@WebServlet("/user/*") 后面的*号路径可以用方法名称表示
观察HTTPservlet,可以看到它里面的service方法
通过自定义BaseServlet,使用请求路径进行方法分发,替换HTTPservlet根据请求方式进行方法分发:
public class BaseServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//这里uri没有带项目名称,可以看自己服务器那边的配置有没有加项目名称
String requestURI = req.getRequestURI();
String methodName = requestURI.substring(requestURI.lastIndexOf('/') + 1);
//获取方法并且执行
Class<? extends BaseServlet> aClass = this.getClass();
try {
Method method = aClass.getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
method.invoke(this,req,resp);
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
}
}
创建实体类对应的servlet:
@WebServlet("/user/*")
public class UserServlet extends BaseServlet {
public void selectAll(HttpServletRequest req, HttpServletResponse resp){
System.out.println("user..SelectAll");
}
public void add(HttpServletRequest req, HttpServletResponse resp){
System.out.println("user..add");
}
public void delete(HttpServletRequest req, HttpServletResponse resp){
System.out.println("user..delete");
}
public void update(HttpServletRequest req, HttpServletResponse resp){
System.out.println("user..update");
}
}
将之前写的每一个servlet放进去就ok了,注意路径需要添加一个中间路径user
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?