javaWeb学生信息管理系统2

一、学生信息管理系统SIMS

一款基于纯Servlet技术开发的学生信息管理系统(SIMS),在设计中没有采用SpringMVC和Spring Boot等框架。系统完全依赖于Servlet来处理HTTP请求和管理学生信息,实现了信息的有效存储、检索和更新,为教育管理提供了一种轻量级的解决方案。

二、项目简介

为了更好地满足教学信息管理的需求以及对学生和老师信息的有效管理,学生信息管理系统应运而生。该系统通过在线平台提供信息管理服务,以实现对数据的高效处理。这不仅方便了对学生和教师各类信息的管理,还支持大数据分析,从而更好地了解和优化教育过程。

三、技术栈

Jsp+Servlet+Layui+Druid+JDBC-Template+JQuery+Js+Ajax+Json+EL/JSTL+BeanUtils

服务器: Tomcat_8.5.53

数据库: MySQL_5.6.46

开发工具:IDEA_2019.1.3

界面制作:Layui

三 、项目使用说明

  1. 导入结构和数据:sims.sql

  2. 解压下载zip重命名sims-master文件夹为sims,IDEA打开该sims项目

  3. 修改配置数据库连接文件:druid.properties

    管理员 帐号:admin 密码:admin

    学生 帐号:1812123206 密码:123

    老师 帐号:9912123206 密码:123

四、 功能描述

五、数据库设计


admin表:

存储管理员信息,包括管理员ID(a_id)和密码(a_password)。
示例数据:一条管理员记录,ID为’admin’,密码为’admin’。
college_department_class表:

存储学院、专业和班级信息。
示例数据:包括应用数学学院、软件工程学院等不同学院的专业和班级信息。
complaint表:

记录学生的投诉信息,包括投诉ID(id)、投诉日期(cdate)和投诉内容(content)。
示例数据:包括不同日期和内容的投诉记录。
course表:

存储课程信息,包括课程ID(c_id)、课程名称(c_name)、教师ID(t_id)和课程信息(c_info)。
示例数据:包括不同课程和教师的记录。
notify表:

记录系统通知信息,包括通知ID(id)、通知日期(notifyDate)和通知内容(notifyInfo)。
示例数据:包括不同日期和内容的通知记录。
photo表:

存储学生照片信息,包括照片ID(photo_id)和照片名称(photo_name)。
示例数据:包括不同学生的照片记录。
select_course表:

记录学生选课信息,包括学生ID(s_id)、课程ID(c_id)和分数(score)。
示例数据:包括不同学生选择的课程和分数记录。
student表:

存储学生信息,包括学生ID(s_id)、学院、专业、班级、姓名、性别、年龄、地址、电话、邮箱和密码。
示例数据:包括不同学生的个人信息。
teacher表:

存储教师信息,包括教师ID(t_id)、姓名、性别、学历、职称和密码。

六、代码结构

七、功能实现部分截图

八、代码

login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <title>登录页</title>
    <link rel="stylesheet" href="./css/layui.css">
    <link rel="stylesheet" href="./css/modules/layer/default/layer.css">
    <link rel="stylesheet" href="./css/login.css">
    <link rel="stylesheet" href="./css/style.css">
    <link rel="shortcut icon" href="./images/favicon.ico" type="image/x-icon" />
    <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
    <style type="text/css">

    </style>
</head>
<body>
<div class="frame-main">
    <div class="login-main">
        <header class="layui-elip">学生信息管理系统</header>
        <form class="layui-form" action="" name="formf" method="post">

            <div class="layui-input-inline">
                <label class="layadmin-user-login-icon layui-icon layui-icon-username"></label>
                <input type="text" name="id" id="id" value="${loginid}" required lay-verify="required" placeholder="用户名(学号或工号)" autocomplete="off"
                       class="layui-input">
            </div>
            <div class="layui-input-inline">
                <label class="layadmin-user-login-icon layui-icon layui-icon-password"></label>
                <input type="password" value="${loginpassword}" id="password" name="password" required lay-verify="required" placeholder="密码" autocomplete="off"
                       class="layui-input">
            </div>
            <div class="layui-input-inline" style="width: 56%; margin-bottom: 0px;">
                <label class="layadmin-user-login-icon layui-icon layui-icon-vercode"></label>
                <input type="password" name="verifycode" id="code" required lay-verify="required" placeholder="验证码" autocomplete="off"
                       class="layui-input">
            </div>
            <a href="javascript:refreshCode()">
                <img style="padding-left: 14px;" src="${pageContext.request.contextPath}/checkCodeServlet" title="刷新验证码" id="vcode" draggable="false">
            </a>

            <div style="padding-left: 54px;padding-bottom: 6px;">
                <input type="radio" name="roles" value="student" title="学生" checked>
                <input type="radio" name="roles" value="teacher" title="老师">
                <input type="radio" name="roles" value="admin" title="管理员">
            </div>

            <div class="layui-input-inline login-btn">
                <button type="button" onclick="a()" lay-submit lay-filter="login" class="layui-btn" id="login" name="submit-login">登录</button>
            </div>
            <hr/>
            <!--<div class="layui-input-inline">
                <button type="button" class="layui-btn layui-btn-primary">QQ登录</button>
            </div>
            <div class="layui-input-inline">
                <button type="button" class="layui-btn layui-btn-normal">微信登录</button>
            </div>-->
            <p><a href="register.jsp" class="fl">立即注册</a>
                <div class="tooltip">
                    <span class="tooltiptext">${login_msg}</span>
                </div>
                <a href="forget.jsp" class="fr">忘记密码?</a></p>
        </form>
    </div>
</div>
<footer style="position:absolute;bottom:0;width:100%;height:30px; text-align: center;">© 2018-2019.YOYLING.COM</footer>
<script src="layui.js"></script>
<script src="./lay/modules/layer.js"></script>

<script type="text/javascript">
    function refreshCode() {
        var vcode = document.getElementById("vcode");
        vcode.src = "${pageContext.request.contextPath}/checkCodeServlet?time="+new Date().getTime();
    }
</script>
<script type="text/javascript">
    layui.use('form',function(){
        var form = layui.form;
        //刷新界面 所有元素
        form.render();
    });
</script>

<script type="text/javascript">
    // $("#login").on("click", function(){
    function a() {
        var num = document.getElementsByName("roles");
        var checked_value = "student";
        for (var i = 0; i < num.length; i++) {
            var radio = num[i];
            if (radio.checked) {
                checked_value = radio.value;
            }
        }
        var id = document.getElementById("id").value;
        var password = document.getElementById("password").value;
        var verifycode = document.getElementById("code").value;
        if (id=='' || password=='' || verifycode=='') {
            return;
        }else {
            if (checked_value=="student") {
                document.formf.action="${pageContext.request.contextPath}/loginServlet?roles=student";
                document.formf.submit();

            }else if (checked_value=="teacher") {
                document.formf.action="${pageContext.request.contextPath}/loginServlet?roles=teacher";
                document.formf.submit();
            }else {
                document.formf.action="${pageContext.request.contextPath}/loginServlet?roles=admin";
                document.formf.submit();
            }
        }
    }
</script>
</body>
</html>

register.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <title>注册页</title>
    <link rel="stylesheet" href="./css/layui.css">
    <link rel="stylesheet" href="./css/style.css">
    <link rel="stylesheet" href="./css/login.css">
    <link rel="shortcut icon" href="./images/favicon.ico" type="image/x-icon" />
</head>
<body>
<div class="frame-main">
    <div class="login-main">
        <header class="layui-elip">学生信息管理系统</header>

        <!-- 表单选项 -->
        <form class="layui-form" id="registerForm" action="${pageContext.request.contextPath}/registerServlet" method="post">
            <div class="layui-input-inline">
                <!-- 用户名 -->
                <div class="layui-inline" style="width: 100%">
                    <label class="layadmin-user-login-icon layui-icon layui-icon-username"></label>
                    <input type="text" id="user" value="${studentid}" name="studentid" required  lay-verify="required" placeholder="请输入学号" autocomplete="off" class="layui-input">
                </div>

            </div>
            <!-- 密码 -->
            <div class="layui-input-inline">
                <div class="layui-inline" style="width: 100%">
                    <label class="layadmin-user-login-icon layui-icon layui-icon-password"></label>
                    <input type="password" id="pwd" value="${password}" name="password" required  lay-verify="required" placeholder="请输入密码" autocomplete="off" class="layui-input">
                </div>
            </div>
            <!-- 确认密码 -->
            <div class="layui-input-inline">
                <div class="layui-inline" style="width: 100%">
                    <label class="layadmin-user-login-icon layui-icon layui-icon-password"></label>
                    <input type="password" id="rpwd" value="${repassword}" name="repassword" required  lay-verify="required" placeholder="请确认密码" autocomplete="off" class="layui-input">
                </div>
            </div>

            <div class="layui-input-inline" style="width: 56%;">
                <label class="layadmin-user-login-icon layui-icon layui-icon-vercode"></label>
                <input type="password" id="verifycode" name="verifycode" required lay-verify="required" placeholder="验证码" autocomplete="off"
                       class="layui-input">
            </div>
            <a href="javascript:refreshCode()">
                <img style="padding-left: 14px; margin-top: -15px;" src="${pageContext.request.contextPath}/checkCodeServlet" title="刷新验证码" id="vcode" draggable="false">
            </a>


            <div class="layui-input-inline login-btn" style="width: 100%">
                <button type="submit" lay-submit lay-filter="sub" class="layui-btn">注册</button>
            </div>
            <hr style="width: 100%" />
            <p style="width: 100%">
                <a href="login.jsp" class="fl">立即登录</a>
            <div class="tooltip">
                <span class="tooltiptext">${msg}</span>
            </div>
                <a href="forget.jsp" class="fr">忘记密码?</a></p>
            <i class="layui-icon" id="ri" style="color: green;font-weight: bolder; position: relative; left: 200px; top: -265px;" hidden></i>
            <i class="layui-icon" id="wr" style="color: red; font-weight: bolder; position: relative; left: 200px; top: -265px;" hidden></i>
            <i class="layui-icon" id="pri" style="color: green;font-weight: bolder; position: relative; left: 180px; top: -213px;" hidden></i>
            <i class="layui-icon" id="pwr" style="color: red; font-weight: bolder; position: relative; left: 180px; top: -213px;" hidden></i>
            <i class="layui-icon" id="rpri" style="color: green;font-weight: bolder; position: relative; left: 160px; top: -160px;" hidden></i>
            <i class="layui-icon" id="rpwr" style="color: red; font-weight: bolder; position: relative; left: 160px; top: -160px;" hidden></i>
        </form>
    </div>
    <span id="s_id"></span>
</div>
<footer style="position:absolute;bottom:0;width:100%;height:30px; text-align: center;">© 2018-2019.YOYLING.COM</footer>

<script src="layui.js"></script>
<script type="text/javascript">
    function refreshCode() {
        var vcode = document.getElementById("vcode");
        vcode.src = "${pageContext.request.contextPath}/checkCodeServlet?time="+new Date().getTime();
    }
</script>
<script type="text/javascript">
    layui.use(['form','jquery','layer'], function () {
        var form   = layui.form;
        var $      = layui.jquery;
        var layer  = layui.layer;
        //添加表单失焦事件
        //验证表单
        $('#user').blur(function() {
            var studentid = $(this).val();
            $.get("findStudentServlet",{studentid:studentid},function (data) {
                if (data.studentExsit) {
                    $('#wr').removeAttr('hidden');
                    $('#ri').attr('hidden','hidden');
                    layer.open({
                        title: '错误',content: data.msg,icon: 2
                    });
                    $('#user').val("");

                } else {
                }
            });
        });


        // 为密码添加正则验证
        $('#pwd').blur(function() {
            var reg = /^[\w]{3,12}$/;
            if(!($('#pwd').val().match(reg))){
                //layer.msg('请输入合法密码');
                $('#pwr').removeAttr('hidden');
                $('#pri').attr('hidden','hidden');
                layer.msg('请输入3-6位合法密码');
                $('#pwd').val("");
            }else {
                $('#pri').removeAttr('hidden');
                $('#pwr').attr('hidden','hidden');
            }
        });
        $('#user').blur(function() {
            var reg = /^[0-9]{10}$/;
            if(!($('#user').val().match(reg))){
                //layer.msg('请输入合法密码');
                $('#wr').removeAttr('hidden');
                $('#ri').attr('hidden','hidden');
                layer.msg('请输入10位数字学号');
                $('#user').val("");
            }else {
                $('#ri').removeAttr('hidden');
                $('#wr').attr('hidden','hidden');
            }
        });



        //验证两次密码是否一致
        $('#rpwd').blur(function() {
            if($('#pwd').val() != $('#rpwd').val() || $('#rpwd').val()=='' || $('#pwd').val()==''){
                $('#rpwr').removeAttr('hidden');
                $('#rpri').attr('hidden','hidden');
                // layer.msg('两次输入密码不一致!');
                $('#rpwd').val("");
            }else{
                $('#rpri').removeAttr('hidden');
                $('#rpwr').attr('hidden','hidden');
            };
        });
    });
</script>
</body>
</html>

message.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.io.*,java.util.*,javax.servlet.*,javax.servlet.http.*" %>
<%@ page import="java.rmi.ServerException" %>
<%@ page import="java.nio.charset.Charset" %>
<%@ page import="java.nio.charset.StandardCharsets" %>
<html>
<head>
    <title></title>
</head>
<body>
<%
    //定义上传文件的最大字节
    int MAX_SIZE = 102400 * 102400;
    //创建根路径的保存变量
    String rootPath;
    //声明文件读入类
    DataInputStream in = null;
    FileOutputStream fileOut = null;
    //取得互联网程序的绝对地址
    String realPath = request.getSession().getServletContext().getRealPath("/");
    realPath = realPath.substring(0, realPath.indexOf("\\out"));
//    out.print(realPath);
    //创建文件的保存目录
    rootPath = realPath + "\\web\\upload\\";
    //取得客户端上传的数据类型
    String contentType = request.getContentType();
    try {
        if (contentType.indexOf("multipart/form-data") >= 0) {
            //读入上传数据
            in = new DataInputStream(request.getInputStream());
            int formDataLength = request.getContentLength();
            if (formDataLength > MAX_SIZE) {
                out.print("上传的字节不可以超过" + MAX_SIZE + "字节");
                return;
            }
            //保存上传文件的数据
            byte dataBytes[] = new byte[formDataLength];
            int byteRead = 0;
            int totalBytesRead = 0;
            //上传的数据保存在byte数组里面
            while (totalBytesRead < formDataLength) {
                byteRead = in.read(dataBytes, totalBytesRead, formDataLength);
                totalBytesRead += byteRead;
            }
            //根据byte数组创建字符串
            String file = new String(dataBytes, StandardCharsets.UTF_8);
            //取得上传数据的文件名
            String saveFile = file.substring(file.indexOf("filename=\"") + 10);
            saveFile = saveFile.substring(0, saveFile.indexOf("\n"));
            saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1, saveFile.indexOf("\""));
            int lastIndex = contentType.lastIndexOf("=");
            //取得数据的分隔字符串
            String boundary = contentType.substring(lastIndex + 1, contentType.length());
            //创建保存路径的文件名
            String fileName = rootPath + saveFile;
            int pos;
            pos = file.indexOf("filename = \"");
            pos = file.indexOf("\n", pos) + 1;
            pos = file.indexOf("\n", pos) + 1;
            pos = file.indexOf("\n", pos) + 1;
            int boundaryLocation = file.indexOf(boundary, pos) - 4;
            //取得文件数据的开始的位置
            int startPos = ((file.substring(0, pos)).getBytes()).length;
            int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;
            File checkFile = new File(fileName);
            if (checkFile.exists()) {
                out.println("<p>" + saveFile + "文件已经存在.</p>");
                return;
            }
            //检查上传文件的目录是否存在
            File fileDir = new File(rootPath);
            if (!fileDir.exists()) {
                fileDir.mkdirs();
            }
            //创建文件的输出类
            fileOut = new FileOutputStream(fileName);
            //保存文件的数据
            fileOut.write(dataBytes, startPos, (endPos - startPos));
            fileOut.close();
            out.print("<b>文件上传成功</b>");
        } else {
            String content = request.getContentType();
            out.print("上传的文件类型是" + content + "类型的,请上传目录mutipart/form-data类型的文件");
        }
    } catch (Exception ex) {
        throw new ServerException(ex.getMessage());
    }
%>
</body>
</html>

九、联系与交流

扣:969060742 完整代码 sql 程序资源

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【eclipse】eclipse开发springboot项目使用入门

下载eclipse Eclipse downloads - Select a mirror | The Eclipse Foundation 安装eclipse 其他一步一步即可 我们是开发java web选择如下 界面修改 Window->Preferences-> 修改eclipse风格主题 Window->Preferences->General->Appearance 修改字体和大小…

Docker 入门 ------容器互通以及Dockerfile

1. 端口映射以及容器互联 Docker 除了通过网络访问&#xff0c;还提供了两种很方便的功能来满足服务访问的基本需求&#xff1a; 允许映射容器内应用的服务端口到本地宿主主机互联机制实现多个容器间通过容器名来快速访问 1.1 容器映射实现访问容器 1.1.1 从外部访问容器应…

一文了解无线通信 - NB-IOT、LoRa

NB-IOT、LoRa 目录概述需求&#xff1a; 设计思路实现思路分析 NB-IOT1.LoRa2.区别 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for change,chall…

磁盘阵列raid

一、服务器硬件 cpu 、 主板 、内存、硬盘、网卡、电源、raid卡、风扇、远程管理卡 二、硬盘尺寸 目前生产环境中主流的两种类型硬盘 3.5寸 和 2.5寸 硬盘 2.5寸硬盘可以通过使用硬盘托架后适用于3.5寸硬盘的服务器&#xff0c;但是3.5寸没法转换成2.5寸 1.如何在服务器上…

暗光增强——URetinex-Net网络推理测试

目录 一、URetinex-Net网络二、源码包三、测试3.1 修改参数3.2 测试结果 四、推理速度五、总结 一、URetinex-Net网络 URetinex-Net 设计了三个基于学习的模块&#xff0c;分别负责数据相关的初始化、高效的展开优化和用户指定的光照增强。由于 URetinex-Net 的推理速度非常快…

大语言模型(LLM)框架及微调 (Fine Tuning)

大语言模型&#xff08;LLM&#xff09; 技术作为人工智能领域的一项重要创 新在今年引起了广泛的关注。 LLM 是利用深度学习和大数据训练的人工智能系统&#xff0c;专门 设计来理解、生成和回应自然语言。这些模型通过分析大量 的文本数据来学习语言的结构和用法&#xff0c;…

初识隧道代理HTTP:理解基础概念的重要性

嗨&#xff0c;小伙伴们&#xff01;如果你对网络世界充满好奇&#xff0c;那么这篇文章就是为你准备的。我们将一起踏上一段奇妙的旅程&#xff0c;探索一个叫做“隧道代理HTTP”的新领域。但在这之前&#xff0c;我们需要先穿上“基础概念”的防护服&#xff0c;以免被这个复…

Ubuntu22.04 安装教程

系统下载 Ubuntu官网下载 清华源镜像 安装流程 1. 选择安装语言 2. 选择是否在安装时更新 为了系统安装速度一般选择安装时不更新&#xff0c;安装后自行更新 3. 选择系统语言和键盘布局 4. 选择安装模式 5. 配置网络信息 6. 设置静态IP 7. 配置代理信息 8. 配置Ubuntu镜像…

【c/c++】指针例图基础详解

文章目录 指针变量内存指针详解例1例2练习&答案解析 指针变量内存 int main(){// 各类型变量占字节数printf("char: %d\n",sizeof(char)); // 1printf("short: %d\n",sizeof(short)); // 2printf("int: %d\n",sizeof(int)); // 4pri…

【Linux系统化学习】进程终止的奥秘

个人主页点击直达&#xff1a;小白不是程序媛 Linux专栏&#xff1a;Liunx系统化学习 代码仓库&#xff1a;Gitee 目录 获取函数返回值 退出码 进程退出的场景 错误码 信号终止异常代码 进程的终止 main函数直接return exit函数 _exit函数 获取函数返回值 在C语言学…

用anaconda下载安装pytorch1.8.2+cudatoolkit11.1

用anaconda下载安装pytorch1.8.1cudatoolkit11.1 设置清华镜像下载&#xff1a; conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda con…

【Linux】chage命令使用

chage命令 chage用来更改linux用户密码到期信息&#xff0c;包括密码修改间隔最短、最长日期、密码失效时间等。 语法 chage [参数] 用户名 chage命令 -Linux手册页 选项及作用 执行令 &#xff1a; chage --help 执行命令结果 参数 -d, --lastday 最近日期 …

Python圣诞树代码

Python圣诞树代码 # 小黄 2023/12/25import turtle as t # as就是取个别名&#xff0c;后续调用的t都是turtle from turtle import * import random as rn 100.0speed(20) # 定义速度 pensize(5) # 画笔宽度 screensize(800, 800, bgblack) # 定义背景颜色&#xff0c;可…

WPF 显示气泡提示框

气泡提示框应用举例 有时候在我们开发的软件经常会遇到需要提示用户的地方&#xff0c;为了让用户更直观&#xff0c;快速了解提示信息&#xff0c;使用简洁、好看又方便的气泡提示框显得更加方便&#xff0c;更具人性化。如下面例子&#xff1a;(当用户未输入账号时&#xff0…

Vue学习day_03

普通组件的注册 局部注册: 创建一个components的文件夹 在里面写上对应的.vue文件 在对应的vue里面写上对应的3部分 template写上对应的核心代码 盒子等 style 写上对应的css修饰 在App.vue里面进行引用 import 导包 格式是 import 起个名字 from 位置 在写一个component…

javaweb基础2.0 (持续更新中)

Day 10 : Responbody 将响应的实体类转为json发送给前端。RequestBody将request的json转为实体类给后端 修改未成功的可能是因为根据id 查询的时候&#xff0c;只查询了name字段&#xff0c;因为后面需要根据id 修改&#xff0c;所以还需查询id &#xff0c;不然前端不知道id也…

回归预测 | Python实现OOA-LightGBM基于人工鱼鹰优化算法优化LightGBM的多输入单输出数据回归预测模型 (多指标,多图)

回归预测 | Python实现OOA-LightGBM基于人工鱼鹰优化算法优化LightGBM的多输入单输出数据回归预测模型 &#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | Python实现OOA-LightGBM基于人工鱼鹰优化算法优化LightGBM的多输入单输出数据回归预测模型 &#xff08;…

STM32 ESP8266 物联网智能温室大棚 源码PCB原理图 设计文档

资料下载: https://download.csdn.net/download/vvoennvv/88680924 一、概述 本系统以STM32F103C8T6单片机为主控芯片&#xff0c;采用相关传感器构建系统硬件电路。其中使用DHT11温湿度传感器对温度和湿度的采集&#xff0c;MQ-7一氧化碳传感器检测CO浓度&#xff0c;GP2Y101…

nginx日志常见报错解决

目录 一&#xff1a;报错 二&#xff1a;php查看后台内容有的栏目出现502&#xff1f; 三&#xff1a;413 Request Entity Too Large? 四&#xff1a;Request Header Or Cookie Too Large 400 一&#xff1a;报错 upstream prematurely closed connection while reading r…

Java之程序、进程、线程、管程和并发、并行的概念

文章目录 1. 进程与线程1.1 程序1.2 进程1.3 线程1.4 管程 2.并行与并发2.1 并发2.2 并行 1. 进程与线程 1.1 程序 程序是指令和数据的有序集合&#xff0c;其本身没有任何运行的含义&#xff0c;是一个静态的概念。简单的说就是我们写的代码。 1.2 进程 &#xff08;1&…