一个Servlet如何实现增-删-改-查的业务逻辑

一、业务场景

最近在教学生学习JavaWeb中的Servlet,它就是一个Java服务端的小程序,用来提供各种服务。

在讲解得时候,自己突然遇到一个问题,那就是现在没有使用什么SpringMvc框架,可以配置二级路径,

该如何使用Servlet实现不同的增、删、改、查的方法呢?这个问题自己一时半会也没想明白,直到自己

学习到Servlet中路径匹配的的时候才解决这个问题。

二、需求分析

既然需要使用一个Servlet实现增、删、改、查的方法,那么前端页面在访问的时候,必须要访问不同的请求地址,

这样后台才好区分该执行哪一个方法。比如访问/user/add路径就表示执行新增方法,访问/user/delete路径就表示执行

删除方法等等。那么Servlet的路径设置能否满足这个要求呢?答案是可以的。在设置路径匹配的时候,设置为

@WebServlet("/user/*")目录匹配,这样访问/user/add,/user/delete都会访问到当前的Servlet。

三、解决方案

访问请求是导向同一个Servlet,可是下一步该如何操作呢,比如新增的时候执行新增方法,修改的时候执行修改方法。

这就比较好办了。可以在Servlet中先获取请求地址,然后截取地址中的最后一部分,然后使用switch语句或者是if/else-if

多分支条件选择语句即可。详细代码如下,

@WebServlet("/user/*")

public class UserServlet extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

String requestURL = req.getRequestURL().toString();

PrintWriter writer = resp.getWriter();

if(requestURL != null && requestURL.lastIndexOf("/") > 0){

requestURL = requestURL.substring(requestURL.lastIndexOf("/") + 1);

String idStr = req.getParameter("id");

Integer id = Integer.parseInt(idStr);

if("add".equals(requestURL)){

addUser(id);

} else if("delete".equals(requestURL)){

deleteUser(id);

}

writer.write("success");

return;

}

writer.write("url error");

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

super.doPost(req, resp);

}

// 新增方法

private void addUser(Integer id){

System.out.println("addUser-->" + id);

}

// 删除方法

private void deleteUser(Integer id){

System.out.println("deleteUser-->" + id);

}

}

测试结果如下:

后台方法中打印信息的如下

这样就可以实现在一个Servlet中执行不同的增、删、改、查方法,如果有多个参数的话,自行添加参数即可。