- JavaWeb小项目(二)- 完成品牌数据的增删改查(JSP/MVC/三层架构综合应用)
- 环境搭建
- 查询所有
- 添加数据
- 修改数据
- 回显数据
- 修改数据
- 删除数据(额外添加的功能)
涉及技术栈:Java,MyBatis,Servlet,JSP
需要自行导入的包链接: 提取码:6666 环境搭建
-
创建新的模块 brand_demo,并在 pom.xml 文件引入坐标
org.mybatis mybatis 3.5.5 mysql mysql-connector-java 5.1.46 javax.servlet javax.servlet-api 3.1.0 provided javax.servlet.jsp jsp-api 2.2 provided jstl jstl 1.2 taglibs standard 1.1.2 org.apache.tomcat.maven tomcat7-maven-plugin 2.2 -
在 com.itheima 包下创建三层架构的包结构,并将创建(若现成的则导入)数据库表 tb_brand
-
在 com.itheima.pojo 包下创建实体类 Brand
public class Brand { // id 主键 private Integer id; // 品牌名称 private String brandName; // 企业名称 private String companyName; // 排序字段 private Integer ordered; // 描述信息 private String description; // 状态:0:禁用 1:启用 private Integer status; public Brand() { } public Brand(Integer id, String brandName, String companyName, String description) { this.id = id; this.brandName = brandName; this.companyName = companyName; this.description = description; } public Brand(Integer id, String brandName, String companyName, Integer ordered, String description, Integer status) { this.id = id; this.brandName = brandName; this.companyName = companyName; this.ordered = ordered; this.description = description; this.status = status; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getBrandName() { return brandName; } public void setBrandName(String brandName) { this.brandName = brandName; } public String getCompanyName() { return companyName; } public void setCompanyName(String companyName) { this.companyName = companyName; } public Integer getOrdered() { return ordered; } public void setOrdered(Integer ordered) { this.ordered = ordered; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public Integer getStatus() { return status; } public void setStatus(Integer status) { this.status = status; } @Override public String toString() { return "Brand{" + "id=" + id + ", brandName='" + brandName + ''' + ", companyName='" + companyName + ''' + ", ordered=" + ordered + ", description='" + description + ''' + ", status=" + status + '}'; } } -
准备 MyBatis 基础环境
在 com.itheima.mapper 创建 BrandMapperpublic interface BrandMapper { }在 resources 文件夹下添加 Mybatis-config.xml
在 resources 文件夹下创建 com.itheima.mapper 包,并在该包下创建 BrandMapper.xml
-
实现 Dao 层,通过 select * from tb_brand 实现查询表中的所有内容
public interface BrandMapper { @Select("select * from tb_brand") @ResultMap("brandResultMap") ListselectAll(); } -
在实现 Service 层之前将 SqlSessionFactory 类导入到 com.itheima.util 包下
public class SqlSessionFactoryUtils { private static SqlSessionFactory sqlSessionFactory; static { //静态代码块会随着类的加载而自动执行,且只执行一次 try { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } public static SqlSessionFactory getSqlSessionFactory(){ return sqlSessionFactory; } } -
实现 Service 层,创建 BrandService 类,实现查询所有的逻辑功能 (基本步骤:建立sql会话,通过sql会话获取mapper对象,最后调用存储在一个变量后返回,注意查询完之后一定要关闭会话);
public List
selectAll(){ //调用BrandMapper.selectAll() SqlSessionFactory factory = SqlSessionFactoryUtils.getSqlSessionFactory(); //1.获取SqlSession SqlSession sqlSession = factory.openSession(); //2.获取BrandMapper BrandMapper mapper = sqlSession.getMapper(BrandMapper.class); //3.调用方法 List brands = mapper.selectAll(); sqlSession.close(); return brands; } -
实现 web 层之写好 index.html 页面
Title 查询所有 -
实现 web 层之实现 SelectAllServlet 类实现页面交互
@WebServlet("/selectAllServlet") public class SelectAllServlet extends HttpServlet { private BrandService service = new BrandService(); @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1. 调用BrandService完成查询 Listbrands = service.selectAll(); //2.存入request域中 request.setAttribute("brands",brands); //3.转发到brand.jsp request.getRequestDispatcher("/brand.jsp").forward(request,response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request,response); } } -
实现 web 层之在 webapp 包下实现 brand.jsp 页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>Title
序号 品牌名称 企业名称 排序 品牌介绍 状态 操作 ${brand.id} ${brand.brandName} ${brand.companyName} ${brand.ordered} ${brand.description} 启用 禁用 修改 删除 -
实验效果
-
实现 Dao 层,通过 insert into tb_brand values(null,brand_name,company_name,ordered,description,status) 实现添加数据
public interface BrandMapper { @Insert("insert into tb_brand values(null,#{brandName},#{companyName},#{ordered},#{description},#{status})") void add(Brand brand); } -
实现 Service 层,在 BrandService 类,实现查询所有的逻辑功能 (基本步骤:建立sql会话,通过sql会话获取mapper对象,最后调用并commit,注意查询完之后一定要关闭会话);
public void add(Brand brand){ //调用BrandMapper.selectAll() SqlSessionFactory factory = SqlSessionFactoryUtils.getSqlSessionFactory(); //1.获取SqlSession SqlSession sqlSession = factory.openSession(); //2.获取brandMapper BrandMapper mapper = sqlSession.getMapper(BrandMapper.class); //3.调用方法 mapper.add(brand); sqlSession.commit(); sqlSession.close(); } -
实现 web 层之在 brand.jsp 的头部添加添加 “按钮”
-
实现 web 层之在 brand.jsp 的下面实现添加按钮的 js 脚本
-
实现 web 层之写好 addBrand.jsp 页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>添加品牌 添加品牌
-
实现 web 层之实现 AddServlet 类实现页面交互
@WebServlet("/addServlet") public class AddServlet extends HttpServlet { private BrandService service = new BrandService(); @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //处理POST请求的编码处理问题 request.setCharacterEncoding("utf-8"); //1.接收表单提交的数据,封装为一个Brand对象 String brandName = request.getParameter("brandName"); String companyName = request.getParameter("companyName"); String ordered = request.getParameter("ordered"); String description = request.getParameter("description"); String status = request.getParameter("status"); Brand brand = new Brand(); brand.setBrandName(brandName); brand.setCompanyName(companyName); brand.setOrdered(Integer.parseInt(ordered)); brand.setDescription(description); brand.setStatus(Integer.parseInt(status)); //2.调用Service,完成添加 service.add(brand); //3.转发到查询所有Servlet request.getRequestDispatcher("selectAllServlet").forward(request,response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request,response); } } -
实验结果
-
实现 Dao 层,通过 select * from tb_brand where id=#{id} 实现添加数据
public interface BrandMapper { @Select("select * from tb_brand where id=#{id}") @ResultMap("brandResultMap") Brand selectById(int id); } -
实现 Service 层,创建 BrandService 类,实现根据id查询逻辑功能 (基本步骤:建立sql会话,通过sql会话获取mapper对象,最后调用存储在一个变量后返回,注意查询完之后一定要关闭会话);
public Brand selectById(int id){ //调用BrandMapper.selectById(id) SqlSessionFactory factory = SqlSessionFactoryUtils.getSqlSessionFactory(); //1.获取SqlSession SqlSession sqlSession = factory.openSession(); //2.获取BrandMapper BrandMapper mapper = sqlSession.getMapper(BrandMapper.class); //3.调用方法 Brand brand = mapper.selectById(id); sqlSession.close(); return brand; }
-
实现 Dao 层,通过 update tb_brand set brand_name=#{brandName},company_name=#{companyName},ordered=#{ordered},description=#{description},status=#{status} where id=#{id} 实现修改数据
@Update("update tb_brand set brand_name=#{brandName},company_name=#{companyName},ordered=#{ordered},description=#{description},status=#{status} where id=#{id}") @ResultMap("brandResultMap") void update(Brand brand); -
实现 Service 层,创建 BrandService 类,调用修改数据功能 (基本步骤:建立sql会话,通过sql会话获取mapper对象,注意查询完之后一定要关闭会话);
public void update(Brand brand){ //调用BrandMapper.update(brand) SqlSessionFactory factory = SqlSessionFactoryUtils.getSqlSessionFactory(); //1. 获取SqlSession SqlSession sqlSession = factory.openSession(); //2.获取BrandMapper BrandMapper mapper = sqlSession.getMapper(BrandMapper.class); //3.调用方法 mapper.update(brand); sqlSession.commit(); sqlSession.close(); } -
实现 web 层之在 brand.jsp 页面把修改链接添加链接地址
修改 实现 web 层之在 selectById.jsp 页面回显数据,注意回显的数据回传回id,需要把id隐藏起来,这是不需要展现给用户来看的;
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>修改品牌 修改品牌
删除数据(额外添加的功能)实现 web 层之实现 UpdateServlet 类实现页面交互
@WebServlet("/updateServlet") public class UpdateServlet extends HttpServlet { private BrandService service = new BrandService(); @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //处理POST请求的编码处理问题 request.setCharacterEncoding("utf-8"); //1.接收表单提交的数据,封装为一个Brand对象 String id = request.getParameter("id"); String brandName = request.getParameter("brandName"); String companyName = request.getParameter("companyName"); String ordered = request.getParameter("ordered"); String description = request.getParameter("description"); String status = request.getParameter("status"); Brand brand = new Brand(); brand.setId(Integer.parseInt(id)); brand.setBrandName(brandName); brand.setCompanyName(companyName); brand.setOrdered(Integer.parseInt(ordered)); brand.setDescription(description); brand.setStatus(Integer.parseInt(status)); //2.调用Service,完成修改 service.update(brand); //3.转发到SelectAllServlet request.getRequestDispatcher("selectAllServlet").forward(request,response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request,response); } }- 实现 Dao 层,通过 delete from tb_brand where id=#{id} 实现删除数据
@Delete("delete from tb_brand where id=#{id}") @ResultMap("brandResultMap") void deleteById(int id); - 实现 Service 层,创建 BrandService 类,调用删除数据功能 (基本步骤:建立sql会话,通过sql会话获取mapper对象,注意查询完之后一定要关闭会话);
public void delete(int id){ //调用BrandMapper.delete(id) SqlSessionFactory factory = SqlSessionFactoryUtils.getSqlSessionFactory(); //1.获取SqlSession SqlSession sqlSession = factory.openSession(); //2.获取BrandMapper BrandMapper mapper = sqlSession.getMapper(BrandMapper.class); //3.调用方法 mapper.deleteById(id); sqlSession.commit(); sqlSession.close(); } - 实现 web 层之在 brand.jsp 页面把删除链接添加链接地址
删除
- 实现 web 层之实现 DeleteByIdServlet 类实现页面交互
@WebServlet("/deleteByIdServlet") public class DeleteByIdServlet extends HttpServlet { private BrandService service = new BrandService(); @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1.接收需要删除数据的id String id = request.getParameter("id"); //2.调用Service service.delete(Integer.parseInt(id)); //3.转发至SelectAllServlet request.getRequestDispatcher("selectAllServlet").forward(request,response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request,response); } }
Java相关栏目本月热门文章
- 1【Linux驱动开发】设备树详解(二)设备树语法详解
- 2别跟客户扯细节
- 3Springboot+RabbitMQ+ACK机制(生产方确认(全局、局部)、消费方确认)、知识盲区
- 4【Java】对象处理流(ObjectOutputStream和ObjectInputStream)
- 5【分页】常见两种SpringBoot项目中分页技巧
- 6一文带你搞懂OAuth2.0
- 7我要写整个中文互联网界最牛逼的JVM系列教程 | 「JVM与Java体系架构」章节:虚拟机与Java虚拟机介绍
- 8【Spring Cloud】新闻头条微服务项目:FreeMarker模板引擎实现文章静态页面生成
- 9JavaSE - 封装、static成员和内部类
- 10树莓派mjpg-streamer实现监控及拍照功能调试
- 11用c++写一个蓝屏代码
- 12从JDK8源码中看ArrayList和LinkedList的区别
- 13idea 1、报错java: 找不到符号 符号: 变量 log 2、转换成Maven项目
- 14在openwrt使用C语言增加ubus接口(包含C uci操作)
- 15Spring 解决循环依赖
- 16SpringMVC——基于MVC架构的Spring框架
- 17Andy‘s First Dictionary C++ STL set应用
- 18动态内存管理
- 19我的创作纪念日
- 20Docker自定义镜像-Dockerfile
热门相关搜索路由器设置 木托盘 宝塔面板 儿童python教程 心情低落 朋友圈 vim 双一流学科 专升本 我的学校 日记学校 西点培训学校 汽修学校 情书 化妆学校 塔沟武校 异形模板 西南大学排名 最精辟人生短句 6步教你追回被骗的钱 南昌大学排名 清朝十二帝 北京印刷学院排名 北方工业大学排名 北京航空航天大学排名 首都经济贸易大学排名 中国传媒大学排名 首都师范大学排名 中国地质大学(北京)排名 北京信息科技大学排名 中央民族大学排名 北京舞蹈学院排名 北京电影学院排名 中国戏曲学院排名 河北政法职业学院排名 河北经贸大学排名 天津中德应用技术大学排名 天津医学高等专科学校排名 天津美术学院排名 天津音乐学院排名 天津工业大学排名 北京工业大学耿丹学院排名 北京警察学院排名 天津科技大学排名 北京邮电大学(宏福校区)排名 北京网络职业学院排名 北京大学医学部排名 河北科技大学排名 河北地质大学排名 河北体育学院排名



