Servlet+jsp实现列表的增删改查(修改oa项目02)

一、前期准备

请添加图片描述
在这里插入图片描述

二、数据库方面

use javaweb;
drop table if exists dept;
create table dept(
    deptno int primary key,
    dname varchar(255),
    loc varchar(255)
)charset=utf8;
insert into dept(deptno, dname, loc) values(10, '销售部', '北京');
insert into dept(deptno, dname, loc) values(20, '研发部', '上海');
insert into dept(deptno, dname, loc) values(30, '技术部', '广州');
insert into dept(deptno, dname, loc) values(40, '媒体部', '深圳');

三、JDBC工具类封装

  • jdbc配置文件(resources包中的jdbc1.properties)
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/javaweb
user=root
password=123456
  • jdbc工具类
package com.xh.oa2.utils;

import java.sql.*;
import java.util.ResourceBundle;

/**
 * JDBC工具类
 */
public class DBUtil {
   
    //静态变量,类加载时执行
    //属性资源文件绑定
    private static ResourceBundle bundle = ResourceBundle.getBundle("resources.jdbc1");
    //根据属性配置文件key获取value
    private static String driver = bundle.getString("driver");
    private static String url = bundle.getString("url");
    private static String user = bundle.getString("user");
    private static String password = bundle.getString("password");

    static {
   //注册驱动,只需要注册一次就够了,放在静态代码块中,DBUtil类加载时执行
        try {
   
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
   
            e.printStackTrace();
        }
    }

    /**
     * 获取数据库连接对象
     * @return conn 连接对象
     * @throws SQLException
     */
    public static Connection getConnection()throws SQLException{
   
        Connection conn = DriverManager.getConnection(url,user,password);
        return conn;
    }

    /**
     * 释放资源
     * @param conn 连接对象
     * @param ps 数据库操作对象
     * @param rs 结果集对象
     */
    public static void close(Connection conn, Statement ps, ResultSet rs){
   
        if (rs != null) {
   
            try {
   
                rs.close();
            } catch (SQLException e) {
   
                e.printStackTrace();
            }
        }
        if (ps != null) {
   
            try {
   
                ps.close();
            } catch (SQLException e) {
   
                e.printStackTrace();
            }
        }
        if (conn != null) {
   
            try {
   
                conn.close();
            } catch (SQLException e) {
   
                e.printStackTrace();
            }
        }
    }
}

四、Servlet+jsp修改oa项目

1.编写登录界面(index.jsp)

<%@page contentType="text/html;charset=UTF-8" language="java"%>
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>登录界面</title>

</head>
<body>
<h1 align="center">登录界面</h1>
<hr>
<div align="center">
  <form action="<%=request.getContextPath()%>/user/login" method="post" >
    <p>用户名:<input type="text" name="username" /></p>
    <p>&nbsp;&nbsp;&nbsp;码:<input type="password" name="password" /></p>
    <input type="submit" value="登录"  />
  </form>
</div>
</body>
</html>

网页展示结果
在这里插入图片描述

2. 编写UserServlet类使登录连接数据库

数据库

use javaweb;
drop table if exists t_user;
CREATE TABLE t_user(
id INT PRIMARY KEY auto_increment,
username VARCHAR(255),
upassword VARCHAR(255)
)charset=utf8;
INSERT INTO t_user(username,password) VALOES('admin','123456');
INSERT INTO t_user(username,password) VALUES('zhangsan','123456');

UserServlet类

package com.xh.oa2.web.action;
import com.xh.oa2.utils.DBUtil;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.
  • 6
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
登陆功能的实现需要以下步骤: 1. 创建数据库表,包括用户id,用户名和密码等字段。 2. 编写JDBC代码,连接MySQL数据库,并提供增删改查操作的方法。 3. 编写Servlet代码,处理用户请求,调用JDBC方法对数据库进行操作。 4. 编写JSP页面,实现用户界面和交互效果。 下面是一个简单的示例代码: 1. 创建数据库表 ``` CREATE TABLE user ( id INT(11) PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL, password VARCHAR(50) NOT NULL ); ``` 2. 编写JDBC代码 JDBC代码需要连接MySQL数据库,并提供增删改查操作的方法。以下是一个简单的示例代码: ``` public class UserDao { private static final String URL = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC"; private static final String USER = "root"; private static final String PASSWORD = "root"; private Connection conn = null; public UserDao() { try { Class.forName("com.mysql.cj.jdbc.Driver"); conn = DriverManager.getConnection(URL, USER, PASSWORD); } catch (Exception e) { e.printStackTrace(); } } public User getUser(String username) { User user = null; String sql = "SELECT * FROM user WHERE username=?"; try { PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, username); ResultSet rs = pstmt.executeQuery(); if (rs.next()) { user = new User(); user.setId(rs.getInt("id")); user.setUsername(rs.getString("username")); user.setPassword(rs.getString("password")); } } catch (SQLException e) { e.printStackTrace(); } return user; } public boolean addUser(User user) { String sql = "INSERT INTO user (username, password) VALUES (?, ?)"; try { PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, user.getUsername()); pstmt.setString(2, user.getPassword()); pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); return false; } return true; } public boolean updateUser(User user) { String sql = "UPDATE user SET username=?, password=? WHERE id=?"; try { PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, user.getUsername()); pstmt.setString(2, user.getPassword()); pstmt.setInt(3, user.getId()); pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); return false; } return true; } public boolean deleteUser(int id) { String sql = "DELETE FROM user WHERE id=?"; try { PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setInt(1, id); pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); return false; } return true; } } ``` 3. 编写Servlet代码 Servlet代码需要处理用户请求,并调用JDBC方法对数据库进行操作。以下是一个简单的示例代码: ``` public class LoginServlet extends HttpServlet { private UserDao userDao = new UserDao(); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); User user = userDao.getUser(username); if (user != null && user.getPassword().equals(password)) { request.getSession().setAttribute("user", user); response.sendRedirect(request.getContextPath() + "/index.jsp"); } else { response.sendRedirect(request.getContextPath() + "/login.jsp?error=1"); } } } ``` 4. 编写JSP页面 JSP页面需要实现用户界面和交互效果。以下是一个简单的示例代码: ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Login</title> </head> <body> <c:if test="${not empty error}"> <div style="color: red;">用户名或密码错误!</div> </c:if> <form action="${pageContext.request.contextPath}/login" method="post"> <div> <label for="username">用户名:</label> <input type="text" id="username" name="username" required> </div> <div> <label for="password">密码:</label> <input type="password" id="password" name="password" required> </div> <div> <input type="submit" value="登陆"> </div> </form> </body> </html> ``` 以上是一个简单的Jdbc+Servlet+Jsp+MySQL实现登陆功能的示例,具体实现方式可以根据需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值