当前位置: 首页 > news >正文

Java EE开发技术(Servlet整合JDBC银行管理系统-上)

目录

一、建库建表

二、创建web项目并创建包结构

三、User实体类

四、JDBCUtil工具类

五、测试

实例:基于Servlet技术实现银行管理系统

用户注册功能实现

撰写表单

撰写业务逻辑

业务逻辑校验通过第四部分撰写

服务端

dao包

效果

用户登录功能实现

撰写表单

撰写业务逻辑

服务端

dao包

效果

查询所有用户功能实现

撰写表单

撰写业务逻辑

服务端

dao包


一、建库建表

二、创建web项目并创建包结构

三、User实体类

对应user数据表,编写实体类,提供getter/setter方法,重写toString方法(生成即可)

四、JDBCUtil工具类

在com.tianshi.util包中创建JDBCutil工具类,简化JDBC开发过程

封装获取数据库连接方法如下:

package com.tianshi.util;import java.sql.*;/*
开发步骤:
* 1.私有化构造方法,防止实例化
* 2.提供公共的静态方法,可以通过类名直接调用
*
* 工具方法有两个:
* 1.获取数据库连接对象:getConnection()
* 2.释放资源:close()
*/
public class JDBCUtil {private JDBCUtil() {}//私有化构造方法,防止实例化//获取数据库连接对象public static Connection getConnection() {//外置生命Connection对象Connection conn = null;try{Class.forName("com.mysql.cj.jdbc.Driver");//加载数据库驱动//指定连接数据库的url 用户名 密码String url = "jdbc:mysql://127.0.0.1:3306/bank3?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";String user = "root";String password = "123456";//获取连接对象赋值给connconn = DriverManager.getConnection(url, user, password);}catch(Exception e){e.printStackTrace();}return conn;}//释放资源public static void close(ResultSet rs, PreparedStatement ps, Connection conn){try {if (ps != null) ps.close();if (rs != null) rs.close();if (conn != null) conn.close();}catch (SQLException e){e.printStackTrace();}finally {rs = null;ps = null;conn = null;}}
}

五、测试

package com.tianshi.test;import com.tianshi.util.JDBCUtil;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;/*
* 测试JDBCUtil类是否正常
* 业务需求:查询id为1的用户信息
*/
public class testJDBCUtil {public static void main(String[] args) {//声明对象Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;try{//1.获取数据库连接conn = JDBCUtil.getConnection();//2.传输sql语句ps = conn.prepareStatement("SELECT * from User WHERE ID = ?");ps.setInt(1,1);//因为id是int类型,所以调用setInt方法//3.执行sql语句rs = ps.executeQuery();//4.处理结果集while(rs.next()){//获取当前便利的数据int id = rs.getInt("id");String name = rs.getString("username");String password = rs.getString("password");System.out.println(id+","+name+","+password);}} catch (SQLException e) {throw new RuntimeException(e);}finally {//5.释放资源JDBCUtil.close(rs,ps,conn);}}
}

注意jar包版本与Mysql的对应关系,版本不同连接方法有区别,低版本这样写:

 Class.forName("com.mysql.jdbc.Driver");//加载数据库驱动
            //指定连接数据库的url 用户名 密码
            String url = "jdbc:mysql://127.0.0.1:3306/bank3?useUnicode=true&characterEncoding=utf-8&useSSL=false";

实例:基于Servlet技术实现银行管理系统

用户注册功能实现

  • 在项目web目录下创建regist.jsp注册页面,编写表单,要求包含注册信息(用户名、密码、确认密码、注册按钮)
  • 在src目录下创建com.tianshi.web包
  • 在com.tianshi.web包下创建RegistServlet类,映射请求路径为/regist,实现注册功能

  1. 获取注册表单请求参数;

  2. 校验参数非空,如参数为空则直接响应“注册数据不能为空!”提示信息;

  3. 校验两次密码是否一致,如不一致则直接响应”两次密码不一致!”提示信息;

  4. 参数校验通过,则编写JDBC代码实现用户注册数据插入mysql数据库;

  5. 注册成功后,请求重定向到登录页面

撰写表单

撰写业务逻辑

trim()会移除字符串两端的空格,进行校验时使用

package com.tianshi.servlet;import com.tianshi.service.UserService;
import com.tianshi.service.UserServiceImpl;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;@WebServlet("/regist")
public class RegistServlet extends HttpServlet {//创建service对象private UserService service = new UserServiceImpl();@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// GET请求跳转到注册页面resp.sendRedirect(req.getContextPath() + "/regist.jsp");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 0、设置请求、响应的编码-防止中文乱码问题req.setCharacterEncoding("UTF-8");resp.setCharacterEncoding("UTF-8");resp.setContentType("text/html;charset=UTF-8");// 1、获取注册表单请求参数String username = req.getParameter("username");String password = req.getParameter("password1");String password2 = req.getParameter("password2");System.out.println("请求参数:"+username+","+password+","+password2);// 2、参数校验if(username==null||username.trim().equals("")||password==null||password.trim().equals("")||password2==null||password2.trim().equals("")){resp.getWriter().write("不能为空");return;}if(!password.equals(password2)){resp.getWriter().write("两次密码不一致");return;}//3、boolean flag = service.regist(username,password);if(flag){//4、数据保存成功,则创建成功--重定向resp.sendRedirect(req.getContextPath()+"/login.jsp");}else{resp.getWriter().write("注册失败!");}}
}

业务逻辑校验通过第四部分撰写

注意:搞清楚业务逻辑的主线,抓住主干对分支进行完善,而不是先写服务端自主定义的函数

服务端

一般来说先,根据面现象对象编程的思想,先写接口,不关心具体怎么实现,但是编译器可以自动生成,所以依次建立两个文件在service包下即可,使用接口后点击让编译器自动在UserService中生成方法,本质是多态,和下面的同步创建

dao包

dao包中封装了对数据储存系统的访问操作,用于隔离数据的变化,因此数据在数据库的插入操作要在这里实现,和上面的同步创建

效果

成功跳转到下一个逻辑,不成功如下

用户登录功能实现

  • 在项目web包下创建login.jsp页面,编写表单,包含用户信息(用户名、密码、登录按钮)
  •  在com.tianshi.web包下创建LoginServlet类,映射请求路径为/login,实现登录功能
  1. 获取登录表单请求参数;
  2. 校验参数非空,如参数为空则直接响应“登录用户信息不能为空!”提示信息;
  3. 参数校验通过,则编写JDBC代码实现根据用户名和密码查询用户信息;
  4. 如步骤(3)未查询到数据,则说明用户信息不正确,通过请求转发到login.jsp登录页面;
  5. 如步骤(3)查询到数据,则说明用户信息正确,通过请求重定向到index.jsp系统首页。

撰写表单

撰写业务逻辑

服务端

dao包

效果

成功跳转到下一个逻辑,不成功重定向到登录页面

查询所有用户功能实现

在项目web目录下index.jsp首页添加超链接按钮,点击按钮后向/showUsers发起请求

在com.tianshi.service包下创建ShowUsersServlet类,实现查询所有用户信息功能,要求将所有用户信息显示到浏览器网页中。

  1. 编写JDBC代码实现查询所有用户信息
  2. 遍历结果集,获取用户信息
  3. 将用户信息显示到浏览器网页中

撰写表单

撰写业务逻辑

服务端

dao包

http://www.dtcms.com/a/482997.html

相关文章:

  • 深入理解string底层:手写高效字符串类
  • 做国际网站有用吗基础建设图片
  • 启动hbase后,hbmaster总是挂
  • 自助网站建设开发流程步骤西安活动策划执行公司
  • 计算机系统---CPU的进程与线程处理
  • cv_bridge和openCV不兼容问题
  • json转excel python pd
  • 上海网站建设排名公司哪家好天蝎网站建设公司
  • 进入网络管理的网站不想用原来的网站模板了就用小偷工具采集了一个可是怎么替换
  • 西安注册公司在哪个网站系统哈尔滨模板网站
  • android 开机启动 无线调试
  • Polaris Officev9.9.12全功能解锁版
  • 云信im在Android的使用
  • 王道数据结构应用题强化表3.1.1-3.1.6
  • JDK 1.8 自动化脚本安装方案
  • 网站备案不通过怎么解决小米网站建设案例
  • 网路原理:UDP协议
  • 什么是区块链主机托管?为何要使用主机托管?
  • R语言空间数据分析实战:机器学习预测、尺度转换与地统计建模
  • 数据结构系列之堆
  • MySQL索引原理
  • 扁平化网站源码云服务器最便宜
  • 一个网站的成功深圳市深企在线技术开发有限公司
  • Python学习-----小游戏之人生重开模拟器(普通版)
  • 上海网站建设的网html网站系统
  • 理解AUROC,AP,F1-scroe,PRO
  • php做网站安全性wordpress 网银
  • 教程上新|重新定义下一代 OCR:IBM 最新开源 Granite-docling-258M,实现端到端的「结构+内容」统一理解
  • 网络原理 -- HTTP
  • 县级门户网站建设的报告网页游戏网站排名