基于mvc设计模式下的商品管理平台

源代码:

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

基于mvc设计模式下的商品管理平台_第1张图片

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

基于mvc设计模式下的商品管理平台_第2张图片

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

基于mvc设计模式下的商品管理平台_第3张图片

展示商品信息功能

流程:QueryProductListServlet–>product_list.jsp

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

商品管理

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

private   ProductService productService=new ProductServiceImpl();

逻辑处理


 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.调用service的查询商品的列表的方法,返回商品列表
        List 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
 @Override
    public List selectAllProduct() {
        return productDAO.selectAllProduct();//将ProductDAO返回的商品列表返回给Servlet

    }

//ProductDAOIml
 @Override
    public List 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遍历商品列表,展示商品信息

新增


    <%
    //获取Product对象列表遍历
       List  products = (List) request.getAttribute("products");
        for (Product product:products){
            
    %>  
        //展示信息
            
            //格式化时间需要引入标签库 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
            
               
             //删除功能 
            
    
           <% 
        }

            %>

id 商品名称 商品描述 商品单价 商品数量 商品状态 商品上架时间 操作
<%=product.getId()%> <%=product.getName()%> <%=product.getDescription()%> <%=product.getPrice()%> <%=product.getAccount()%> <% if(product.getStatus()==1){ %> 上架 <% }else { %> 下架 <% } %> 删除     修改

基于mvc设计模式下的商品管理平台_第4张图片

删除功能

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

  删除

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

private   ProductService productService=new ProductServiceImpl();

逻辑实现

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

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

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

测试可以正常删除。

商品添加功能

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

在Product_list.jsp页面添加超链接

新增

新建product_add.jsp


<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>


    Title


商品名称
商品单价
商品数量
商品状态 下架 上架
商品描述

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.重定向到查询的servlet
        response.sendRedirect("QueryProductListServlet");
    }

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

   @Override
    public 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

修改

新建QueryProductByIdServlet查询该商品的信息

逻辑处理

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

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

  @Override
    public 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" %>


    Title


<% Product product= (Product)request.getAttribute("product");%>
商品名称
商品单价
商品数量
商品状态 下架 上架
商品描述

修改提交后到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.重定向到查询的servlet
        response.sendRedirect("QueryProductListServlet");
    }

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

@Override
    public 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设计模式下的商品管理平台)