首页 > 其他分享 >一个Servlet如何实现增-删-改-查的业务逻辑

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

时间:2023-12-17 16:58:23浏览次数:30  
标签:逻辑 方法 req requestURL 业务 user Servlet id

一、业务场景

  最近在教学生学习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中执行不同的增、删、改、查方法,如果有多个参数的话,自行添加参数即可。

标签:逻辑,方法,req,requestURL,业务,user,Servlet,id
From: https://www.cnblogs.com/yilangcode/p/17909308.html

相关文章

  • Servlet中访问路径配置为/*时,使用请求转发造成内存溢出
    一、问题由来最近在测试Servlet的请求转发功能,准备抽取一个公共的PageJumpTestServlet,用来做页面跳转功能。这样不用每次在测试的时候,都单独写一个Servlet用来做页面跳转。自己最初的设想时,在路径配置的时候使用/toPage/*,访问地址示例http://localhost:8080/javaWeb/toPage......
  • 【Web攻防之业务安全实战指南】第8章 回退模块测试
    8.1回退测试8.1.1测试原理和方法很多Web业务在密码修改成功后或者订单付款成功后等业务模块,在返回上一步重新修改密码或者重新付款时存在重新设置密码或者付款的功能,这时如果能返回上一步重复操作,而且还能更改或者重置结果,则存在业务回退漏洞。8.1.2测试过程靶场:8_1.zip首先......
  • 【Web攻防之业务安全实战指南】第6章 业务授权访问模块
    6.1非授权访问测试6.1.1测试原理和方法非授权访问是指用户在没有通过认证授权的情况下能够直接访问需要通过认证才能访问到的页面或文本信息。可以尝试在登录某网站前台或后台之后,将相关的页面链接复制到其他浏览器或其他电脑上进行访问,观察是否能访问成功。6.1.2测试过程靶......
  • 拓展了个新业务枚举类型,资损了
    分享是最有效的学习方式。案例背景翻车了,为了cover线上一个业务场景,小猫新增了一个新的枚举类型,盲目自信就没有测试发生产了,由于是底层服务,上层调用导致计算逻辑有误,造成资损。老板很生气,后果很严重。产品提出了一个新的业务场景,新增一种套餐费用的计算方式,由于业务比较着急,......
  • 判断推理-逻辑推理(推出类)
    推出类一、逻辑基础知识点1、一个符号两种条件记住一句话“一个推出符号代表两个含义”就是说对于A→B,A是B的充分条件,B是A的必要条件。可记为“谁是必要条件,谁在箭头后”。常见的可表示“必要条件”的词语有:基础、前提、关键、必须、需要、离不开、必不可少、不可......
  • Unity引擎2D游戏开发,实现人物下蹲逻辑和动画
    将下蹲动画创建进人物中在Animation窗口中的左侧,新建BlueCrouchStart动画时间轴,然后将下蹲动画拖入时间轴中62,63,64都是下蹲中的动画,但是64号是下蹲动作完毕后的静止动画,因为不拖入时间轴中,单独为其建立一个时间轴为64号下蹲动画完毕的静止动画单独创建一个时间轴,并命名为BlueC......
  • 通过业务流程优化,推进全面预算管理顺利实施
    当下,企业为了迎接新的机会和风险,能够在市场份额、财务增长和可持续发展方面保持领先地位,需要了解影响财务管理需求、成本支出流程和企业财务业绩评估等的业务分析趋势。通过评估需求数据与关键经济指标之间的相关性和发展趋势,可以为企业提供基于历史背景与经营现状的未来财务预测,并......
  • 判断推理-逻辑推理(论证类-比例类论证与解释说明)
    比例类论证与解释说明比例类论证一种“数学+逻辑”的一般质疑题,此类问题常犯的逻辑错误是用“分子”代替“分子/分母”得出结论,题干往往包含数字(分子部分),我们需要在选项中找到带“数字”的分母部分,识别题型,可以秒杀。解释说明常见问法为“以下哪项为真,最能解释这一情况?......
  • 数据中台的业务价值和技术价值
     01 数据中台的业务价值在以客户为中心的时代,数据中台对数字化转型具有重要作用,以数据中台为基础的数据系统将位于企业应用的核心,通过数据从企业降本增效、精细化经营等方面为企业带来巨大收益。数据中台的业务价值主要包括三个:(1)以客户为中心,用洞察驱动企业稳健行动数据中台建设......
  • 判断推理-逻辑判断(论证类-支持类论证与前提假设)
    支持类论证与前提假设常规问法支持论证类“以下哪项如果为真,最能加强上述论证?”、“以下哪项如果为真,最能支持上述发现:”;前提假设类“上述论证最可能基于的潜在假设是:”、“上述推测还需要隐含哪一项假设:”。支持类常见支持方式解释说明、增加(补充)论据、断点搭桥、必要条......