## 步骤 1 : 编辑页面提交数据
编辑页面提交数据到admin_category_update
~~~
<form method="post" id="editForm" action="admin_category_update"
enctype="multipart/form-data">
~~~
1. method="post" 用于提交中文
2. enctype="multipart/form-data" 用于提交二进制文件
![](https://box.kancloud.cn/e6da79947f7e275c5990e9e35115a7ef_508x256.png)
# 步骤 2 : 调用CategoryServlet.update()方法
CategoryServlet.update() 方法和CategoryServlet.add()方法的处理很类似,有所不同之处在于增加操作一定会提交图片,而修改不一定提交图片。
在update()方法中做了如下操作:
1. parseUpload 获取上传文件的输入流
2. parseUpload 方法会修改params 参数,并且把浏览器提交的name信息放在其中
3. 从params 中取出id和name信息,并根据这个id,name信息,创建新的Category对象,并借助categoryDAO,向数据库中更新数据。
4. 根据request.getServletContext().getRealPath( "img/category"),定位到存放分类图片的目录
5. 文件命名以保存到数据库的分类对象的id+".jpg"的格式命名
6. 如果通过parseUpload 获取到的输入流是空的,或者其中的可取字节数为0,那么就不进行上传处理
```
if(null!=is && 0!=is.available())
```
7. 根据步骤1获取的输入流,把浏览器提交的文件,复制到目标文件
8. 借助ImageUtil.change2jpg()方法把格式真正转化为jpg,而不仅仅是后缀名为.jpg
9. 最后客户端跳转到admin_category_list
```
public String update(HttpServletRequest request, HttpServletResponse response) {
Map<String, String> params = new HashMap<>();
InputStream is = super.parseUpload(request, params);
System.out.println(params);
String name = params.get("name");
int id = Integer.parseInt(params.get("id"));
Category c = new Category();
c.setId(id);
c.setName(name);
categoryDao.update(c);
File imageFolder = new File(request.getSession().getServletContext().getRealPath("img/category"));
File file = new File(imageFolder, c.getId() + ".jpg");
file.getParentFile().mkdirs();
try {
if (null != is && 0 != is.available()) {
try (FileOutputStream fos = new FileOutputStream(file)) {
byte b[] = new byte[1024 * 1024];
int length = 0;
while (-1 != (length = is.read(b))) {
fos.write(b, 0, length);
}
fos.flush();
BufferedImage img = ImageUtil.change2jpg(file);
ImageIO.write(img, "jpg", file);
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "@admin_category_list";
}
```
- 项目简介
- 功能一览
- 前台
- 后台
- 开发流程
- 需求分析-展示
- 首页
- 产品页
- 分类页
- 搜索结果页
- 购物车查看页
- 结算页
- 确认支付页
- 支付成功页
- 我的订单页
- 确认收货页
- 评价页
- 页头信息展示
- 需求分析-交互
- 分类页排序
- 立即购买
- 加入购物车
- 调整订单项数量
- 删除订单项
- 生成订单
- 订单页功能
- 确认付款
- 确认收货
- 提交评价信息
- 登录
- 注册
- 退出
- 搜索
- 前台需求列表
- 需求分析后台
- 分类管理
- 属性管理
- 产品管理
- 产品图片管理
- 产品属性设置
- 用户管理
- 订单管理
- 后台需求列表
- 表结构设计
- 数据建模
- 表与表之间的关系
- 实体类设计
- DAO类设计
- 工具类
- CategoryDao设计
- Service业务类设计
- 后台-分类管理
- 可运行的项目
- 静态资源
- FILTER配合SERVLET
- JSP包含关系
- 查询
- 分页
- 增加
- 删除
- 编辑
- 修改
- 后台其他管理
- 属性管理
- 产品管理
- 产品图片管理
- 产品属性值设置
- 用户管理
- 订单管理