班级管理servlet项目开发详细讲解,其中涉及js、jq、ajax、等多项技术合计,本项目来源自网络,如有雷同,请私聊博主

数据分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

随后在数据中创建,也可以直接复制我的sql语句:


SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for clazz
-- ----------------------------
DROP TABLE IF EXISTS `clazz`;
CREATE TABLE `clazz`  (
  `cid` int(11) NOT NULL AUTO_INCREMENT,
  `cname` varchar(55) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `cteacher` varchar(55) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `remark` varchar(55) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`cid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student`  (
  `sid` int(11) NOT NULL AUTO_INCREMENT,
  `sname` varchar(55) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `sex` char(2) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `hobby` varchar(55) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `birthdate` date NULL DEFAULT NULL,
  `phone` varchar(55) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `reamrk` varchar(55) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `cid` int(11) NULL DEFAULT NULL,
  PRIMARY KEY (`sid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `uid` int(11) NOT NULL AUTO_INCREMENT,
  `ukey` varchar(55) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `pwd` varchar(55) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `realname` varchar(55) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `type` int(11) NULL DEFAULT NULL,
  PRIMARY KEY (`uid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

SET FOREIGN_KEY_CHECKS = 1;

在这里插入图片描述
随后根据个人情况添加模拟数据

班级表
在这里插入图片描述

学生
在这里插入图片描述
用户
在这里插入图片描述
以上数据均为模拟,无实际意义

搭建项目

在这里插入图片描述

导入jar包

在这里插入图片描述

导入前端页面

在这里插入图片描述

导入数据库连接池和连接工具

在这里插入图片描述

mysqlDriver=com.mysql.cj.jdbc.Driver
mysqlUrl=jdbc:mysql://localhost:3306/banji?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
mysqlName=root
mysqlPassword=root
package com.zheng.util;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.LinkedList;
import java.util.Properties;

/**
 * @Author Mr.ZhengJiXiang
 * @Date 2021/9/2 19:05
 * @Version 1.0
 */



//数据库连接池
public class MyConnectionUtils {
   

    //1、创建LinkedList集合(存入线程
    //Connection,数据库操作对象
    static LinkedList<Connection> linkedList = new LinkedList<>();


    static {
   
        //2、通过流的形式,读取是数据库的配置文件
        InputStream resourceAsStream = MyConnectionUtils.class.getClassLoader().getResourceAsStream("db.properties");

        //3、调用Properties();类
        Properties properties = new Properties();
        try {
   
            properties.load(resourceAsStream);
            String mysqlDriver = (String) properties.get("mysqlDriver");
            String mysqlUrl = (String) properties.get("mysqlUrl");
            String mysqlName = (String) properties.get("mysqlName");
            String mysqlPassword = (String) properties.get("mysqlPassword");

            //4、加载驱动
            Class.forName(mysqlDriver);
            //5、使用循环获取10个连接,并把连接数放到连接池内
            for (int i = 0; i < 10; i++) {
   
                //6、使用内置对象DriverManager调用getConnection方法,把数据掺入里面
                Connection connection = DriverManager.getConnection(mysqlUrl, mysqlName, mysqlPassword);

                //7、放入集合
                linkedList.add(connection);
            }





        } catch (Exception e) {
   
            e.printStackTrace();
        }







    }

    //6、创建连接方法,好让实体类调用(用于传入sql语句以及执行其他几部)
    //使用同步关键字实现线程同步,
    //因为涉及等待,所以synchronized是同步锁
    public synchronized Connection getConnection() throws InterruptedException {
   
        //如果内部线程等于0 .代表线程被拿完了
        if (linkedList.size()==0){
   
            this.wait();
        }

        //如果有人来拿连接,那么连接池就会移除一个连接,代表打走了
        Connection remove = linkedList.remove(0);
        return remove;
    }


    //7、将连接放回连接处
    public synchronized void closeConnection(Connection connection){
   
        linkedList.add(connection);
        //唤醒等待的线程
        this.notifyAll();
    }
}

配置全局的字符编码过滤器

package com.zheng.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

/**
 * @Author Mr.Zheng
 * @Date 2021/11/19 17:09
 * @Version 1.0
 *
 * 字符编码过滤器
 */
//@WebFilter("/*")可能会导致js或者css等资源也进入了过滤器,所以添加一个路径作为然后访问的中间路径
    @WebFilter("/bj/*")
public class EncFilter implements Filter {
   

    @Override
    public void doFilter(ServletRequest Request, ServletResponse Response, FilterChain filter) throws IOException, ServletException {
   

        Request.setCharacterEncoding("utf-8");
        Response.setCharacterEncoding("utf-8");
        Response.setContentType("text/html;charset=utf-8");


        //进行放行,执行下一个过滤器或者目标资源
        filter.doFilter(Request,Response);

    }
}

配置tomcat启动项目

在这里插入图片描述

导入实体类:

在这里插入图片描述

实现登录功能

编写dao

在这里插入图片描述

package com.zheng.dao.impl;

import com.zheng.dao.UserDao;
import com.zheng.pojo.User;
import com.zheng.util.MyConnectionUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * @Author Mr.Zheng
 * @Date 2021/11/19 17:25
 * @Version 1.0
 */

public class UserDaoImpl implements UserDao {
   
    @Override
    public User selectOne(String ukey, String pwd) {
   

        //调用线程池
        MyConnectionUtils myConnectionUtils = new MyConnectionUtils();
        Connection connection = null;
        PreparedStatement pr = null;
        ResultSet rs=null;
        User user = null;
        try {
   
            connection= myConnectionUtils.getConnection();

            pr = connection.prepareStatement("select * from user where ukey=? and pwd = ?");

            pr.setString(1,ukey);
            pr.setString(2,pwd);

           rs = pr.executeQuery();

            while (rs.next()){
   
                user =  new User(rs.getInt("uid") ,
                        rs.getString("ukey"),
                        rs.getString("pwd"),
                         rs.getString("realname"),
                        rs.getInt("type"));
            }



        } catch (InterruptedException | SQLException e) {
   
            e.printStackTrace();
        }finally {
   
            if (pr!=null&&rs!=null){
   
                try {
   
                    pr.close();
                    rs.close();
                } catch (SQLException e) {
   
                    e.printStackTrace();
                }
            }
            if (connection!=null){
   
                myConnectionUtils.closeConnection(connection);
            }
        }
        return user;
    }
}

编写service

在这里插入图片描述
在这里插入图片描述

编写servlet

package com.zheng.servlet;

import com.zheng.pojo.User;
import com.zheng.service.impl.UserServiceImpl;

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 java.io.IOException;

/**
 * @Author Mr.Zheng
 * @Date 2021/11/19 20:29
 * @Version 1.0
 *
 * 登录的servlet
 */

@WebServlet("/bj/UserLoginServlet")
public class UserLoginServlet extends HttpServlet {
   

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DNCS高级工程师

你的创作是我打赏的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值