在简化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" 表示操作成功。

浙公网安备 33010602011771号