在简化servlet代码以后对BaseServlet的应用

Java Servlet 实现品牌管理:BrandServlet 示例

在Web开发中,Java Servlet 是处理客户端请求并生成响应的重要工具。本文将详细介绍如何使用一个扩展自基础Servlet类 (BaseServlet) 的 BrandServlet 来实现品牌数据的增删改查操作。

代码实现

BrandServlet 类定义

package com.itheima.web_20211015_122145.servlet;

import com.alibaba.fastjson.JSON;
import com.itheima.pojo.Brand;
import com.itheima.service.BrandService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.List;

@WebServlet("/brand/*")
public class BrandServlet extends BaseServlet {

    public void selectAll(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        BrandService brandService = new BrandService();
        List<Brand> list = brandService.SelectAll();

        String json = JSON.toJSONString(list);
        resp.setContentType("text/html;charset=utf-8");
        resp.getWriter().write(json);
    }

    public void addBrand(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");
        BufferedReader reader = req.getReader();
        String json = reader.readLine();
        Brand brand = JSON.parseObject(json, Brand.class);

        BrandService brandService = new BrandService();
        brandService.addBrand(brand);
        System.out.println("hahahahaha");
        resp.getWriter().write("success");
    }

    public void deleteBrand(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");
        BufferedReader reader = req.getReader();
        String json = reader.readLine();
        Brand brand = JSON.parseObject(json, Brand.class);
        System.out.println(brand);
        BrandService brandService = new BrandService();
        brandService.deleteBrand(brand);
        resp.getWriter().write("success");
    }

    public void changeBrand(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");
        BufferedReader reader = req.getReader();
        String json = reader.readLine();
        Brand brand = JSON.parseObject(json, Brand.class);
        System.out.println(brand);
        BrandService brandService = new BrandService();
        brandService.changeBrand(brand);
        resp.getWriter().write("success");
    }

    public void multiDeleteBrand(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");
        BufferedReader reader = req.getReader();
        String json = reader.readLine();
        List<Brand> brands = JSON.parseArray(json, Brand.class);
        BrandService brandService = new BrandService();
        brands.forEach(brand -> {
            brandService.deleteBrand(brand);
            System.out.println(brand);
        });
        resp.getWriter().write("success");
    }
}
解析代码
关键点解析
URL映射
通过 @WebServlet("/brand/*") 注解,我们将该 Servlet 映射到 /brand/ 路径下所有子路径。

方法定义
每个方法都处理特定类型的请求:

selectAll:查询所有品牌信息,并以 JSON 格式返回。
addBrand:从请求体中读取 JSON 数据,创建一个新的 Brand 对象,并将其添加到数据库中。
deleteBrand:从请求体中读取 JSON 数据,删除指定的品牌。
changeBrand:从请求体中读取 JSON 数据,更新指定品牌的详细信息。
multiDeleteBrand:从请求体中读取 JSON 数组,批量删除多个品牌。
异常处理
每个方法都设置了 resp.setContentType("text/html;charset=utf-8"); 确保返回的数据能够正确显示中文字符,并且在发生异常时抛出 ServletException 或 IOException。

使用示例
假设你有一个前端页面或API客户端需要与 BrandServlet 进行交互,以下是一些示例请求:

查询所有品牌
发送一个GET请求到 /brand/selectAll:

http
深色版本
GET /brand/selectAll HTTP/1.1
Host: yourserver
服务器将返回所有品牌的JSON列表。

添加新品牌
发送一个POST请求到 /brand/addBrand,并在请求体中包含品牌信息的JSON数据:

http
深色版本
POST /brand/addBrand HTTP/1.1
Host: yourserver
Content-Type: application/json

{
    "name": "New Brand",
    "description": "This is a new brand."
}
服务器将返回 "success" 表示操作成功。

删除品牌
发送一个POST请求到 /brand/deleteBrand,并在请求体中包含品牌信息的JSON数据:

http
深色版本
POST /brand/deleteBrand HTTP/1.1
Host: yourserver
Content-Type: application/json

{
    "id": 1
}
服务器将返回 "success" 表示操作成功。

更新品牌信息
发送一个POST请求到 /brand/changeBrand,并在请求体中包含品牌信息的JSON数据:

http
深色版本
POST /brand/changeBrand HTTP/1.1
Host: yourserver
Content-Type: application/json

{
    "id": 1,
    "name": "Updated Brand Name"
}
服务器将返回 "success" 表示操作成功。

批量删除品牌
发送一个POST请求到 /brand/multiDeleteBrand,并在请求体中包含品牌ID数组的JSON数据:

http
深色版本
POST /brand/multiDeleteBrand HTTP/1.1
Host: yourserver
Content-Type: application/json

[
    {"id": 1},
    {"id": 2}
]
服务器将返回 "success" 表示操作成功。
posted @ 2025-02-17 23:11  元始天尊123  阅读(12)  评论(0)    收藏  举报