Javaweb小练习---在JSP中使用Javabean访问数据库完成用户信息的简单添加

news2025/1/16 13:46:41

Javaweb小练习---在JSP中使用Javabean访问数据库完成用户信息的简单添加


目录

Javaweb小练习---在JSP中使用Javabean访问数据库完成用户信息的简单添加

0.创建数据库

1.

在resources目录下创建db.properties文件

2.

/**

* 获取链接与释放资源的工具类--JdbcUtil类

*/

3.

/*** 实体类---建立该类实现记录信息对象化*/

4.在User类基础上,建立UserDao类,封装基本的数据库操作

5.创建数据提交页面----a.jsp

6.计算加工页面-----b.jsp

7.显示信息页面-----c.jsp

8.项目结构:


0.创建数据库

-- 创建数据库test

-- 创建数据库test
CREATE DATABASE IF NOT EXISTS test DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 切换到test数据库
USE test;

-- 创建数据表user
CREATE TABLE IF NOT EXISTS user (
    userid VARCHAR(10) PRIMARY KEY,
    username VARCHAR(20) NOT NULL,
    sex VARCHAR(10) NOT NULL
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

 SELECT *
 FROM user

 

 

1.

在resources目录下创建db.properties文件

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=123456

2.

/**

* 获取链接与释放资源的工具类--JdbcUtil类

*/

package jdbc;

import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

/**
 * 获取链接与释放资源的工具类--JdbcUtil类
 */
public class JdbcUtil{
    private static String driver;
    private static String url;
    private static String username;
    private static String password;
    private static Properties properties = new Properties();

    public JdbcUtil() {
    }

    static  {
        try {
            //设计该工具类的静态初始化器中的代码,该代码在装入类时执行,且执行一次
            //加载属性文件,并在JdbcUtil雷中可读取其中的属性值
            properties.load(JdbcUtil.class.getClassLoader().getResourceAsStream("db.properties"));
            driver = properties.getProperty("driver");
            url = properties.getProperty("url");
            username = properties.getProperty("username");
            password = properties.getProperty("password");
            Class.forName(driver);
        }catch (Exception e){
            //throw new ExceptionInInitializerError(e);
            System.out.println(e);
        }
    }

    //设计获得连接对象的方法getConnection()
    public static Connection getConnection() throws Exception{
        Connection connection=null;
        try{
            //1-读取db.properties文件
            Properties properties = new Properties();
            InputStream in = JdbcUtil.class.getResourceAsStream("/db.properties");
            properties.load(in);


            //2-读取属性
            String driver=properties.getProperty("driver");
            String url=properties.getProperty("url");
            String username=properties.getProperty("username");
            String password=properties.getProperty("password");

            //3-注册驱动
            Class.forName(driver);

            //4-获取连接
            connection= DriverManager.getConnection(url,username,password);

            //5-日志打印连接信息
            System.out.println("连接信息: " + url + " " + username + " " + password);
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("数据库连接失败,请检查连接参数是否正确!");
        }
        return connection;
    }

    //设计释放结果集、语句和连接方法free()
    public static void free(ResultSet resultSet, Statement statement,Connection connection)throws Exception{
        if (resultSet!=null){resultSet.close();}
        if (statement!=null){statement.close();}
        if (connection!=null){connection.close();}
    }
}

3.

/**
* 实体类---建立该类实现记录信息对象化
*/

package vo;

/**
 * 实体类---建立该类实现记录信息对象化
 */
public class User {
    private String userid;
    private String username;
    private String sex;

    public User() {
    }

    public User(String userid, String username, String sex) {
        this.userid = userid;
        this.username = username;
        this.sex = sex;
    }

    public String getUserid() {
        return userid;
    }

    public void setUserid(String userid) {
        this.userid = userid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}

4.在User类基础上,建立UserDao类,封装基本的数据库操作

package dao;

import jdbc.JdbcUtil;
import vo.User;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
 * 在User类基础上,建立UserDao类,封装基本的数据库操作
 */
public class UserDao {
    //1-向数据库中添加用户的方法add(User user),将对象user插入数据表中
    public void add(User user)throws Exception{
        Connection connection= JdbcUtil.getConnection();
        String sql="insert into user(userid,username,sex) values(?,?,?)";
        PreparedStatement preparedStatement=connection.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
        preparedStatement.setString(1,user.getUserid());
        preparedStatement.setString(2,user.getUsername());
        preparedStatement.setString(3,user.getSex());
        preparedStatement.executeUpdate();
        JdbcUtil.free(null,preparedStatement,connection);
    }
    //2-修改数据库用户记录方法update(User user),将对象user进行修改
    public void update(User user)throws Exception{
        Connection connection= JdbcUtil.getConnection();
        String sql="update user set username=?,sex=? where userid=?";
        PreparedStatement preparedStatement=connection.prepareStatement(sql);
        preparedStatement.setString(1,user.getUsername());
        preparedStatement.setString(2,user.getSex());
        preparedStatement.setString(3,user.getUserid());
        preparedStatement.executeUpdate();
        JdbcUtil.free(null,preparedStatement,connection);
    }
    //3-删除数据库用户记录方法delete(String userId),根据userId值进行删除记录
    public void delete(String userId)throws Exception{
        Connection connection=JdbcUtil.getConnection();
        String sql="delete from user where userid=?";
        PreparedStatement preparedStatement=connection.prepareStatement(sql);
        preparedStatement.setString(1,userId);
        preparedStatement.executeUpdate();
        JdbcUtil.free(null,preparedStatement,connection);
    }
    //4-根据id查询用户方法findUserById()
    public User findUserById(String userId)throws Exception{
        Connection connection=JdbcUtil.getConnection();
        User user=null;
        String sql="select * from user where userid=?";
        PreparedStatement preparedStatement=connection.prepareStatement(sql);
        preparedStatement.setString(1,userId);
        ResultSet resultSet=preparedStatement.executeQuery();
        if (resultSet.next()){
            user=new User();
            user.setUserid(resultSet.getString("userid"));
            user.setUsername(resultSet.getString("username"));
            user.setSex(resultSet.getString("sex"));
        }
        JdbcUtil.free(resultSet,preparedStatement,connection);
        return user;
    }
    //5-查询全部用户的方法QueryAll()
    public List<User>QueryAll()throws Exception{
        Connection connection=JdbcUtil.getConnection();
        List<User> userList=new ArrayList<>();
        String sql="select * from user";
        PreparedStatement preparedStatement=connection.prepareStatement(sql);
        ResultSet resultSet=preparedStatement.executeQuery();
        while (resultSet.next()){
            User user=new User();
            user.setUserid(resultSet.getString("userid"));
            user.setUsername(resultSet.getString("username"));
            user.setSex(resultSet.getString("sex"));
            userList.add(user);
        }
        JdbcUtil.free(resultSet,preparedStatement,connection);
        return userList;
    }
}

5.创建数据提交页面----a.jsp

<%--
  Created by IntelliJ IDEA.
  User: CaptainDong
  Date: 2023/4/9
  Time: 11:59
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@page pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
  <title>数据提交页面</title>
</head>
<body>
<form action="b.jsp" method="post">
  <table>
    <tr>
      <td>
        编号:
      </td>
      <td>
        <input type="text" name="userid" required>
      </td>
    </tr>
    <tr>
      <td>
        姓名:
      </td>
      <td>
        <input type="text" name="username" required>
      </td>
    </tr>
    <tr>
      <td>
        性别:
      </td>
      <td>
        <input type="text" name="sex" required>
      </td>
    </tr>
    <tr>
      <td colspan="2">
        <button type="submit">提交</button>
        <button type="reset">重置</button>
      </td>
    </tr>
  </table>
</form>
</body>
</html>

6.计算加工页面-----b.jsp

<%@ page import="vo.User" %>
<%@ page import="dao.UserDao" %>
<%@ page import="java.util.List" %>
<%@ page import="java.sql.SQLException" %><%--
  Created by IntelliJ IDEA.
  User: CaptainDong
  Date: 2023/4/9
  Time: 11:59
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>计算加工页面</title>
</head>
<body>
<%
    request.setCharacterEncoding("UTF-8");
    String user_id=request.getParameter("userid");
    String user_name=request.getParameter("username");
    String user_sex=request.getParameter("sex");

    User user=new User(user_id,user_name,user_sex);
    UserDao userDao=new UserDao();
    //userDao.add(user);
    // 实现插入
    try {
        userDao.add(user);
    } catch (SQLException e) {
        e.printStackTrace();
    }

    List<User>users=userDao.QueryAll();
    request.setAttribute("users_list",users);
%>
//转到c.jsp网页
<jsp:forward page="c.jsp"></jsp:forward>
</body>
</html>

7.显示信息页面-----c.jsp

<%@ page import="java.util.List" %>
<%@ page import="vo.User" %><%--
  Created by IntelliJ IDEA.
  User: CaptainDong
  Date: 2023/4/9
  Time: 11:59
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>显示信息页面</title>
</head>
<body>
<%
    List<User>users=(List<User>) (request.getAttribute("users_list"));
    for (int i=0;i<users.size();i++){
        User user=users.get(i);
        String abc="编号:"+user.getUserid()+"_姓名:"+user.getUsername()+"_性别:"+user.getSex();
        out.println(abc);
    }
%>
</body>
</html>

8.项目结构:

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/415621.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UE-Ueransim-5GC全链路开发记录

目录 1. 系统配置 1.1 Ueransim配置 1.2 UE配置 2. 启动 3. 实际演示 附录 代理1&#xff1a;ueransim-5gc 代理2 ue-ueransim TCPclient TCPserver 1. 系统配置 1.1 Ueransim配置 ueransim的yaml文件如下 version: 3.8 services:ueransim2:container_name: uera…

Ubantu docker学习笔记(六)容器数据卷

文章目录一、容器数据卷二、容器卷挂载2.1 在命令行挂载数据卷2.2 通过dockerfile挂载数据卷三、数据卷容器四、备份数据卷五、数据卷的恢复和迁移5.1 恢复数据卷5.2 迁移数据卷六、管理数据卷6.1 与容器关联&#xff08;1&#xff09;例子一&#xff08;2&#xff09;例子二&a…

【LeetCode】剑指 Offer(28)

目录 题目&#xff1a;剑指 Offer 54. 二叉搜索树的第k大节点 - 力扣&#xff08;Leetcode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 题目&#xff1a;剑指 Offer 55 - I. 二叉树的深度 - 力…

MySQL运维11-MySQL的事务隔离级别

文章目录1、MySQL的事务隔离级别2、MySQL事务隔离级别的相关参数和命令2.1、查看事务隔离级别2.2、设置事务隔离级别2.2.1、在会话中设置事务隔离级别2.2.2、在配置文件中设置事务隔离级别3、MySQL的多版本并发控制(MVCC)4、总结1、MySQL的事务隔离级别 事务隔离级别越高&…

Qt5.12实战之规则DLL导出函数使用

1.创建基于MFC的规则DLL工程: 输入工程名,然后点击创建 选择使用共享MFC DLL的常规DLL 创建成功后,解决方案下会多出一个工程 增加导出函数声明 实现导出函数 在模块定义文件def文件中声明导出

YC-B09(原创)基于springboot,vue网上书城

(原创)基于springboot,vue网上书城定制版v4.0 本人原创作品&#xff0c;用户前台、系统管理员后台项目完整&#xff0c;无任何bug。 每行代码都是本人自己写&#xff0c;我在代码上面都写有详细注释 开发工具&#xff1a;IDEA 服务器&#xff1a;Tomcat9.0&#xff0c; jdk…

代码随想录算法训练营第五十九天-单调栈2| 503.下一个更大元素II 42. 接雨水

503. Next Greater Element II 成环就用取模mod方法 import java.util.Arrays; import java.util.Stack;public class NextGreaterElement2 {public int[] nextGreaterElements(int[] nums) {//边界判断if(nums null || nums.length < 1){return new int[]{-1};}int size …

无需兔魔法!国内手机直接畅玩GPT!

为了用上ChatGPT很多同学都是经历一波三折&#xff0c;闯三关过五将&#xff01;因为使用ChatGPT的门槛很高&#xff0c;尤其是这个kx上网把很多人都挡在了门外&#xff01;有的同学说newbing呢&#xff0c;newbing如果你要用聊天功能&#xff0c;一样有这样门槛&#xff01;很…

Ubuntu docker 基本操作

安装docker&#xff1a; curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 也可以使用国内 daocloud 一键安装命令&#xff1a; curl -sSL https://get.daocloud.io/docker | sh 启动Docker命令&#xff1a; systemctl start docker 查看版本号&#xf…

NKCTF2023 babyrust

这道题目适合科普&#xff1a;rust逆向&#xff0c;xmm指令。 rust逆向的一些注意事项 rust题中&#xff0c;“ida给的main”里的第一个lea是“用户写的main”。 如下图&#xff0c;这是ida标记的main。而用户写的main其实是sub_1400012A0。姑且可以认为“ida给的main”里的…

初识springcloud

认识微服务 单体架构&#xff1a; 简单方便&#xff0c;高度耦合&#xff0c;扩展性差&#xff0c;适合小型项目&#xff0c;例如&#xff0c;学生管理系统。 分布式架构 松耦合&#xff0c;扩展性好&#xff0c;但架构复杂&#xff0c;难度大。适合大型互联网项目。如&#x…

【数据结构】解析队列各接口功能实现

目录 前言&#xff1a; 一、队列概述&#xff1a; 1.队列的概念&#xff1a; 二、队列的各种接口功能实现&#xff1a; 1.初始化队列&#xff1a; 2.入队&#xff08;尾插&#xff09;&#xff1a; 3.出队&#xff08;头删&#xff09;&#xff1a; 4.查看队头&#xf…

Zookeeper安装(Win和Linux)

Zookeeper安装 Zookeeper单机安装&#xff08;Windows&#xff09; 下载地址&#xff1a;Apache ZooKeeper 1.1 下载安装 下载好的文件进行解压缩得到apache-zookeeper-3.8.0-bin目录&#xff0c;创建zkdata及log目录&#xff0c;后续作为数据存放目录 1.2 配置启动 我们…

易点易动设备管理系统高效管理海量备品备件

纸质设备备品备件管理是企业运营中的重要环节&#xff0c;其管理效率和精度直接关系到企业的生产效率和经济效益。然而&#xff0c;传统的纸质管理方式存在诸多问题&#xff0c;如信息不透明、数据难以更新、易丢失等。为解决这些问题&#xff0c;易点易动设备管理系统应运而生…

webpack 之 Loader开发(一)

1. You may need an additional loader to handle the result of these loaders.&#xff08;我们可能还需要一个额外的加载器来处理当前加载器的结果&#xff09; 2. Loader可能经过一层层链路、又或者只有一层&#xff0c;最终的处理都是转化成 js&#xff0c;&#xff08;L…

【LeetCode: 139. 单词拆分 | 暴力递归=>记忆化搜索=>动态规划】

&#x1f34e;作者简介&#xff1a;硕风和炜&#xff0c;CSDN-Java领域新星创作者&#x1f3c6;&#xff0c;保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享&#x1f48e;&#x1f48e;&#x1f48e; &#x1f34e;座右…

Ae:灯光选项

灯光选项 Light Options&#xff0c;用于调整光源的特性以及所产生的投影的相关设置。下面以属性最多的聚光灯的灯光选项为例进行说明。强度 Intensity光源的亮度。数值越大&#xff0c;光照越大。负值可产生吸光效果&#xff0c;即降低场景中其它光源的光照强度。颜色 Color默…

KNN、SVM、MLP、K-means分类实验

来源&#xff1a;投稿 作者&#xff1a;摩卡 编辑&#xff1a;学姐 数据集简介 实验使用了两个数据集&#xff0c;一个是经典的鸢尾花数据集(iris)另一个是树叶数据集(leaf) 鸢尾花数据集(iris)&#xff1a; 鸢尾花数据集发布于1988年7月1日&#xff0c;该数据集共有150条数…

客快物流大数据项目(一百一十二):初识Spring Cloud

文章目录 初识Spring Cloud 一、Spring Cloud简介 二、SpringCloud 基础架构图

使用cocopod就那么容易

第一节、配置coopod 打开终端替换ruby镜像源&#xff0c;系统自带的镜像源(gem sources --remove https://rubygems.org/)被墙挡住了或者&#xff08;https://ruby.taobao.org/&#xff09;已过期。需替换成新的镜像源。 1&#xff09;.先查看已有的镜像是否是&#xff1a;ht…