赞
踩
目录
MVC是一种分层开发的模式,其中
M:Model,业务模型,处理业务 V: View,视图,界面展示 C:Controller,控制器,处理请求,调用型和视图
职责单一,互不影响
有利于分工协作
有利于组件重用
View视图不只是JSP!
数据访问层(持久层):对数据库的CRUD基本操作
一般命名为反转公司网址/controller
业务逻辑层(业务层):对业务逻辑进行封装,组合数据访问层层中基本功能,形成复杂的业务逻辑功能。
一般命名为反转公司网址/service
表现层:接收请求,封装数据,调用业务逻辑层,响应数据
一般命名为反转公司网址/dao或者mapper
给上次的数据添加一个状态字段,0禁用,1启用,2预售,设个默认值1即可
使用三层架构思想开发
参考下图:
java目录结构
代码,只写主要的了
service包下
- public class ProductService {
- final SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();
- public List<Product> selectAll(){
- final SqlSession sqlSession = sqlSessionFactory.openSession();
- final ProductMapper mapper = sqlSession.getMapper(ProductMapper.class);
- final List<Product> products = mapper.selectAll();
- sqlSession.close();
- return products;
- };
- }
web包下
- @WebServlet("/selectAll")
- public class selectAll extends HttpServlet {
- private final ProductService productService = new ProductService();
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-
- final List<Product> products = productService.selectAll();
- request.setAttribute("product",products);
- request.getRequestDispatcher("/jsp/product.jsp").forward(request,response);
- }
-
- @Override
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- this.doGet(request, response);
- }
- }
之后回到视图层
jsp:
- <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- <%--
- Created by IntelliJ IDEA.
- User: LEGION
- Date: 2024/3/13
- Time: 13:36
- To change this template use File | Settings | File Templates.
- --%>
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <%@ page isELIgnored="false" %>
- <%--<% final Object product = request.getAttribute("product");%>--%>
- <html>
- <head>
- <title>Title</title>
- </head>
- <body>
- <h1>product列表</h1>
- <table border="1px solid black">
- <tr>
- <th>商品序号</th>
- <th>商品id</th>
- <th>商品名</th>
- <th>商品图片</th>
- <th>商品价格</th>
- <th>商品评论数</th>
- <th>商品分类</th>
- <th>商品状态</th>
- <th>商品发布时间</th>
- <th>商品更新时间</th>
- </tr>
- <c:forEach items="${product}" var="product" varStatus="status">
- <tr>
- <%-- index从0开始,count从1开始--%>
- <td>${status.count}</td>
- <%-- ${user.id} => Id => getId()--%>
- <td>${product.id}</td>
- <td>${product.title}</td>
- <td><img src="${product.imgUrl}" alt="" width="75px" height="75px"></td>
- <td>${product.price}</td>
- <td>${product.comment}</td>
- <td>${product.category}</td>
- <td>${product.status}</td>
- <td>${product.gmtCreate}</td>
- <td>${product.gmtModified}</td>
- </tr>
- </c:forEach>
-
- </table>
-
- </body>
- </html>
预览图:
添加:
html
- <form action="/product_demo_war/add" method="post">
- <input type="text" name="title" placeholder="商品名称"><br>
- <input type="text" name="price" placeholder="商品价格"><br>
- <!-- 图片上传在这里就先不写了-->
- <input type="number" name="category" placeholder="商品类型(数字就好)"><br>
- <input type="radio" name="status">启用
- <input type="radio" name="status">禁用
- <br>
- <input type="submit" value="添加">
- </form>
service:
- /**
- * 添加商品
- * @param product 商品对象
- */
- public void add(Product product){
- final SqlSession sqlSession = sqlSessionFactory.openSession();
- final ProductMapper mapper = sqlSession.getMapper(ProductMapper.class);
- mapper.add(product);
- sqlSession.commit();
- sqlSession.close();
- }
web:
- @WebServlet("/add")
- public class Add extends HttpServlet {
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- ProductService productService = new ProductService();
- final String title = request.getParameter("title");
- final String price = request.getParameter("price");
- final Integer status = Integer.parseInt(request.getParameter("status"));
- final Integer category = Integer.parseInt(request.getParameter("category"));
- Product product = new Product(title,price,category,status);
- productService.add(product);
- request.getRequestDispatcher("/selectAll").forward(request,response);
- }
-
- @Override
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- this.doGet(request, response);
- }
- }
预览:
修改:
有两步:
显示原先的数据:回显
修改现有的数据:修改
第一部分回显:根据id显示值
service:
- public Product selectById(Long id){
- final SqlSession sqlSession = sqlSessionFactory.openSession();
- final ProductMapper mapper = sqlSession.getMapper(ProductMapper.class);
- final Product product = mapper.selectById(id);
- sqlSession.close();
- return product;
- }
web:
- @WebServlet("/selectById")
- public class SelectById extends HttpServlet {
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- final String id = request.getParameter("id");
- ProductService productService = new ProductService();
- final Product product = productService.selectById(Long.parseLong(id));
- request.setAttribute("product",product);
- System.out.println(id);
- request.getRequestDispatcher("/jsp/productUpdate.jsp").forward(request,response);
- }
-
- @Override
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- this.doGet(request, response);
- }
- }
显示层:productUpdate.jsp
- <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <%@ page isELIgnored="false" %>
- <html>
- <head>
- <title>修改</title>
- <style>
- .text {
- width: 100%;
- }
- </style>
- </head>
- <body>
- <form action="/product_demo_war/updateById" method="post">
- <input type="hidden" name="id" value="${product.id}">
- <input class="text" type="text" name="title" placeholder="商品名称" value="${product.title}"><br>
- <input class="text" type="text" name="price" placeholder="商品价格" value="${product.price}"><br>
- <!-- 图片上传在这里就先不写了-->
- <input class="text" type="number" name="category" placeholder="商品类型(数字就好)" value="${product.category}"><br>
- <c:if test="${product.status == 1}">
- <input type="radio" name="status" value="1" checked>启用
- <input type="radio" name="status" value="0">禁用
- </c:if>
- <c:if test="${product.status == 0}">
- <input type="radio" name="status" value="1">启用
- <input type="radio" name="status" value="0" checked>禁用
- </c:if>
-
- <br>
- <input type="submit" value="修改">
- </form>
- </body>
- </html>
第二部分修改:
service:
- public void UpdateById(Product product){
- final SqlSession sqlSession = sqlSessionFactory.openSession();
- final ProductMapper mapper = sqlSession.getMapper(ProductMapper.class);
- mapper.updateById(product);
- sqlSession.commit();
- }
servlet:
- @WebServlet("/updateById")
- public class Update extends HttpServlet {
- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-
- final Long id = Long.parseLong(request.getParameter("id"));
- final String title = request.getParameter("title");
- final String price = request.getParameter("price");
- final Integer category = Integer.parseInt(request.getParameter("category"));
- final Integer status = Integer.parseInt(request.getParameter("status"));
- Date gmtModified = new Date();
-
- Product product = new Product(id,title,price,category,status,gmtModified);
- ProductService productService = new ProductService();
- productService.UpdateById(product);
-
- request.getRequestDispatcher("/selectAll").forward(request,response);
-
- }
-
- @Override
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
- this.doGet(request, response);
- }
- }
测试:
删除:不写了,jsp知道怎么写就行了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。