文章目录

  • 修改-回显数据
    • 流程图
      • 编写BrandMapper.java
      • 编写BrandMapper.xml
      • 编写BrandService.java
    • 编写表单
      • 编写brand.jsp
    • 编写Servlet
      • 编写SelectByIdServlet.java
      • 编写update.jsp
    • 运行测试
      • 回显功能
  • 修改-修改数据
    • 流程图
      • 编写BrandMapper.java
      • 编写BrandMapper.xml
      • 编写Service
      • 修改update.jsp
      • 编写updateServlet.java
    • 测试运行

修改-回显数据

完成一个根据id进行查询数据的功能

所以直接命名为SelectById

流程图

编写BrandMapper.java

package com.taotao.mapper;import com.taotao.pojo.Brand;
import org.apache.ibatis.annotations.ResultMap;
import org.apache.ibatis.annotations.Select;import java.util.List;/*** create by 刘鸿涛* 2022/3/29 16:12*/
public interface BrandMapper {//查询所有List<Brand> selectAll();//添加、新增数据void add(Brand brand);//修改-回显数据Brand selectById(int id);
}

编写BrandMapper.xml

这里注意应用resultmap

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.taotao.mapper.BrandMapper"><!--    查询所有功能--><select id="selectAll" resultMap="brandResultMap">select *from tb_brand</select><resultMap id="brandResultMap" type="brand"><result column="brandName" property="brand_name"></result><result column="companyName" property="company_name"></result></resultMap><!--    添加功能--><insert id="add" >insert into tb_brandvalues (#{id},#{brand_name},#{company_name},#{ordered},#{description},#{status});</insert><!--    修改-回显数据--><select id="selectById" resultMap="brandResultMap">select * from tb_brand where id = #{id};</select>
</mapper>

编写BrandService.java

package com.taotao.service;import com.taotao.mapper.BrandMapper;
import com.taotao.pojo.Brand;
import com.taotao.util.SqlSessionfactoryUtils;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;import java.util.List;/*** create by 刘鸿涛* 2022/3/29 16:59*/
@SuppressWarnings({"all"})
public class BrandService {SqlSessionFactory factory = SqlSessionfactoryUtils.getSqlSessionFactory();/*** 查询所有* @return*/public List<Brand> selectAll(){//调用BrandMapper.selectAll()//2.获取sqlSessionSqlSession sqlSession = factory.openSession();//3.获取BrandMapperBrandMapper mapper = sqlSession.getMapper(BrandMapper.class);//4.调用方法List<Brand> brands = mapper.selectAll();//5.关闭资源sqlSession.close();return brands;}/*** 添加数据*/public void add(Brand brand){//调用BrandMapper.add(Brand brand);//2.获取sqlSessionSqlSession sqlSession = factory.openSession();//3.获取BrandMapperBrandMapper mapper = sqlSession.getMapper(BrandMapper.class);//4.调用方法mapper.add(brand);//5.提交事务sqlSession.commit();//6.释放资源sqlSession.close();}/*** 通过id修改数据* @param id* @return*/public Brand selectById(int id){//调用BrandMapper.selectById(Integer id)//获取sqlSessionSqlSession sqlSession = factory.openSession();//获取BrandMapperBrandMapper mapper = sqlSession.getMapper(BrandMapper.class);//调用方法Brand brand = mapper.selectById(id);//提交事务sqlSession.commit();//6.释放资源sqlSession.close();return brand;}
}

编写表单

编写brand.jsp

连接selectByIdServlet.java获取id

<%--Created by IntelliJ IDEA.User: guiguiDate: 2022/3/29Time: 10:32To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page isELIgnored="false" %><html>
<head><title>Title</title>
</head>
<body><input type="button" value="新增" id="add"><br><hr>
<table border="1" cellspacing="0" width="%80"><tr><th>序号</th><th>品牌名称</th><th>公司名称</th><th>价格</th><th>描述</th><th>状态</th></tr><c:forEach items="${brands}" var="brand" varStatus="status"><tr align="center"><td>${brand.id}</td><td>${brand.brand_name}</td><td>${brand.company_name}</td><td>${brand.ordered}</td><td>${brand.description}</td><c:if test="${brand.status == 1}"><td>启用</td></c:if><c:if test="${brand.status != 1}"><td>禁用</td></c:if><td><a href="/brand_demo/selectByIdServlet?id=${brand.id}">Update</a> <a href="">Delete</a></td></tr>
</c:forEach><script>document.getElementById("add").onclick = function (){location.href = "/brand_demo/addBrand.jsp";}</script></table>
</body>
</html>

编写Servlet

编写SelectByIdServlet.java

package com.taotao.web;import com.taotao.pojo.Brand;
import com.taotao.service.BrandService;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*** create by 刘鸿涛* 2022/3/31 21:25*/
@WebServlet("/selectByIdServlet")public class SelectByIdServlet extends HttpServlet {private BrandService service = new BrandService();@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//接收idString id = req.getParameter("id");//调用service查询Brand brand = service.selectById(Integer.parseInt(id));//存储到request中req.setAttribute("brand",brand);//转发到update.jspreq.getRequestDispatcher("/update.jsp").forward(req,resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doGet(req,resp);}
}

编写update.jsp

<%--Created by IntelliJ IDEA.User: guiguiDate: 2022/3/31Time: 12:43To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--引用c标签--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%--<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>--%>
<%--<%@ page isELIgnored="false" %>--%>
<html>
<head><meta charset="UTF-8"><title>Title</title>
</head>
<style>* {margin: 0;      /*外边距*/padding: 0;      /*内边距 */font-family: "微软雅黑 Light";}                                       /*清除所有默认样式*/:root,form {                            /*选择最外层标签HTML*/height: 70%;display: flex;           /*改变元素*/align-items: center;    /*垂直方向对齐方式*/justify-content: center;    /*水平方向子项的对齐和分布方式*/}form {flex-direction: column;        /*控制子项整体布局方向(从上到下)*/padding: 40px;        /*上内边距*/width: 300px;       /*盒子模型宽*/box-shadow: 0 15px 20px rgba(0, 0, 0, 0.5);        /*应用阴影  a是alpha “透明 ”的意思*/}.form-title {margin-bottom: 20px;    /*下外边距*/}.form-input,.form-radio,.form-button {width: 100%;margin-bottom: 20px; /*下外边距*/}.form-input input {                            /*两个选择器具有包含关系*/padding-left: 10px;height: 40px;width: 100%;box-sizing: border-box;      /*盒子边框*/border: 2px solid rgba(0, 0, 0, 0.82);      /*边框线宽度,样式(实线),颜色*/}.form-radio,.form-button {height: 40px;display: flex;           /*控制元素类型*/align-items: center;justify-content: space-between;}.form-radio-choose {display: flex;align-items: center;}.form-radio-choose input {margin-right: 20px;      /*右外边距*/height: 30px;width: 30px;}.form-button {justify-content: center;background-color: black;color: white;}
</style><body><form action="/brand_demo/AddServlet" method="post"><div class="form-title"><h2>Update Data</h2></div>             <!--块容器标记实现网页的规划和布局--><div class="form-input"><input type="text" placeholder="Brand Name:" name="brand_name" value="${brand.brand_name}"></div><div class="form-input"><input type="text" placeholder="Company Name:" name="company_name" value="${brand.company_name}"></div><div class="form-input"><input type="text" placeholder="Price:" name="ordered" value="${brand.ordered}"></div><div class="form-input"><input type="text" placeholder="Remarks:" name="description" value="${brand.description}"></div><c:if test="${brand.status == 0}"><div class="form-radio"><div class="form-radio-title">Status:</div><div class="form-radio-choose"><input type="radio" checked  value="1" name="status" />On</div><div class="form-radio-choose"><input type="radio" value="0" name="status"/>Off</div></div></c:if><c:if test="${brand.status == 1}"><div class="form-radio"><div class="form-radio-title">Status:</div><div class="form-radio-choose"><input type="radio"   value="1" name="status" />On</div><div class="form-radio-choose"><input type="radio"  checked value="0" name="status"/>Off</div></div></c:if><div class="form-button">
<%--               <input type="radio" name="status" value="0">禁用--%>
<%--                <input type="radio" name="status" value="1" >启用--%><input class="form-button" type="submit" value="Submit"></div>
<%--        <div class="form-button">--%>
<%--&lt;%&ndash;            <p>重置</p>&ndash;%&gt;--%>
<%--        </div>--%></form></body></html>

运行测试

回显数据完成,鼠标指针放在update选项时左下角网页可以得到id

回显功能

只有回显功能,不能通过此页面更改相应id数据

修改-修改数据

流程图

编写BrandMapper.java

package com.taotao.mapper;import com.taotao.pojo.Brand;
import org.apache.ibatis.annotations.ResultMap;
import org.apache.ibatis.annotations.Select;import java.util.List;/*** create by 刘鸿涛* 2022/3/29 16:12*/
public interface BrandMapper {//查询所有List<Brand> selectAll();//添加、新增数据void add(Brand brand);//修改-回显数据Brand selectById(int id);//修改-修改数据void update(Brand brand);
}

编写BrandMapper.xml

<!--    修改-修改数据--><update id="update">update tb_brand set brandName = #{brand_name},companyName = #{company_name},ordered = #{ordered},description = #{description},status = #{status} where id = #{id};</update>

编写Service

编写BrandService

    /*** 修改* @param brand*/public void update(Brand brand){//调用BrandMapper.add(Brand brand);//2.获取sqlSessionSqlSession sqlSession = factory.openSession();//3.获取BrandMapperBrandMapper mapper = sqlSession.getMapper(BrandMapper.class);//4.调用方法mapper.update(brand);//5.提交事务sqlSession.commit();//6.释放资源sqlSession.close();}

修改update.jsp

修改update.jsp数据传输到servlet

注意要传入id到servlet

注意id不要显示在update.jsp页面中(隐藏域),type = hidden

<%--Created by IntelliJ IDEA.User: guiguiDate: 2022/3/31Time: 12:43To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--引用c标签--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%--<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>--%>
<%--<%@ page isELIgnored="false" %>--%>
<html>
<head><meta charset="UTF-8"><title>Title</title>
</head>
<style>* {margin: 0;      /*外边距*/padding: 0;      /*内边距 */font-family: "微软雅黑 Light";}                                       /*清除所有默认样式*/:root,form {                            /*选择最外层标签HTML*/height: 70%;display: flex;           /*改变元素*/align-items: center;    /*垂直方向对齐方式*/justify-content: center;    /*水平方向子项的对齐和分布方式*/}form {flex-direction: column;        /*控制子项整体布局方向(从上到下)*/padding: 40px;        /*上内边距*/width: 300px;       /*盒子模型宽*/box-shadow: 0 15px 20px rgba(0, 0, 0, 0.5);        /*应用阴影  a是alpha “透明 ”的意思*/}.form-title {margin-bottom: 20px;    /*下外边距*/}.form-input,.form-radio,.form-button {width: 100%;margin-bottom: 20px; /*下外边距*/}.form-input input {                            /*两个选择器具有包含关系*/padding-left: 10px;height: 40px;width: 100%;box-sizing: border-box;      /*盒子边框*/border: 2px solid rgba(0, 0, 0, 0.82);      /*边框线宽度,样式(实线),颜色*/}.form-radio,.form-button {height: 40px;display: flex;           /*控制元素类型*/align-items: center;justify-content: space-between;}.form-radio-choose {display: flex;align-items: center;}.form-radio-choose input {margin-right: 20px;      /*右外边距*/height: 30px;width: 30px;}.form-button {justify-content: center;background-color: black;color: white;}
</style><body><form action="/brand_demo/UpdateServlet" method="post"><div class="form-title"><h2>Update Data</h2></div>              <!--块容器标记实现网页的规划和布局--><%--     隐藏域,提交id--%><input type="hidden" name="id" value="${brand.id}"><div class="form-input"><input type="text" placeholder="Brand Name:" name="brand_name" value="${brand.brand_name}"></div><div class="form-input"><input type="text" placeholder="Company Name:" name="company_name" value="${brand.company_name}"></div><div class="form-input"><input type="text" placeholder="Price:" name="ordered" value="${brand.ordered}"></div><div class="form-input"><input type="text" placeholder="Remarks:" name="description" value="${brand.description}"></div><c:if test="${brand.status == 0}"><div class="form-radio"><div class="form-radio-title">Status:</div><div class="form-radio-choose"><input type="radio" checked  value="1" name="status" />On</div><div class="form-radio-choose"><input type="radio" value="0" name="status"/>Off</div></div></c:if><c:if test="${brand.status == 1}"><div class="form-radio"><div class="form-radio-title">Status:</div><div class="form-radio-choose"><input type="radio"   value="1" name="status" />On</div><div class="form-radio-choose"><input type="radio"  checked value="0" name="status"/>Off</div></div></c:if><div class="form-button">
<%--               <input type="radio" name="status" value="0">禁用--%>
<%--                <input type="radio" name="status" value="1" >启用--%><input class="form-button" type="submit" value="Submit"></div>
<%--        <div class="form-button">--%>
<%--&lt;%&ndash;            <p>重置</p>&ndash;%&gt;--%>
<%--        </div>--%></form></body></html>

编写updateServlet.java

package com.taotao.web;import com.taotao.pojo.Brand;
import com.taotao.service.BrandService;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*** create by 刘鸿涛* 2022/3/31 12:02*/
@WebServlet("/UpdateServlet")
public class UpdateServlet extends HttpServlet {private BrandService service = new BrandService();@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.调用BrandService完成添加String id = req.getParameter("id");String brandName = req.getParameter("brand_name");String companyName = req.getParameter("company_name");String ordered = req.getParameter("ordered");String description = req.getParameter("description");String status = req.getParameter("status");//封装为一个Brand对象Brand brand = new Brand();brand.setId(Integer.parseInt(id));brand.setBrand_name(brandName);brand.setCompany_name(companyName);brand.setOrdered(Integer.parseInt(ordered));brand.setDescription(description);brand.setStatus(Integer.parseInt(status));//2.调用add方法,传入brand对象service.update(brand);//3.存入到requset域中
//        req.setAttribute("brands",brand);//4.转发到查询所有servlet中req.getRequestDispatcher("/selectAllServlet").forward(req,resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//处理Post请求的乱码问题req.setCharacterEncoding("utf-8");this.doGet(req, resp);}
}

测试运行

完美


Javaweb - JSP章节 - MVC和三层架构案例总练习(下) - “回显数据”-“修改数据”功能实现相关推荐

  1. 杨老师课堂之JavaWeb体系的MVC与三层架构有什么区别

    首先,声明一下,三层是三层,MVC是MVC,这俩是毫无关系的. 三层是从整个应用程序架构的角度来分的三层(如果程序需要,还可以分多层). 三层架构通常包括表示层,业务逻辑层以及数据访问层.虽然三层架构 ...

  2. 关于MVC与三层架构、个人总结网上杂七杂八得出的最终成果、asp.net (core) MVC、JavaWeb的MVC

    阅读本文必须明白的事情 首先需要明白的是不同语言实现的MVC与三层架构对应的层是不一样的!!! 拿.net来说,.net实现MVC与其他语言的MVC具体实现是不同的,asp.net MVC与 MVC ...

  3. JavaWeb——MVC与三层架构

    文章目录 JavaWeb--MVC与三层架构 1.三层架构 2.MVC 3.MVC与三层架构的对应联系 4.MVC与三层架构的区别 JavaWeb--MVC与三层架构 1.三层架构 三层架构 (3-t ...

  4. MVC与三层架构区别

    我们平时总是将三层架构与MVC混为一谈,殊不知它俩并不是一个概念.下面我来为大家揭晓我所知道的一些真相. 首先,它俩根本不是一个概念. 三层架构是一个分层式的软件体系架构设计,它可适用于任何一个项目. ...

  5. MVC与三层架构的联系及三层架构实现学生注册功能

    MVC与三层架构的联系及三层架构实现学生注册功能 三层架构的逻辑关系: MVC和三层架构的联系: 三层架构实现学生注册功能的逻辑: 学生注册页面: 输入学生信息: 完成学生注册: 代码实现: add. ...

  6. MVC与三层架构模型笔记

    文章目录 1. MVC 1.1 什么是MVC 1.2 为什么需要MVC 2. 项目的三层架构 2.1 表现层 User Interface layer 2.2 业务逻辑层 Business Logic ...

  7. 浅谈 MVC与三层架构

    引言: 使用Eclipse开发工具写Java Web项目时会发现,一个中型或者大型项目 随着代码的增多,会发现:代码既可以写在src目录下,也可以写在WebContent目录下.src下可以建很多包 ...

  8. MVC与三层架构理解

    文章目录 1. JSP的发展 2. MVC思想 优缺点 3. 三层架构 为什么使用三层 三层优缺点 4. MVC与三层架构的区别 1. JSP的发展 早期只有Servlet,只能使用response输 ...

  9. MVC与三层架构之间的关系

    一. MVC MVC是软件工程中的一种软件架构模式,分为Model(模型).View(视图).Controller(控制器) 1. Model model是应用对象,程序员编写程序应有的功能(实现算法 ...

  10. 关于MVC与三层架构

    我认为MVC设计模式,关键在于构建Model,Model就是MVC模式的灵魂,他包含了三层架构里面的 "实体规范层"."行为规则层"."数据访问层&q ...

最新文章

  1. mongoDB的常用语法
  2. OpenCV 透视变换
  3. Codeforces Round #596 (Div. 2)(第三场)
  4. 数据库索引为什么使用B+树?
  5. 1032 挖掘机技术哪家强 (20 分)(c语言)
  6. VS2010安装帮助文档出现错误
  7. 《A First Course in Probability》-chape4-离散型随机变量-几种典型分布列
  8. python history函数_python的history_n 和history函数 获取的成交量和持仓量出现翻倍
  9. 顺序表的插入与删除java_C++实现顺序表的常用操作(插入删出查找输出)
  10. CodeIgniter 合作paypal
  11. 量化投资与Python
  12. 2011华为上机试题-Java
  13. java中json转对象_Java开发中json使用,各对象与json相互转换
  14. 【JavaScript设计模式】装饰器模式
  15. linux双显卡自动切换,Deepin(Linux)双显卡之bumblebee(大黄蜂)、Prime及手动切换方案...
  16. RoaringBitMap学习和实践
  17. 樱花泪计算机音乐,樱花泪(纯音乐)
  18. 一个机械研究生在计算机与机械之间的徘徊与思考-(下)之填坑
  19. OpenGL总结9-万向锁
  20. 2021 ICPC 南京 3.27训练赛

热门文章

  1. Vue项目安装axios报错
  2. LQR控制算法的浅析
  3. 一 集成电路与IP核技术
  4. CMOS数字集成电路
  5. php wind8.5,PHPWind 8.5 正式版源码下载
  6. python自制海龟时钟
  7. java teechart怎么用_TeeChart for Java
  8. Django url管理之include
  9. 珠海华润银行网银密码控件
  10. 计算机操作系统张尧学第四章课后答案,计算机操作系统 课后习题答案 张尧学...