web+EL+mybatis 实现简单三层架构思想

1.查询所有数据

  1. 获取前端的请求参数 ,去数据库 查.查了返回查询结果.
  2. 将数据放在 request 的请求域中 ,然后将数据请求转发 到 页面中去.
  3. 页面 遍历数据,展示出来
    web+EL+mybatis 实现简单三层架构思想_第1张图片

1.1 dao 查询数据库

  /**
     * 查询所有品牌信息
     * @return
     */
    @Select("select * from tb_brand")
    List<Brand> selectAll();

1.2 service 处理查询结果

 /**
     * 查询所有品牌信息
     * @return
     */
    public List<Brand> selectAll(){
        SqlSession sqlSession = factory.openSession();
        BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);
        List<Brand> list = brandMapper.selectAll();
        return list;
    }

1.3controller 做出响应

 private BrandService brandService=new BrandService();

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        List<Brand> list = brandService.selectAll();
        request.setAttribute("brands",list);
        request.getRequestDispatcher("/brand.jsp").forward(request,response);

    }

1.4 前端页面展示数据

 <c:forEach items="${brands}" var="brand" varStatus="vs">
 <tr align="center">
     <td>${vs.count}td>
     <td>${brand.brandName}td>
     <td>${brand.companyName}td>
     <td>${brand.ordered}td>
     <td>${brand.description}td>
     <td>${brand.status==1?"启用":"禁用"}td>
     <td><a href="/day10-brand-demo/selectByIdServlet?id=${brand.id}">修改a> <a href="/day10-brand-demo/DeleteServlet?id=${brand.id}">删除a>td>
 tr>
 c:forEach>

2添加数据

  1. 前端页面 点击 增加 按钮时 ,页面跳转到添加页面。。进行一次跳转
  2. 添加页面 完成信息后 点击提交后,请求参数 发生送到后台 controller层 接收
  3. 调用service 层和dao层 完成添加方法
  4. 添加成功 需要 重定向到查询所有的页面

web+EL+mybatis 实现简单三层架构思想_第2张图片

2.1 前端页面跳转到添加页面


<input type="button" value="新增" onclick="toAdd()"><br>



<script>
	 /*上面需要添加个 点击事件  */
   function toAdd() {
        /*跳转到添加页面*/
       location.href="/day10-brand-demo/addBrand.html"
   }
script>

2.2 添加页面 完成后 跳转到conrtroller层

/* 跳转到conrtroller层*/
<form action="/day10-brand-demo/addServlet" method="post">
    品牌名称:<input name="brandName"><br>
    企业名称:<input name="companyName"><br>
    排序:<input name="ordered"><br>
    描述信息:<textarea rows="5" cols="20" name="description">textarea><br>
    状态:
        <input type="radio" name="status" value="0">禁用
        <input type="radio" name="status" value="1">启用<br>

    <input type="submit" value="提交">
form>

2.3 conrtroller层业务 最后重定向到查询所有,可以展示新增的那条数据

 
    private BrandService brandService =new BrandService();
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置请求中文乱码问题
        request.setCharacterEncoding("utf-8");
        //2.获取请求参数  封装成brand对象
        Brand brand = new Brand();
        try {
            BeanUtils.populate(brand, request.getParameterMap());
        } catch (Exception e) {
            e.printStackTrace();
        }
        //3.调用services 的 add方法
        brandService.add(brand);
        //4.重定向到selectAll这个类.重新查询一下所有,刷新列表
        response.sendRedirect(request.getContextPath()+"/selectAllServlet");
    }

2.4service 和dao 代码 略

3 修改数据

web+EL+mybatis 实现简单三层架构思想_第3张图片
web+EL+mybatis 实现简单三层架构思想_第4张图片

3.1 需要回显数据

  1. 点击修改 按钮后,会跳转到 修改页面 ,修改页面具有完整的数据信息.—>数据回显
  2. 根据id先去数据库查询. 查询后的结果封装的到request 域中共享.请求转发到前端 修改界面

3.2 修改数据

  1. 根据 id修改,在界面是看不到的.需要我们在前端界面,在如隐藏属性.
  2. 修改的值,要动态获取,采用EL表达式来操作.

1 点击跳转到修改页面

  <c:forEach items="${brands}" var="brand" varStatus="vs">
    <tr align="center">
        <td>${vs.count}td>
        <td>${brand.brandName}td>
        <td>${brand.companyName}td>
        <td>${brand.ordered}td>
        <td>${brand.description}td>
        <td>${brand.status==1?"启用":"禁用"}td>
        <td><a href="/day10-brand-demo/selectByIdServlet?id=${brand.id}">修改a> <a href="/day10-brand-demo/DeleteServlet?id=${brand.id}">删除a>td>
    tr>
    c:forEach>

2 修改页面跳转到前端

<form action="/day10-brand-demo/updateServlet" method="post">
    <%--id 隐藏域   加上el 的动态获取数据--%>
    <input type="hidden" name="id" value="${brand.id}">
    品牌名称:<input name="brandName" value="${brand.brandName}"><br>
    企业名称:<input name="companyName" value="${brand.companyName}"><br>
    排序:<input name="ordered" value="${brand.ordered}" ><br>
    描述信息:<textarea rows="5" cols="20" name="description">
    ${brand.description}
    textarea><br>
    状态:
    禁用
    启用<br>

    <input type="submit" value="提交">
form>

3.根据id查询 请求转发到更新页面

 private BrandService brandService=new BrandService();
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        int id = Integer.parseInt(request.getParameter("id"));
        Brand brand = brandService.selectById(id );
        request.setAttribute("brand",brand);
        request.getRequestDispatcher("/update.jsp").forward(request,response);
    }

4 更新完成 重定向到 查询所有方法 展示所有数据

    private  BrandService brandService=new BrandService();
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        //2.获取请求参数  封装成brand对象
        Brand brand = new Brand();
        try {
            BeanUtils.populate(brand, request.getParameterMap());
        } catch (Exception e) {
            e.printStackTrace();
        }
        //3.调用services 的 add方法
        brandService.update(brand);
        //4.请求转发到selectAll这个类.重新查询一下所有,刷新列表
        request.getRequestDispatcher("/selectAllServlet").forward(request,response);
    }

4 .删除 同增加

你可能感兴趣的:(javaj基础,前端,架构,java)