用 Servlet、JDBC、Maven完成最基础的web项目,实现增删改查功能使用IDEA编译

该博客介绍了一个基于Servlet、JDBC和Maven的简单Web项目,实现了用户注册、登录、列表展示、信息修改和删除功能。通过IDEA进行编译,涉及数据库连接、过滤器、实体类、数据库工具类、DAO接口及实现、Servlet请求处理和JSP页面设计。项目遵循MVC模式,强调了请求转发与重定向的区别,以及可能出现的问题和解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用 Servlet、JDBC、Maven完成最基础的web项目,实现增删改查功能使用IDEA编译

主要功能
1.用户注册
2.用户登录
3.用户列表展示
4.用户信息修改
5.用户信息删除

整体架构

1.新建mysql表

CREATE TABLE `user` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(255) NOT NULL,
  `pwd` varchar(255) NOT NULL,
  `sex` varchar(255) NOT NULL,
  `home` varchar(255) NOT NULL,
  `info` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
 
/*添加两个值用于测试*/
INSERT INTO `user` VALUES ('1', '小明', '123', '男', '北京', '鹅鹅鹅!');
INSERT INTO `user` VALUES ('2', '小强', '123456', '男', '北京', '我家住东北a!');

2.IDEA新建maven项目

3.整理pom.xml文件
导入需要使用的依赖

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <!-- 1.数据库连接包 mysql驱动-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.18</version>
    </dependency>
    <!-- 2.servlet-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
    </dependency>
    <!-- taglib prefix="c" jsp 支持包-->
    <dependency>
      <groupId>org.glassfish.web</groupId>
      <artifactId>jstl-impl</artifactId>
      <version>1.2</version>
      <scope>runtime</scope>
    </dependency>
    <!--4. jstl 支持包 -->
    <dependency>
      <groupId>javax.servlet.jsp.jstl</groupId>
      <artifactId>jstl-api</artifactId>
      <version>1.2</version>
    </dependency>
    <!-- 6.lombok 数据库包 -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.12</version>
    </dependency>

  </dependencies>

4.过滤器
作用:过滤所有页面解决乱码问题
注意:在web.xml里注册

package com.filter;
import javax.servlet.*;
import java.io.IOException;
public class EncodingFilter implements Filter {
   
   
    public EncodingFilter() {
   
   
        System.out.println("执行过滤器");
    }

    public void init(FilterConfig filterConfig) throws ServletException {
   
   

    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
   
   
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=UTF-8");
        filterChain.doFilter(request, response);
    }

    public void destroy() {
   
   

    }
}

5.实体类User
作用:映射数据库创建的user表
注意:这里我使用到了lombok包,需要先下载lombok插件再在pom.xml里导入lombok依赖,在方法上加上**@Data**就会生成这个类所有属性的setter和getter方法,在左侧Structure里可以看到生成的方法,也可以手动生成setter和getter方法,二者没区别

package com.entiy;
import lombok.Data;
@Data
public class User {
   
   
    private int id;
    private String name;
    private String pwd;
    private String sex;
    private String home;
    private String info;
}

6.数据库工具类DBCoon

作用:用于连接数据库,执行SQL语句和返回执行结果
注:我使用了PreparedStatement 预编译SQL方法通过遍历Object数组的方式传递SQL参数,

package com.util;

import java.sql.*;
/*数据库工具类:
 * 1.连接数据库
 * 2.增删改查
 * 3.执行SQL语句并返回执行结果
 * 4.关流
 * */
public class DBCoon {
   
   
    //serverTimezone=UTC设置连接时区,不设置可能会报时区错误
    static String url = "jdbc:mysql://localhost:3306/vip05?serverTimezone=UTC" +
            "&useUnicode=true&characterEncoding=utf-8";
    static String username = "root";
    static String password = "123456";

    static Connection conn = null;
    static ResultSet rs = null;
    static PreparedStatement ps = null;

    /*连接数据库*/
    public static void init() {
   
   
        try {
   
   
            /*1.加载驱动获得驱动管理器*/
            Class.forName("com.mysql.jdbc.Driver");
            /*2.连接数据库*/
            conn = DriverManager.getConnection(url, username, password);
            System.out.println("数据库连接成功");
        } catch (Exception e) {
   
   
            e.printStackTrace();
            System.out.println("数据库连接失败");
        }
    }

    /*查询数据(传递参数)*/
    public static ResultSet searchSql(String sql, Object[] args) {
   
   
        try {
   
   
            ps = conn.prepareStatement(sql);
            for (int j = 0; j < args.length; j++) {
   
   
                ps.setObject(j + 1, args[j]);
            }
            rs = ps.executeQuery();
            System.out.println("数据查询成功");
        } catch (SQLException e) {
   
   
            e.printStackTrace();
            System.out.println("数据查询失败");
        }
        return rs;
    }

    /*增删改查数据(传递参数)*/
    public static int addUpdDel(String sql, Object[] args) {
   
   
        int i = 0;
        try {
   
   
            ps = conn.prepareStatement(sql);
            for (int j = 0; j < args.length; j++) {
   
   
                ps.setObject(j + 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值