源代码:

https://github.com/jeffery11586/Leo-Messi

此项目基于MVC设计模式,Servlet做逻辑处理,jsp进行页面展示,DAO层处理数据库

1.数据库建表:

create table jspproduct(id int primary key auto_increment,name varchar(30) not null,description varchar(100) ,price int check( price >= 0 ),account int check( account >= 0 ),status int default 1 check( status in (0, 1) ),addtime date
);create table jspuser(id int(10) primary key auto_increment,username varchar(15) unique,password varchar(6) not null check( length(password)=6),realname varchar(20) not null
);
insert into jspuser values(1,'huxz','123456','胡鑫喆');
insert into jspuser values(2,'liucy','123456','刘春阳');
insert into jspuser values(3,'luxw','123456','陆晓伟');
commit;

2.新建idea web项目

3.添加依赖包,add as a library

4.新建com.xx.util包,添加工具类BaseDAO.java,添加过滤器处理中文乱码,添加配置文件config.properties到src下

5.新建实体类Product, 新建ProductService接口以及它的实现类ProductServiceImpl, 新建ProductDAO接口以及它的实现类ProductDAOImpl(继承BaseDAO类)

展示商品信息功能

流程:QueryProductListServlet–>product_list.jsp

在index.jsp中添加商品管理标签,链接为/QueryProductListServlet,并测试链接

<a href="/QueryProductListServlet">商品管理</a>

新建QueryProductListServlet
拿到ProductService的实现类的实例化对象

private   ProductService productService=new ProductServiceImpl();

逻辑处理

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1.调用service的查询商品的列表的方法,返回商品列表List<Product> products=productService.selectAllProduct();//2.保存商品列表request.setAttribute("products",products);//3.请求转发到Product_list.jsp,在页面上显示商品列表和信息request.getRequestDispatcher("product_list.jsp").forward(request,response);}

逐级完成selectAllProduct()方法(最终在DAO层实现):

ProductServiceimpl中私有一个ProductDAO的实现类对象用来下一步调用

 private  ProductDAO productDAO= new ProductDAOIml();

ProductService中定义selectAllProduct方法,实现类中重写方法。
ProductDAO中定义selectAllProduct方法,实现类中重写方法。

//ProductServiceImpl@Overridepublic List<Product> selectAllProduct() {return productDAO.selectAllProduct();//将ProductDAO返回的商品列表返回给Servlet}
//ProductDAOIml@Overridepublic List<Product> selectAllProduct() {//uodate//findlist 方法为BaseDAO中的方法用来查询所有信息return findList(Product.class,"select * from jspproduct ");}

此方法的调用流程:
QueryProductListServlet—>ProductService—>ProductServiceImpl—>ProductDAO—>ProductDAOIml—>selectAllProduct() 查询后逐级返回给Servlet

新建product_list.jsp
QueryProductListServlet将在数据库中查询到的商品列表存到request中,请求转发到product_list.jsp,product_list.jsp遍历商品列表,展示商品信息

<a href="product_add.jsp">新增</a>
<table border="1" width="800px" height="300px" align="center"><tr><th>id</th><th>商品名称</th><th>商品描述</th><th>商品单价</th><th>商品数量</th><th>商品状态</th><th>商品上架时间</th><th>操作</th></tr><%//获取Product对象列表遍历List <Product> products = (List<Product>) request.getAttribute("products");for (Product product:products){%>  <tr>//展示信息<td><%=product.getId()%></td><td><%=product.getName()%></td><td><%=product.getDescription()%></td><td><%=product.getPrice()%></td><td><%=product.getAccount()%></td><td><%if(product.getStatus()==1){%>上架<%}else {%>下架<%}%></td>//格式化时间需要引入标签库 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%><td><fmt:formatDate value="<%=product.getAddtime()%>" pattern="yyyy-MM-dd"/></td>&nbsp;&nbsp;//删除功能 <td><a href="DelectProductServlet?id=<%=product.getId()%>">删除</a>&nbsp;&nbsp;&nbsp;<a href="QueryProductByIdServlet?id=<%=product.getId()%>">修改</a></td></tr><% }%></table>

删除功能

流程:Product_list.jsp–>DelectProductServlet–>QueryProductListServlet
在Product_list.jsp中添加页面添加超链接

  <td><a href="DelectProductServlet?id=<%=product.getId()%>">删除</a>

新建 DelectProductServlet
拿到ProductService的实现类的实例化对象

private   ProductService productService=new ProductServiceImpl();

逻辑实现

 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1.获取idInteger id = Integer.parseInt(request.getParameter("id")); //2.调用Service的删除方法productService.deleteProductById(id);//3.请求重定向到查询的Servletresponse.sendRedirect("QueryProductListServlet");   }

在DAO层中实现deleteProductById方法,不需要返回值,之后重定向到QueryProductListServlet

@Overridepublic void deleteProductById(Integer id) {update("delete from jspproduct where id=?",id);}

测试可以正常删除。

商品添加功能

流程:Product_list.jsp–>product_add.jsp–>AddProductServlet -->QueryProductListServlet

在Product_list.jsp页面添加超链接

<a href="product_add.jsp">新增</a>

新建product_add.jsp


<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>
<html>
<head><title>Title</title>
</head>
<body>
<form action="ADDProductServlet">
<table border="1" width="500px" height="300px" align="center"><tr><td>商品名称</td><td><input type="text"name="name" size="25"/></td></tr><tr><td>商品单价</td><td><input type="text" name="price" size="25" /></td></tr><tr><td>商品数量</td><td><input type="text" name="account" size="25" /></td></tr><tr><td>商品状态</td><td><input type="radio" name="status" value="0" />下架<input type="radio" name="status" value="1" checked="checked"/>上架</td></tr><tr><td>商品描述</td><td><textarea rows="10" cols="30" name="description"></textarea></td></tr><tr><td colspan="2"><input type="submit" value="保存" /></td></tr></table>
</form>
</body>
</html>

form表单提交到AddProductServlet
新建AddProductServlet

private ProductService productService=new ProductServiceImpl();protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1.获取jsp的参数String name = request.getParameter("name");String description = request.getParameter("description");Integer price = Integer.parseInt(request.getParameter("price"));Integer account = Integer.parseInt(request.getParameter("account"));Integer status = Integer.parseInt(request.getParameter("status"));//2.新建商品类,保存商品的信息Product product = new Product();product.setName(name);product.setDescription(description);product.setAccount(account);product.setStatus(status);product.setPrice(price);product.setAddtime(new Date());//3.调用Service的addproduct方法productService.addProduct(product);//4.重定向到查询的servletresponse.sendRedirect("QueryProductListServlet");}

在DAO层实现addProduct方法,无需返回对象,之后重定向到QueryProductListServlet

   @Overridepublic void addProduct(Product product) {update("insert into jspproduct values(null,?,?,?,?,?,?)",product.getName(),product.getDescription(),product.getPrice(),product.getAccount(),product.getStatus(),product.getAddtime());}

测试,添加商品正常。

.商品修改功能

流程:
Product_list.jsp–>QueryProductByIdServlet–>Product_update.jsp–>UpdateProductServlet–>QueryProductListServlet

商品修改功能要先根据id展示这个商品的信息,然后修改后保存。

添加标签到Product_list.jsp

<a href="QueryProductByIdServlet?id=<%=product.getId()%>">修改</a>

新建QueryProductByIdServlet查询该商品的信息

逻辑处理

private ProductService productService=new ProductServiceImpl();protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1.获取idInteger id = Integer.parseInt(request.getParameter("id"));//2.根据id查询商品信息返回商品对象Product product= productService.selectProductById(id);//3.保存商品对象request.setAttribute("product",product);//4.请求转发到Product_update.jsprequest.getRequestDispatcher("Product_update.jsp").forward(request,response);}

ProductDAOImpl实现selectProductById方法并返回对象存入request

  @Overridepublic Product selectProductById(Integer id) {return findOne(Product.class,"select * from jspproduct where id = ?",id);}

新建Product_update.jsp显示根据id查询到的信息并修改

<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>
<html>
<head><title>Title</title>
</head>
<body>
<% Product product= (Product)request.getAttribute("product");%>
<form action="UpdateProductServlet"><input type="hidden" name="id" value="<%=product.getId()%>"><table border="1" width="500px" height="300px" align="center"><tr><td>商品名称</td><td><input type="text" name="name" size="25" value="<%=product.getName()%>" /></td></tr><tr><td>商品单价</td><td><input type="text" name="price" size="25" value="<%=product.getPrice()%>"/></td></tr><tr><td>商品数量</td><td><input type="text" name="account" size="25" value="<%=product.getAccount()%>"/></td></tr><tr><td>商品状态</td><td><input type="radio" name="status" value="0" />下架<input type="radio" name="status" value="1" checked="checked" />上架</td></tr><tr><td>商品描述</td><td><textarea rows="10" cols="30" name="description" ><%=product.getDescription()%></textarea></td></tr><tr><td colspan="2"><input type="submit" value="保存" /></td></tr></table>
</form>
</body>
</html>

修改提交后到UpdateProductServlet中
新建UpdateProductServlet

 private ProductService productService = new ProductServiceImpl();protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1.获取jsp的参数String name = request.getParameter("name");String description = request.getParameter("description");Integer price = Integer.parseInt(request.getParameter("price"));Integer account = Integer.parseInt(request.getParameter("account"));Integer status = Integer.parseInt(request.getParameter("status"));Integer id = Integer.parseInt(request.getParameter("id"));//2.新建商品类,保存商品的信息Product product = new Product();product.setName(name);product.setDescription(description);product.setAccount(account);product.setStatus(status);product.setPrice(price);product.setAddtime(new Date());product.setId(id);//3.调用Service的addproduct方法productService.updateProduct(product);//4.重定向到查询的servletresponse.sendRedirect("QueryProductListServlet");}

到DAO层实现updatproduct方法无需返回对象,之后重定向到QueryProductListServlet即可

@Overridepublic void updateProduct(Product product) {update("update jspproduct set name=?,description=?,price=?,account=?,status=? where id= ?",product.getName(),product.getDescription(),product.getPrice(),product.getAccount(),product.getStatus(),product.getId());}
}

测试,完成所有功能的实现。

基于mvc设计模式下的商品管理平台相关推荐

  1. 基于MVC模式下的二手车拍卖平台设计

    课程名称:<软件体系结构与设计模式> 实验项目名称:基于MVC模式下的二手车拍卖平台设计 实验内容 按下列要求编写程序并上机调试运行: 拍卖系统要又三个显示界面,分别是车体图片,文字描述和 ...

  2. [转]Asp.Net大型项目实践(11)-基于MVC Action粒度的权限管理【续】【源码在这里】(在线demo,全部源码)...

    本文转自:http://www.cnblogs.com/legendxian/archive/2010/01/25/1655551.html 接上篇Asp.Net大型项目实践(10)-基于MVC Ac ...

  3. 基于 Java Web 的毕业设计选题管理平台--选题报告与需求规格说明书

    一.选题报告 1.团队名称---指南者团队 2.团队成员: 孔潭活:2015034643032 何德新:2015034643017 吴淑瑶:2015034643018 苏咏梅:201503464302 ...

  4. java_web:基于mvc设计模式实现用户登录操作

    基于mvc设计模式实现用户登录操作 知识点补充:mvc理论知识 应用实例:创建一个jsp页面login,将其表单数据发送到类LoginServlet中,在该类调用类LoginDao实现用户登录操作. ...

  5. 基于oracle数据库系统下的内部审计管理信息系统研发

    基于oracle数据库系统下的内部审计管理信息系统研发 ■ 陈茸 聂崇峡 廖忠友/重庆大学审计处 摘 要:随着审计信息化概念的提出和实际应用,充分利用信息技术加速建立完善内部审计管理系统,全面提升内部 ...

  6. LigerUI视频教程_基于LigerUI前端技术实现的管理平台

    基于LigerUI前端技术实现的管理平台(纯静态页面,json,工作流及权限管理) 适合人群:初级 课时数量:39课时 用到技术:Liger UI.纯静态页面.万能数据处理后台 涉及项目:企业进销存管 ...

  7. 【dubbo-2.5.x】Linux下dubbo-admin监控/管理平台部署详细教程

    前言 Dubbo-Admin是Dubbo控制台管理的工具,是Dubbo组件之一,需要Dubbo-Admin管理平台来实时对服务调用情况进行调整,比如控制分布式服务的调用权重等,通过调整调整调用权重来控 ...

  8. 基于JAVA消防安全应急培训管理平台计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA消防安全应急培训管理平台计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA消防安全应急培训管理平台计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B ...

  9. java计算机毕业设计基于springboot+vue+elementUI的口腔管理平台管理系统(前后端分离)

    项目介绍 口腔卫生是关系民生的一个重要问题.口腔健康会直接影响全身的健康,口腔基本常见的有龋齿,牙周炎等问题,而且人类的牙齿只有2次更换周期,一旦牙齿彻底完成更换终生将不再更换,所以越来越多的人开始关 ...

  10. r.java美发更改_JAVA基于MVC模式下的理发管理系统

    每天记录学习,每天会有好心情.*^_^* 今天将为大家分析一个理发管理系统(该系统基于JAVA语言开发,设计过程中充分利用MVC设计模式.针对行业的管理需求,以日常管理为核心,构建集员工信息管理模块, ...

最新文章

  1. 影响网站快照异常的因素有哪些?
  2. C# 入门经典示例.
  3. 【MD5】加密/解密大小写问题
  4. 空间离散点拟合成空间平面
  5. floatingactionbutton 更改背景颜色_经验分享!Word轻松换掉证件照背景颜色
  6. html type=text/css,type=text/css 有什么用啊 ?
  7. MAYA建模桌面一角_maya怎么建模逼真的学生书桌书桌桌面?
  8. matlab中均线交易策略,【每日一策】Matlab量化交易策略之 均线选股策略
  9. 基于 Kata Containers 与 iSulad 的云容器实践解析
  10. ppt中流程图旁边怎么添加_辅食中的黑芝麻酱怎么添加呢?
  11. java招生系统项目_基于jsp的招生管理-JavaEE实现招生管理 - java项目源码
  12. python全栈 操作系统
  13. docker中容器与宿主机之间的网络关系
  14. 2022华为机试真题 C++ 实现【勾股数元组】
  15. 运行xgboost 时出现的问题 from scipy.misc import comb ImportError: cannot import name 'comb'的
  16. 典型IO模型----阻塞IO,非阻塞IO,信号驱动IO,异步IO
  17. 大数据是什么,大数据的特点主要有哪些,应该怎么运用?
  18. oracle的闪存_ORACLEFS1-2闪存存储系统.PDF
  19. 基于单片机的智能教室控制系统的设计
  20. 滑动相关的原理以及用滤波器实现滑动相关(匹配滤波器捕获DMF)

热门文章

  1. Oracle Report開發(1)--Oracle Report Builder
  2. OpenFeign报文内容大报错: {“code“:1,“msg“:“JSON parse error: Illegal character ((CTRL-CHAR, code 31))
  3. 菜鸟修行之路--Echarts数据可视化知识总结完整版
  4. Vivado使用系列:使用自定义BD
  5. 简述5G技术在远程医疗应用
  6. 3d游戏项目实训一周总结
  7. java-net-php-python-jspm服装类跨境电商库存控制计算机毕业设计程序
  8. 挪车电话也有商机,易扫挪车App
  9. LeetCode.1033-移动石头直到连续(Moving Stones Until Consecutive)
  10. 如何跨网络远程操作另一台计算机,如何远程控制另一台电脑?