java程序设计与j2ee中间件技术/软件开发技术(III)-大作业-采用MVC模式实现商品信息的查询显示(可以模糊查询)、增加和删除功能,商品表自拟,实现简单菜单操作和分页显示(二)

简介: java程序设计与j2ee中间件技术/软件开发技术(III)-大作业-采用MVC模式实现商品信息的查询显示(可以模糊查询)、增加和删除功能,商品表自拟,实现简单菜单操作和分页显示

src/main/java/db

DBConn.java

package db;
import java.sql.*;
public class DBConn {
  public Connection getConnection() {
    String URL = "jdbc:mysql://localhost:3306/bigproject?characterEncoding=utf-8";
    String USER = "root";
    String PASSWORD = "111111";
    try {
      Class.forName("com.mysql.cj.jdbc.Driver");
      Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
      return conn;
  } catch (ClassNotFoundException e) {      
    e.printStackTrace();
  }catch (SQLException e) {     
    e.printStackTrace();
  } 
    return null;
  }
}

src/main/java/service

GoodsService.java

package service;
import java.sql.SQLException;
import java.util.List;
import bean.*;
/**
 * 这是商品的业务处理规范
 *
 */
public interface GoodsService {
  PageBean findGoodsByPage(int currentPage) throws SQLException ;
  List<Goods> findAll()  throws SQLException ;
  /**
   * 根据ID查询单个商品对象
   */
  Goods findGoodsById(int id)  throws SQLException ;
  /**
   * 模糊查询, 根据姓名或者根据性别,或者两者兼有。 
   */
  List<Goods> searchGoods(String gname , double price)  throws SQLException ;
  /**
   * 添加商品
   */
  void insert(Goods goods) throws SQLException ;
  /**
   * 根据id删除商品
   */
  void delete(int id) throws SQLException ;
}

src/main/java/service/impl

GoodsServiceImpl.java
package service.impl;
import java.sql.SQLException;
import java.util.List;
import dao.*;
import dao.impl.*;
import bean.*;
import service.*;
/**
 * 这是商品业务实现
 *
 */
public class GoodsServiceImpl implements GoodsService{
  @Override
  public List<Goods> findAll() throws SQLException {
    GoodsDao dao = new GoodsDaoImpl();
    return dao.findAll();
  }
  @Override
  public void insert(Goods goods) throws SQLException {
    GoodsDao dao = new GoodsDaoImpl();
    dao.insert(goods);
  }
  @Override
  public void delete(int id) throws SQLException {
    GoodsDao dao = new GoodsDaoImpl();
    dao.delete(id);
  }
  @Override
  public Goods findGoodsById(int id) throws SQLException {
    GoodsDao dao = new GoodsDaoImpl();
    return dao.findGoodsById(id);
  }
  @Override
  public List<Goods> searchGoods(String gname, double price) throws SQLException {
    return new GoodsDaoImpl().searchGoods(gname, price);
  }
  @Override
  public PageBean<Goods> findGoodsByPage(int currentPage) throws SQLException {
    //封装分页的该页数据
    PageBean<Goods> pageBean = new PageBean<Goods>();
    int pageSize = GoodsDao.PAGE_SIZE ;
    pageBean.setCurrentPage(currentPage); //设置当前页
    pageBean.setPageSize(pageSize); //设置每页显示多少记录
    GoodsDao dao = new GoodsDaoImpl() ;
    List<Goods> list =dao.findGoodsByPage(currentPage);
    pageBean.setList(list); //设置这一页的商品数据
    //总的记录数, 总的页数。
    int count = dao.findCount();
    pageBean.setTotalSize(count); //设置总的记录数
    //200 , 10 ==20   201 , 10 = 21   201 % 10 == 0 ?201 / 10 :201 % 10 + 1
    pageBean.setTotalPage(count % pageSize==0 ? count / pageSize : (count / pageSize) + 1); //总页数
    return pageBean;
  }
}

src/main/java/servlet

AddServlet.java

package servlet;
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import bean.Goods;
import service.GoodsService;
import service.impl.GoodsServiceImpl;
/**
 * 用于处理商品的添加请求
 *
 */
public class AddServlet extends HttpServlet {
  @Override
  public void init() throws ServletException{
    super.init();
  }
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.setCharacterEncoding("UTF-8");
    try {
      //1. 获取客户端提交上来的数据
      String gname = request.getParameter("gname"); //sname:zhangsan
      String sprice = request.getParameter("price");
      double price=Double.parseDouble(sprice);
      Goods goods = new Goods(gname,price);
      GoodsService service = new GoodsServiceImpl();
      service.insert(goods);
      request.getRequestDispatcher("GoodsListServlet").forward(request, response);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
  /**
   * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
   */
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    doGet(request, response);
  }
}

DeleteServlet.java

package servlet;
import java.io.IOException;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import service.GoodsService;
import service.impl.GoodsServiceImpl;
/**
 * 用于处理删除
 *
 */
public class DeleteServlet extends HttpServlet {
  @Override
  public void init() throws ServletException{
    super.init();
  }
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    try {
      int id = Integer.parseInt(request.getParameter("id"));
      //2. 执行删除
      GoodsService service = new GoodsServiceImpl();
      service.delete(id);
      //3. 跳转到列表页。
      request.getRequestDispatcher("GoodsListServlet").forward(request, response);
    } catch (SQLException e) {
      e.printStackTrace();
    }
  }
  /**
   * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
   */
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    doGet(request, response);
  }
}

GoodsListPageServlet.java

package servlet;
import java.io.IOException;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.catalina.valves.StuckThreadDetectionValve;
import bean.*;
import service.GoodsService;
import service.impl.GoodsServiceImpl;
/**
 * 这是用于分页显示商品列表的servlet
 *
 */
public class GoodsListPageServlet extends HttpServlet {
  @Override
  public void init() throws ServletException{
    super.init();
  }
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    try {
      int currentPage =Integer.parseInt( request.getParameter("currentPage"));
      //2. 根据指定的页数,去获取该页的数据回来
      //List<Goods> --- list.jsp
      GoodsService service = new GoodsServiceImpl();
      PageBean<Goods> pageBean= service.findGoodsByPage(currentPage);
      request.setAttribute("pageBean", pageBean);
      //3. 跳转界面。
      request.getRequestDispatcher("list_page.jsp").forward(request, response);
    } catch (SQLException e) {
      e.printStackTrace();
    }
  }
  /**
   * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
   */
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    doGet(request, response);
  }
}

GoodsListServlet.java

package servlet;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import bean.Goods;
import service.GoodsService;
import service.impl.GoodsServiceImpl;
/**
 * 负责查询所有的商品信息。 然后呈现到list.jsp页面上。
 */
public class GoodsListServlet extends HttpServlet {
  @Override
  public void init() throws ServletException{
    super.init();
  }
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    try {
      //1. 查询出来所有的商品
      GoodsService service = new GoodsServiceImpl();
      List<Goods> list = service.findAll();
      //2. 先把数据存储到作用域中
      request.setAttribute("list", list);
      //3. 跳转页面
      request.getRequestDispatcher("list.jsp").forward(request, response);
    } catch (SQLException e) {
      e.printStackTrace();
    }
  }
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doGet(request, response);
  }
}

SearchGoodsServlet.java

package servlet;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.catalina.valves.StuckThreadDetectionValve;
import bean.Goods;
import service.GoodsService;
import service.impl.GoodsServiceImpl;
/**
 * Servlet implementation class SearchStudentServlet
 */
@SuppressWarnings("serial")
public class SearchGoodsServlet extends HttpServlet {
  @Override
  public void init() throws ServletException{
    super.init();
  }
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.setCharacterEncoding("UTF-8");
    try {
      //1. 取到了要查询的关键数据 姓名  , 性别。
      String gname=  request.getParameter("gname");
      String sprice = request.getParameter("price");
      double price=Double.parseDouble(sprice);
      //2. 找service去查询
      GoodsService service = new GoodsServiceImpl();
      List<Goods> list = service.searchGoods(gname, price);
      System.out.println("list的大小是:"+list.size());
      for (Goods goods : list) {
        System.out.println("goods="+goods);
      }
      request.setAttribute("list", list);
      //3. 跳转界面。列表界面
      request.getRequestDispatcher("list.jsp").forward(request, response);
    } catch (SQLException e) {
      e.printStackTrace();
    }
  }
  /**
   * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
   */
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    doGet(request, response);
  }
}


目录
相关文章
|
10月前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
823 1
|
10月前
|
安全 Cloud Native Java
Java 模块化系统(JPMS)技术详解与实践指南
本文档全面介绍 Java 平台模块系统(JPMS)的核心概念、架构设计和实践应用。作为 Java 9 引入的最重要特性之一,JPMS 为 Java 应用程序提供了强大的模块化支持,解决了长期存在的 JAR 地狱问题,并改善了应用的安全性和可维护性。本文将深入探讨模块声明、模块路径、访问控制、服务绑定等核心机制,帮助开发者构建更加健壮和可维护的 Java 应用。
962 0
|
10月前
|
监控 Cloud Native Java
Quarkus 云原生Java框架技术详解与实践指南
本文档全面介绍 Quarkus 框架的核心概念、架构特性和实践应用。作为新一代的云原生 Java 框架,Quarkus 旨在为 OpenJDK HotSpot 和 GraalVM 量身定制,显著提升 Java 在容器化环境中的运行效率。本文将深入探讨其响应式编程模型、原生编译能力、扩展机制以及与微服务架构的深度集成,帮助开发者构建高效、轻量的云原生应用。
1014 44
|
11月前
|
Java 测试技术 API
2025 年 Java 开发者必知的最新技术实操指南全览
本指南涵盖Java 21+核心实操,详解虚拟线程、Spring Boot 3.3+GraalVM、Jakarta EE 10+MicroProfile 6微服务开发,并提供现代Java开发最佳实践,助力开发者高效构建高性能应用。
1398 5
|
Java API 开发者
Java软件开发常出现哪些异常?要怎么处理?
  异常处理是Java软件开发中的一个重要部分,它是关乎每个应用的一个非功能性需求,是为了处理任何错误状况,比如资源不可访问,非法输入,空输入等等,Java提供了几个异常处理特性,以try,catch和finally关键字的形式内建于语言自身之中,Java编程语言也允许你创建新的异常,并通过使用throw和throws关键字抛出它们,事实上,在Java编程中,Java的异常处理不单单是知道语法这么简单,它必须遵循标准的JDK库,和几个处理错误和异常的开源代码,这里我们将讨论一些关于异常处理的Java最佳实践。
965 0
|
9月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
429 1
|
9月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
396 1
|
10月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
439 0
|
10月前
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
614 16

热门文章

最新文章