添加和修改操作
页面跳转问题
点击修改按钮时 跳转的路径 如下
点击添加按钮时 跳转的路径如下
通过这两张图片 不难发现 跳转的是同一个jsp 但是添加操作 是不带id跳转
而修改操作是带着id跳转
所以在其 跳转的页面add_goods_type.jsp页面中 有一个这样的判断
如果没有id 则显示添加商品类型的h2标签 反之 如果有 id 则显示 修改商品类型的h2标签
同样 了解到 添加操作 不需要显示默认的数据 而修改操作需要显示你修改的那条数据的原数据 如 我点击第三条数据的修改 那在修改页面 应该显示 默认的商品类型 为小米平板
因为修改操作是带着id跳转到这个jsp页面的 所以 通过el表达式 在页面中获取id 如果id不为null 证明为修改操作 然后通过id查询出这条数据 存放在对象中
然后将该对象存放到request域中 方便在页面显示数据
通过上图 可以发现 添加和修改操作 跳转的是同一个servlet 而根据不同的操作 判断 然后对应不同的id的输入框 这个输入框隐藏 目的是不让用户手动输入
然后在servlet层 获取id和name 然后再service层 判断id 是否为 -1 区分添加操作和修改操作
部分代码如下
其中GoodsTypeUpdateServlet 代码如下
package com.qfedu.controller;
import com.qfedu.service.GoodsTypeService;
import com.qfedu.service.impl.GoodsTypeServiceImpl;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet(name = "GoodsTypeUpdateServlet", value = "/GoodsTypeUpdateServlet")
public class GoodsTypeUpdateServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置请求的字符集 防止中文乱码
request.setCharacterEncoding("utf-8");
GoodsTypeService goodsTypeService = new GoodsTypeServiceImpl();
//获取页面input输入框的id和typename
String typename = request.getParameter("typename");
String id1 = request.getParameter("id");
Integer id = Integer.valueOf(id1);
boolean b = goodsTypeService.updateGoodsType(id, typename);
if (b) {
response.sendRedirect("GoodsTypeSelectServlet");
} else {
response.sendRedirect("GoodsTypeSelectServlet");
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
GoodsTypeServletImpl中的 updateGoodsType方法如下
@Override
public boolean updateGoodsType(int id, String typename) {
if(id==-1){
//通过前端传过来的id 为-1 代表该操作为添加操作
Object[] objs={typename};
if(goodsTypeDao.addGoodsType(objs)==1){
return true;
}else {
return false;
}
}else{
//若 id为正常id 证明为修改操作
Object[] objs={typename,id};
if(goodsTypeDao.updateGoodsType(objs)==1){
return true;
}else {
return false;
}
}
}
dao层代码 略