具备的测试工具:Eclipse,MySQL数据库,HBuilder,jstl1.2jar,mysql.connector.java.8.0.jar

jstl1.2jar下载地址:https://pan.baidu.com/s/1T23zxoEg3jlZHFikrbWtHw

mysql.connector.java.8.0.jar包下载地址:https://pan.baidu.com/s/1kqfOuxo3nOT--CTrlp1BmA

首先打开Eclipse创建一个动态Web项目(Dynamic Web Project),在Src下分别创建以下包

其中web其实就是对应action层,这就是典型的MVC模型,这是属于后端

首先创建与你数据库的表结构对应的实体类

1、我的数据库结构如下

建立数据库
create database LoveDB;

建立数据表LoveInHeart
use LoveDB;
create table LoveInHeart(
lid int auto_increment primary key,
lname varchar(50) not null,
lsex varchar(50) not null,
ltime date not null,
lmoney float
);

然后可以向里面添加一些测试数据

insert into LoveInHeart(lname,lsex,ltime,lmoney)
values ('廖远平','男','1999-02-15',1000000);

insert into LoveInHeart(lname,lsex,ltime,lmoney)
values ('彭桂妮','女','1998-8-19',1000);

insert into LoveInHeart(lname,lsex,ltime,lmoney)
values ('科比','男','2008-05-05',100);

然后实体类的属性参数要和数据库的表结构保持一致,注:实体类是放在entity包下

 声明变量以后进行封装,右键选择 source --> Getter and Setter ,然后select All 点击完成

 接下来创建与数据库链接的DatabaseConnection类来完成与数据库的交互,在dao包下新建一个类,名字为:BaseDB

package com.nf.dao;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class BaseDao {private static final String DRIVER_CLASS = "com.mysql.cj.jdbc.Driver";private static final String SERVER_IP = "localhost";// 服务器IP地址private static final String DATABASE_NAME = "lovedb";// 连接到哪一个数据库private static final String USER_NAME = "root";// 用户名private static final String PASSWORD = "123456";// 密码public Connection getConnection() {Connection conn = null;String jdbcUrl = "jdbc:mysql://" + SERVER_IP + ":3306/" + DATABASE_NAME+ "?serverTimezone=Asia/Shanghai&useSSL=true";try {Class.forName(DRIVER_CLASS);conn = DriverManager.getConnection(jdbcUrl, USER_NAME, PASSWORD);} catch (Exception e) {System.out.println("获取连接时,异常" + e.getMessage());conn = null;}return conn;}public void closeAll(Connection conn, PreparedStatement pst, ResultSet rs) {try {if (rs != null) {rs.close();}if (pst != null) {pst.close();}if (conn != null) {conn.close();}} catch (SQLException e) {// TODO Auto-generated catch block
            e.printStackTrace();}}}

在dao层下面创建一个Interface类,声明三个方法(查询、添加、删除),名字:LoveInHeartDao

package com.nf.dao;import java.util.List;
import com.nf.entity.LoveInHeart;
import com.nf.util.MyPage;public interface LoveInHeartDao{public List<LoveInHeart> getAll(MyPage myPage);public boolean add(LoveInHeart love);public boolean delete(int id);}

然后创建一个实现接口class类(Implments),名字:LoveInHeart_Impl

package com.nf.dao;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;import com.nf.entity.LoveInHeart;
import com.nf.util.MyPage;public class LoveInHeartDaoImpl extends BaseDao implements LoveInHeartDao {@Override  //查询public List<LoveInHeart> getAll(MyPage myPage) {// 操作数据库,需要一个连接ConnectionConnection connection = getConnection();PreparedStatement prepareStatement = null;ResultSet resultSet = null;List<LoveInHeart> loveInHeartList = new ArrayList();String sql_data = "select * from loveinheart order by lid desc ";String sql_recodeCount = "select count(1) as mycount from loveinheart";sql_data += "limit ";sql_data += (myPage.getCurrentPage()-1)*myPage.getPerPageSize();sql_data += ",";sql_data += myPage.getPerPageSize();System.out.println("分页的SQL:"+sql_data);try {prepareStatement = connection.prepareStatement(sql_data);resultSet = prepareStatement.executeQuery();while (resultSet.next()) {LoveInHeart l = new LoveInHeart();l.setLid(resultSet.getInt("lid"));l.setLname(resultSet.getString("lname"));l.setLsex(resultSet.getString("lsex"));l.setLtime(resultSet.getDate("ltime"));l.setLmoney(resultSet.getFloat("lmoney"));loveInHeartList.add(l);}} catch (SQLException e) {e.printStackTrace();}try {prepareStatement = connection.prepareStatement(sql_recodeCount);resultSet = prepareStatement.executeQuery();resultSet.next();myPage.setRecodeCount( resultSet.getInt("mycount") );} catch (SQLException e) {e.printStackTrace();}closeAll(connection, prepareStatement, resultSet);// System.out.println(connection);return loveInHeartList;}@Override   //添加public boolean add(LoveInHeart love) {// 操作数据库,需要一个连接ConnectionConnection connection = getConnection();PreparedStatement prepareStatement = null;try {prepareStatement = connection.prepareStatement("insert into LoveInHeart(lname,lsex,ltime,lmoney) values (?,?,?,?)");prepareStatement.setString(1, love.getLname());prepareStatement.setString(2, love.getLsex());prepareStatement.setDate(3, love.getLtime());prepareStatement.setFloat(4, love.getLmoney());prepareStatement.executeUpdate();closeAll(connection, prepareStatement, null);return true;} catch (SQLException e) {e.printStackTrace();return false;}}@Override    //删除public boolean delete(int id) {// 操作数据库,需要一个连接ConnectionConnection connection = getConnection();PreparedStatement prepareStatement = null;try {prepareStatement = connection.prepareStatement("delete from LoveInHeart where lid=?");prepareStatement.setInt(1, id);prepareStatement.executeUpdate();closeAll(connection, prepareStatement, null);return true;} catch (SQLException e) {e.printStackTrace();return false;}}}

接下来在Service层再创建一个interface类,名字:LoveInHeartService

package com.nf.service;import java.util.List;
import com.nf.entity.LoveInHeart;
import com.nf.entity.MyData;public interface LoveInHeartService {public MyData getAll(int currentPage);public boolean add(LoveInHeart love);public boolean delete(int id);
}

随机在同Service层下实现该接口,实现类名:LoveInHeartServiceImpl,在这里实现类的方式直接调用dao层的方法就可以了

package com.nf.service;import java.util.List;import com.nf.dao.LoveInHeartDao;
import com.nf.dao.LoveInHeartDaoImpl;
import com.nf.entity.LoveInHeart;
import com.nf.entity.MyData;
import com.nf.util.MyPage;public class LoveInHeartServiceImpl implements LoveInHeartService {private LoveInHeartDao loveDao = new LoveInHeartDaoImpl();@Overridepublic MyData getAll(int currentPage) {MyPage myPage = new MyPage();myPage.setCurrentPage(currentPage);//myPage.setRecodeCount( 0  );//让Dao层来计算myPage.setPerPageSize( 10 );//设置每页10条
        List<LoveInHeart> loveList = loveDao.getAll( myPage  );MyData myData = new MyData();myData.setLoveInHeartList(loveList);myData.setMyPage(myPage);return myData;}@Overridepublic boolean add(LoveInHeart love) {return loveDao.add(love);}@Overridepublic boolean delete(int id) {// TODO Auto-generated method stubreturn loveDao.delete(id);}}

接下来就是存放Servlet的action层,Servlet名:LoveInHeartActionGetAll(获取全部信息的Servlet)

package com.nf.web;import java.io.IOException;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.nf.entity.LoveInHeart;
import com.nf.entity.MyData;
import com.nf.service.LoveInHeartService;
import com.nf.service.LoveInHeartServiceImpl;@WebServlet("/LoveInHeartActionGetAll")
public class LoveInHeartActionGetAll extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//第一步:先获得客户端的参数String currentPage_str = request.getParameter("currentPage");if (currentPage_str==null){currentPage_str = "1";}int currentPage = Integer.parseInt(currentPage_str);//第二步:调用Model(service层)的方法,来获取数据LoveInHeartService loveService = new LoveInHeartServiceImpl();MyData myData = loveService.getAll(currentPage);//第三步:把数据存放到request的属性中,然后把请求转发到jsprequest.setAttribute("myData", myData);request.getRequestDispatcher("showList.jsp").forward(request, response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

再在同一层下创建添加的Servlet,Servlet名:LoveInHeartActionAdd

package com.nf.web;import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.nf.entity.LoveInHeart;
import com.nf.service.LoveInHeartService;
import com.nf.service.LoveInHeartServiceImpl;@WebServlet("/LoveInHeartActionAdd")
public class LoveInHeartActionAdd extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取参数//?lname=123&lsex=男&ltime=111&lmoney=222String lname = request.getParameter("lname");String lsex = request.getParameter("lsex");String ltime = request.getParameter("ltime");String lmoney = request.getParameter("lmoney");//把参数构造成一个实体类LoveInHeart love = new LoveInHeart();love.setLname(lname);love.setLsex(lsex);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");try {love.setLtime( new java.sql.Date( sdf.parse(ltime).getTime() ) );} catch (ParseException e) {System.out.println("日期格式转换错误");e.printStackTrace();}love.setLmoney( Float.parseFloat(lmoney) );//调用Model,保存数据LoveInHeartService loveService = new LoveInHeartServiceImpl();boolean flag = loveService.add(love);//跳转if (flag){//response.sendRedirect("showList.jsp");response.sendRedirect("LoveInHeartActionGetAll");}else{response.sendRedirect("error.jsp");}}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

删除的Servlet,Servlet名:LoveInHeartActionDelete

package com.nf.web;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.nf.service.LoveInHeartService;
import com.nf.service.LoveInHeartServiceImpl;@WebServlet("/LoveInHeartActionDelete")
public class LoveInHeartActionDelete extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取参数String id_str = request.getParameter("id");int id = Integer.parseInt(id_str);//调用model的apiLoveInHeartService loveService = new LoveInHeartServiceImpl();boolean flag = loveService.delete(id);if (flag){response.sendRedirect("LoveInHeartActionGetAll");}else{response.sendRedirect("error.jsp");}}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

添加JSP代码,此网页只有主体,无其它程序文件之类的引用,JSP名:add.jsp

<form action="LoveInHeartActionAdd">
<table border="1" width="80%" align="center"><tr><td colspan="2" align="center">中华慈善捐款等级</td></tr><tr><td width="180px">姓名:</td><td><input type="text" name="lname"></td></tr><tr><td width="180px">性别:</td><td><input type="radio" name="lsex" value="男" checked="checked">男</input><input type="radio" name="lsex" value="女">女</input></td></tr><tr><td width="180px">捐款日期:</td><td><input type="text" name="ltime">(yyyy年MM月dd日)</td></tr><tr><td width="180px">捐款金额:</td><td><input type="text" name="lmoney">(元)</td></tr><tr><td colspan="2" align="center"><input type="submit" value="提交"><input type="reset" value="重置"></td></tr>
</table>
</form>

首页的全部代码,这里只是用来做一个中转站,并不实现什么功能,所以可以只保留这一点东西,JSP名:index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%response.sendRedirect("LoveInHeartActionGetAll");%>

最重要的展示信息界面,包括了删除功能,JSP名:showList.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>展示所有信息</title>
</head>
<script type="text/javascript">
function mydelete(id){alert(id);//ajax();
}</script>
<body>总纪录条数:${myData.myPage.recodeCount},
每页大小:${myData.myPage.perPageSize },
一共${myData.myPage.pageCount}页
<br><br>
<c:forEach begin="${myData.myPage.pageBegin}" end="${myData.myPage.pageEnd}" varStatus="sta"><a href="LoveInHeartActionGetAll?currentPage=${sta.index}">第${sta.index}页</a>
</c:forEach><table align="center" border="1" ><tr><td colspan="6" align="right">---中华爱心捐款查询系统<a href="add.jsp">添加新捐款</a></span></td></tr><tr><td>编号</td><td>姓名</td><td>性别</td><td>捐款金额</td><td>捐款时间</td><td>操作</td></tr><c:forEach items="${myData.loveInHeartList}" var="love"><tr><td>${love.lid}</td><td>${love.lname}</td><td>${love.lsex}</td><td>${love.lmoney}</td><td>${love.ltime}</td><td><a href="LoveInHeartActionDelete?id=${love.lid}">删除</a>&nbsp;<a href="javascript:mydelete(${love.lid})">无刷新删除1</a>&nbsp;<button onclick="mydelete(${love.lid})">无刷新删除2</button></td></tr>
</c:forEach></table><c:forEach begin="${myData.myPage.pageBegin}" end="${myData.myPage.pageEnd}" varStatus="sta"><a href="LoveInHeartActionGetAll?currentPage=${sta.index}">第${sta.index}页</a>
</c:forEach></body>
</html>

最终结果图如下:

有许多不足还请各位大佬指教,谢谢

转载于:https://www.cnblogs.com/liaoyuanping-24/p/9296545.html

JavaWeb案例(MVC+MySQL+分页功能)+前后端分离相关推荐

  1. eclipse实现MySQL分页的类_JavaWeb案例(MVC+MySQL+分页功能)+前后端分离

    具备的测试工具:Eclipse,MySQL数据库,HBuilder,jstl1.2jar,mysql.connector.java.8.0.jar jstl1.2jar下载地址:https://pan ...

  2. 基于javaweb的进销存管理系统(前后端分离+java+vue+springboot+ssm+mysql+redis)

    基于javaweb的进销存管理系统(前后端分离+java+vue+springboot+ssm+mysql+redis) 运行环境 Java≥8.MySQL≥5.7.Node.js≥10 开发工具 后 ...

  3. 基于javaweb的在线小说阅读系统(前后端分离+java+vue+springboot+ssm+mysql+redis)

    基于javaweb的在线小说阅读系统(前后端分离+java+vue+springboot+ssm+mysql+redis) 运行环境 Java≥8.MySQL≥5.7.Node.js≥10 开发工具 ...

  4. springboot+jwt+shiro+vue+elementUI+axios+redis+mysql完成一个前后端分离的博客项目(笔记,帮填坑)

    根据B站up主MarkerHub视频制作的一个笔记 我的博客 B站博主链接: https://www.bilibili.com/video/BV1PQ4y1P7hZ?p=1 博主的开发文档: http ...

  5. 在Docker 上完成对Springboot+Mysql+Redis的前后端分离项目的部署(全流程,全截图)

    本文章全部阅读大约2小时,包含一个完整的springboot + vue +mysql+redis前后端分离项目的部署在docker上的全流程,比较复杂,请做好心理准备,遇到问题可留言或则私信 目录 ...

  6. 使用阿里云的短信服务进行登录实现登录拦截的功能(前后端分离) ---- (Session存储验证码用户信息)

    使用阿里云的短信服务进行登录&实现登录拦截的功能(Session存储 开通短信服务 获取AccessKey 搭建前端环境 搭建后端环境 实体类 Dao层 业务层 控制层 配置类 工具类 开通短 ...

  7. SpringBoot + Vue 开发前后端分离的旅游管理系统

    旅游管理系统 项目简介 项目演示 数据库建表 环境搭建 引入依赖(pom.xml) 配置文件(application.properties) href="javascript:;" ...

  8. MVC设计模式、单体架构、前后端分离、微服务

    萌新程序员在学习web开发时一定对单体架构.前后端分离架构.MVC.微服务这几个名词不陌生,想要搞清它们之间的关系,但互联网的信息分散杂乱,有些文章之间甚至还互相冲突. 我也迷迷糊糊,但本着刨根问底的 ...

  9. 后端程序设计课设,基于Java面向对象思想,MySQL数据库,Tomcat服务器实现网上商城网站。前后端分离开发思想,实现前后端信息交互。

    文章目录 项目展示 开发环境 使用关键技术 项目实现的主要功能 项目完成效果 项目技术核心介绍 MVC开发模式 Ajax实现前后端通信 MySQL数据库连接(使用连接池) 自动生成验证码程序 项目源代 ...

  10. 学科投票系统-基于Python-Django实现的前后端分离项目

    学科投票系统-基于Python-Django实现的前后端分离开发 作者:代昌松 项目详情代码请参考: vote_api:https://gitee.com/dcstempt_ping/vote_api ...

最新文章

  1. 生成对抗网络(Generative Adversarial Network,GAN)
  2. javaee, javaweb和javase的区别以及各自的知识体系
  3. 5种较为简单的缺失值处理方法
  4. 云时代的智能运维平台,助力企业创新迭代
  5. Cloud for Customer下拉菜单code list restriction CLR的实现原理
  6. pyqt5 捕获异常确保程序不退出_Python异常处理详解(基础篇十一)
  7. 如何用Colab运行XGBoost模型
  8. B00007 快速模幂运算的两个C语言程序
  9. 服务端Latex解析成图片或者HTML或者SVG方案
  10. 图像分割-阈值分割法
  11. android应用流程图,Android APP 启动流程简析
  12. bios调整服务器性能模式吗,华硕bios设置最佳性能 试试设置这几步
  13. 学python之前需要学什么,学好python需要什么基础
  14. python画图横坐标_python画图把时间作为横坐标的方法
  15. 【牛客刷题】上手用C语言写一个三子棋小游戏超详解哦(电脑优化)
  16. Java 程序员开发常用的工具(全)
  17. 详解鸽巢原理【组合数学】
  18. 计算机毕业设计(42)java小程序毕设作品之小说电子书阅读小程序系统
  19. JavaSE进阶 | final关键字、抽象类和接口
  20. 神经网络优化(1)之梯度截断

热门文章

  1. 下载gradel的链接
  2. 小米发布会之文案错误:大哥你先处罚自己!再处罚相关高管!
  3. LINUX下载编译libvpx
  4. 全网首发:LINUX上编译ARM(AARCH)版本的OpenJDK8
  5. 人工搜索文字不可靠,还是要使用工具
  6. 文本文件以EF BB开头,使用UTF8读取
  7. 百度人脸识别,一次耗时600毫秒
  8. RESTful Connector
  9. java什么是隐式说明,java中 显式和隐式是怎么回事
  10. MFC 之序列化 serialize 和CArchive