《Java Web程序设计》实验报告八 JSP+Servlet+JDBC+MySQL实现课程管理

目  录

一、实验目的

二、实验环境

三、实验步骤和内容

1、小组成员分工(共计4人)

2、实验方案

3、实验结果与分析

4、项目任务评价

四、遇到的问题和解决方法

五、实验总结


一、实验目的

        1、掌握mysql的安装、数据库表单创建

        2、掌握JDBC的链接

        3、理解MVC的概念,掌握bean(entity)、dao、service、dbutils包和相关类的建立

        4、完成JSP+servlet+JDBC+MySQL实现课程管理


二、实验环境

        1、硬件要求:笔记本电脑一台。

        2、软件要求:Windows操作系统,使用Eclipse编译环境、Tomcat服务器以及Microsoft Edge浏览器。

        3、网络要求:能访问互联网。


三、实验步骤和内容

1、小组成员分工(共计4人)

        (1)组长——锦鲤

        完成小组内部成员的分工以及前端界面的设计和把控,制定相关的组内合作机制,组内项目的构建遵从“四模四合三并一详”制度,即“四模”为相关项目的制作分为四个模块,每一个人负责一个模块的制作;“四合”为组内四人之间相互合作,将项目开展过程中出现的问题及时的反馈到小组群内,小组成员一起解决;“三并”为以3天为一个期限合并一次代码,检测代码之间以及网页之间是否能够正常的进行衔接和跳转,即每周周三和周六各进行一次小的代码合并工作,将过程中出现的问题发到小组群里让对应负责的同学进行修改和完善,最后在每周的周天进行一次大型的代码合并,此时所有成员必须全部到场,对运行过程中和演练过程中可以改进的地方进行记录,全部演示完毕后对自己负责的模块再进行相应的完善工作;“一详”为组内所有代码都要有相应的注释,确保组内成员都可以看懂各自负责模块的代码,方便进行后期代码的修改工作。

        使用Eclipse编译软件以及MySQL设计一个课程管理页面,并使用MySQL建立自己需要使用的数据库和数据表,通过JSP+servlet+JDBC+MySQL实现对应的课程管理功能。

        (2)组员——大瓜

        使用Eclipse编译软件以及MySQL设计一个课程管理页面,并使用MySQL建立自己需要使用的数据库和数据表,通过JSP+servlet+JDBC+MySQL实现对应的课程管理功能。

        (3)组员——小瓜

        使用Eclipse编译软件以及MySQL设计一个课程管理页面,并使用MySQL建立自己需要使用的数据库和数据表,通过JSP+servlet+JDBC+MySQL实现对应的课程管理功能。

        (4)组员——哈密瓜

        使用Eclipse编译软件以及MySQL设计一个课程管理页面,并使用MySQL建立自己需要使用的数据库和数据表,通过JSP+servlet+JDBC+MySQL实现对应的课程管理功能。

2、实验方案

        1、根据课本、PPT和老师课堂中讲解的内容,使用Eclipse编译软件制作各自负责模块的内容。

        2、将代码编写过程中遇到的问题及时的反馈到小组群内,小组内共同寻找解决方案并将其完美解决。

        3、使用MySQL建立课程管理系统需要使用的数据库(myweb810)以及数据表(course810),通过JDBC连接对应的数据库,并通过调用数据库中的课程数据进行课程管理系统的添加、修改、删除、查询等操作。

        4、定期讨论并总结项目制作过程中出现的问题,对出现的问题进行归纳总结。

        5、完成最终的项目以及各自的实验报告,最后进行实验报告排版的检测并提交。

3、实验结果与分析

        1、使用Eclipse编译软件通过JSP+servlet+JDBC+MySQL编写课程管理的页面,页面实现完成后进行项目的运行,项目启动运行界面如图3-1:

图3-1 项目启动运行界面

        2、通过JSP+servlet+JDBC+MySQL实现前端页面的搭建,构建课程基本信息管理系统的四个模块,即课程信息录入、课程信息修改、课程信息删除、课程信息查询四个模块,项目启动后的首页界面如图3-2:

图3-2 首页界面

        3、由于还没有建立数据库和连接数据库因此目前页面无法实现正常模块的相关操作,在MySQL编译器中构建myweb810数据库,并将自己在项目过程中所需要使用的数据表建立在当前数据库下,数据库建立及数据表建立界面如图3-3:

图3-3 数据库建立及数据表建立界面

        4、数据库建立完毕后,在myweb810数据库中建立课程信息管理系统需要使用的数据表course,其中数据表中具有id、name、teacher、classroom四个属性,course数据表界面如图3-4:

图3-4 course数据表界面

        5、导入数据库驱动包,在自己的电脑上找到自己数据库驱动包的路径,然后将自己需要的数据库驱动包直接拖拽到WEB-INF文件夹下的lib文件夹下,切记在拖拽前先查看自己MySQL的版本,进而确保对应的驱动包版本与之匹配,数据库驱动文件导入界面如图3-5:

图3-5 数据库驱动文件导入界面

        6、数据库驱动文件导入以后右击将文件添加到对应的路径之下,具体操作为右击->构建路径(Bulid Path)->添加路径(Add to bulid path)即可完成对应路径的添加,数据库文件路径添加界面如图3-6:

图3-6 数据库文件路径添加界面

        7、数据表构建完成后使用JDBC连接需要使用的数据库,并通过相关的操作对数据库中的course数据表中的信息进行添加、修改、删除、查询等操作,数据库连接驱动界面如图3-7:

图3-7 数据库连接驱动界面

        8、数据库完成连接后运行整个项目,然后在首页中选择课程信息录入模块进行课程相关信息的录入,填写相关的课程名称、任课教师、上课地点三项内容,输入完成后点击保存即可完成相关信息的录入工作,最后点击返回主页即可回到主页面,课程信息录入界面如图3-8:

图3-8 课程信息录入界面

        9、在首页中选择课程信息修改模块进行课程相关信息的修改,点击此模块后会显示课程信息列表,其中包括ID、课程名称、任课教师、上课地点、操作五项属性,如果需要修改相关信息只需要点击操作中的修改即可,最后点击返回主页即可回到主页面,课程信息修改界面如图3-9:

图3-9 课程信息修改界面

        10、进入课程信息修改界面后,对需要修改的信息进行修改时只需要点击操作中的修改即可,相关的课程名称、任课教师、上课地点三项内容会自动进行填充,对其中需要修改的地方进行修改后点击修改即可完成信息内容的修改,最后点击返回主页即可回到主页面,课程信息内容修改界面如图3-10:

图3-10 课程信息内容修改界面

        11、在首页中选择课程信息查询模块进行课程相关信息的查询,填写相关的课程名称、任课教师、上课地点三项内容中的任意一项即可进行查询,所输入的项数目越多查询到的信息越具体和详细,输入完成后点击查询即可进行相关信息的查询操作,最后点击返回主页即可回到主页面,课程信息查询界面如图3-11:

图3-11 课程信息查询界面

        12、在首页中选择课程信息查询模块进行课程相关信息的查询,填写相关的课程名称、任课教师、上课地点三项内容中的任意一项即可进行查询,所输入的项数目越多查询到的信息越具体和详细,输入完成后点击查询即可进行相关信息的查询操作,接着就会进入到课程信息列表并显示相关的ID、课程名称、任课教师、上课地点四项内容,最后点击返回主页即可回到主页面,课程信息内容查询界面如图3-12:

图3-12 课程信息内容查询界面

        13、在首页中选择课程信息删除模块进行课程相关信息的删除,填写需要删除课程的课程名称然后点击查找进行信息的查找操作,进而确定需要删除的信息时无误的,最后点击返回主页即可回到主页面,课程信息删除界面如图3-13:

图3-13 课程信息删除界面

        14、在首页中选择课程信息删除模块进行课程相关信息的删除,填写需要删除课程的课程名称然后点击查找进行信息的查找操作,进而确定需要删除的信息时无误的,接着就会显示需要删除课程的相关信息,点击删除即可完成选择信息的删除,最后点击返回主页即可回到主页面,课程信息内容删除界面如图3-14:

图3-14 课程信息内容删除界面

4、项目任务评价

        1、每次完成代码迭代更新后对应模块出现的问题大家都可以积极的进行解决,不但提高了对问题的解决效率,而且还加深了我们每一个人处理问题的能力。

        2、每一个组员在编写代码的过程中都可以对自己的代码进行注释,每一期合成完毕后的代码组内的成员都可以看懂其他组员所编写的代码,这样组内的每一位成员都可以详细的了解我们整个项目的运行,并且在运行后可以比较快速的定位到出现错误的地方。

        3、虽然在项目制作的过程中存在一定的问题,但是我们都会进行及时的调整,总的来说优点是大于缺点的,我们会继续保持好的的一方面,及时对缺点和不足进行改正和完善,让小组成员和自己的项目更加完善。


四、遇到的问题和解决方法

        1、运行问题:编写的代码在运行过程中出现了乱码现象。

解决方法:鼠标右击->Run As->Run Configurations->Common->在Other后填写gbk然后点击Run进行运行后中文可以正常输出。

        2、运行问题:代码编写完成后进行运行发现网页无法进行页面加载,显示页面请求失败。

解决方法:由于没有在Tomcat服务器上进行运行所导致,先运行服务器然后再运行代码后页面可以正常加载。

        3、运行问题:启动Tomcat的过程中,有时出现端口被占用的情况。

解决方法:对服务器进行配置,将服务器运行的端口号改为别的端口即可(找到Tomcat安装目录下的文件“/conf/server.xml”->使用记事本或写字板打开文件,在文件中找到“Connector port=8080”->将“8080”改为“8888”,然后保存配置文件->重启Tomcat服务器)。

        4、项目问题:多个同名文本框是如何存储在获取到的数组里的。

解决方法:以文本框在源代码中出现的顺序,从数组的第0位开始向后放置。

        5、项目问题:使用定时器让某个函数隔一段时间之后运行一次的格式是怎样的。

解决方法:定时器的格式为timer = window.setTimeout("需要运行的函数","时间(用毫秒计)")。

        6、代码问题:如果要清除定时器该怎样操作。

解决方法:使用语句clearTimeout(timer)即可完成对定时器的清除。

        7、代码问题:使用对象location完成一个网页跳转到另一个网页。

解决方法:跳转的方法就是修改location的href属性,即修改为window.location.href=”page.html”即可完成页面的跳转。

        8、项目问题:<input type="submit" value="登录">表示提交按钮,是否可以写普通按钮。

解决方法:不可以,如果将该按钮改为:<input type="button" value="登录">,显示效果一样,但是点击,没有提交功能。不过可以用JavaScript进行提交。

        9、项目问题:除了可以将JavaScript代码嵌入到HTML中之外,是否还有其他的导入方式。

解决方法:可以专门将JavaScript代码写在单独的文件中window.alert("第一个 JavaScript 程序"); 然后在另外的HTML页面中插入<script src="code.js" type="text/javascript"></script>来导入需要的JavaScript文件。

        10、项目问题:JSP页面无法获取到JavaBean中的数据。

解决方法:确保JavaBean中需要获取的数据已经被正确地赋值,可以在JSP页面中使用EL表达式或者使用Java代码片段的方式获取数据。

        11、项目问题:JSP页面无法正确地显示数据。

解决方法:检查JSP页面中是否包含错误的HTML标签、CSS样式或JavaScript代码,这些代码可能会干扰数据的显示,也可以检查JavaBean中的数据是否被正确地存储、处理和输出。

        12、项目问题:JSP页面中出现空指针异常。

解决方法:检查JavaBean对象是否被正确地初始化,或者是是否存在null值。在代码中可以使用条件语句或者异常处理来避免空指针异常的出现。

        13、项目问题:JSP页面中的表单无法提交。

解决方法:检查表单中的请求方法是否正确,是否存在未填写的必填项,是否存在重复的表单参数等错误。同时,也可以检查网络连接是否正常。

        14、项目问题:JSP页面中遇到编码问题。

解决方法:可以先检查JSP页面、JavaBean以及数据库的编码设置是否一致,可以手动在代码中设置编码格式,也可以在web.xml文件中配置全局的编码过滤器。

        15、项目问题:无法连接到数据库。

解决方法:检查数据库连接信息是否正确,如数据库的地址、端口、用户名、密码是否正确,是否设置了防火墙或者权限限制等问题,也可以尝试重启数据库或者应用程序来解决。

        16、项目问题:页面跳转异常。

解决方法:检查代码实现,确保页面跳转的 URL 是否正确,是否遗漏了必要的转发或者重定向操作;另外还可以通过在浏览器中查看控制台日志来定位问题。

        17、项目问题:请求参数获取失败。

解决方法:检查代码实现,确保请求参数的名称、类型和格式都与服务器端代码中一致,还可以通过在浏览器中查看网络请求信息来定位问题。


五、实验总结

        1、在使用单引号和双引号的时候要特别注意,输出单个字符时可以使用单引号,如果同时输出多个字符时只能使用双引号进行输出,不然会报错。

        2、在对笔记本电脑进行配置时尽量不要使用C盘。

        3、JavaScript是一种网页脚本语言,虽然名字中含有Java,但它与Java语言是完全两种不同的语言。

        4、JavaScript代码可以很容易地嵌入到HTML页面中。浏览器对JavaScript脚本程序进行解释执行。

        5、 JavaScript与Java一样,对大小写是敏感的,在JavaScript中,注释有三种写法:一种是 HTML 注释的写法:<!—注释内容-->,还有两种分别为:"//单行注释"和"/*多行注释*/"。

        6、JavaScript中的变量为弱变量类型,即变量的类型根据它被赋值的类型改变。

        7、JavaScript中变量未声明就使用是不会报错的,但很容易出现不可预知的错误,所以所有变量先声明后使用。

        8、除了在代码里面进行简单的编程之外,我们还可以通过JavaScript提供的内置对象来对网页进行操作,内置对象由浏览器提供,可以直接使用,不用事先定义。

        9、history对象包含用户的浏览历史等信息,用到这个对象的原因,是因为它可以代替后退 (前进)按钮访问历史记录,该对象从属于window。

        10、location对象可以访问浏览器地址栏,也是从属于window,最常见功能就是跳转到另一个网页。

        11、location对象另一个比较常见的应用是定时跳转,但是需要结合window的定时器使用。

        12、注册功能应当验证用户输入的用户名、密码及确认密码是否相同,以避免输入错误或重复的信息。

        13、用户注册时应当将用户名、密码等信息保存到数据库中,以便用户登录时进行验证。

        14、注册过程应当采用AJAX异步提交,不必刷新整个网页。

        15、在注册成功后,应当跳转到登录页面,提醒用户进行登录。

        16、使用JDBC连接MySQL数据库时,需要先通过DriverManager类加载数据库驱动,然后通过Connection类建立数据库连接。

        17、在进行课程管理操作时,需要先检查输入的用户名和密码是否合法,可以通过正则表达式进行有效性检查。

        18、在注册时,需要先检查用户名是否已经存在于数据库中,如果存在则提示用户重新填写。

        19、在登录时,需要先将用户输入的密码进行一定的加密处理,保证密码的安全性。

        20、在进行数据库表操作时,需要先定义SQL语句,然后通过PreparedStatement类进行预处理,最后通过ResultSet类获取结果集。

        21、注册功能应当提供多种注册方式,如手机号、邮箱等,且应当支持激活码验证、邀请码验证等方式,以加强注册安全性。

        22、在进行数据库操作时,需要使用try-catch语句捕获异常,并显示友好的错误信息。

        24、在进行JDBC操作时,需要注意代码的复用和灵活性,可以将可复用的功能封装成JavaBean或者Util类。

        25、在进行SQL语句拼接时,需要注意SQL注入攻击,可以通过转义或者使用Prepared Statement等方式来防御SQL注入。

        26、在进行用户权限管理时,需要对不同用户赋予不同的权限,以允许或禁止其访问特定内容。

        27、在开发调试过程中,需要使用Debug技术来查找代码中的错误,如在Eclipse中可以使用Debug Perspective。

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

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

相关文章

基于数据挖掘的课程推荐系统研究

摘要本研究设计并开发了一套基于先进数据挖掘技术的智能化课程推荐系统。该系统创新性地采用了协同过滤算法与内容推荐算法相结合的混合推荐策略&#xff0c;通过深度分析学生在学习平台上的历史行为数据&#xff08;包括选课记录、学习时长、测试成绩等&#xff09;以及课程的…

【SCI 4区推荐】《Journal of Visual Communication and Image Representation》

期刊简介&#xff1a;《视觉传达与图像表示杂志》&#xff08;Journal of Visual Communication and Image Representation&#xff09;致力于发表视觉传达与图像表示领域的最前沿研究&#xff0c;特别强调多学科交叉领域中的新技术和理论应用。这本期刊涵盖的研究范围广泛&…

20250711_Sudo 靶机复盘

target:192.168.43.20 外部打点 &#xff08;文件上传&#xff09; nmap扫一下&#xff0c;80,22 开放 扫目录&#xff0c;发现 README.md [17:04:30] 200 - 664B - /Dockerfile [17:04:38] 200 - 34KB - /LICENSE …

STEP 7-Micro/WIN SMART 编程软件:从入门到精通的使用指南

STEP 7-Micro/WIN SMART 编程软件&#xff1a;从入门到精通的使用指南 在工业自动化控制领域&#xff0c;编程软件是连接工程师与 PLC 的桥梁&#xff0c;而 STEP 7-Micro/WIN SMART 作为 S7-200 SMART PLC 的专用编程工具&#xff0c;以其友好的界面和高效的编程能力备受青睐。…

模型训练与部署注意事项篇---resize

图像大小的影响在 YOLOv 系列模型的训练和推理部署过程中&#xff0c;图像大小的选择是影响模型性能&#xff08;精度、速度、泛化能力&#xff09;的关键因素之一。两者的关系既相互关联&#xff0c;又存在一定的灵活性&#xff0c;具体可从以下几个方面详细分析&#xff1a;一…

【Python】venv:配置独立镜像源

为某个特定的 venv 虚拟环境设置 pip 镜像源&#xff0c;使得该环境下的 pip 安装始终使用自定义镜像源&#xff0c;不影响系统 pip&#xff0c;也不依赖用户级配置文件。环境准备 1. 创建虚拟环境 python -m venv venv2. 激活虚拟环境Windows: .\venv\Scripts\activateLinux/m…

日本语言学校:签证制度类 Prompt 的结构整理路径与策略

日本语言学校&#xff1a;签证制度类 Prompt 的结构整理路径与策略 我们在构建语言留学语义系统的过程中&#xff0c;尝试以“签证风险”为例&#xff0c;探索如何让结构信息被更好地保留下来。本文不介绍 Prompt 本身&#xff0c;也不夸大其作用&#xff0c;而是希望借此与更…

RFCOMM协议详解:串口仿真与TCP/IP协议栈移植技术——面试高频考点与真题解析

一、RFCOMM 协议核心考点与高频面试问题1.1 协议基础与核心功能考点解析&#xff1a;RFCOMM&#xff08;Radio Frequency Communication&#xff09;是蓝牙协议栈中实现串口仿真的核心协议&#xff0c;基于 L2CAP 协议提供类似 RS-232 的可靠数据流传输。其核心功能包括&#x…

【编程实践】利用open3d生成物体的最长边方向并可视化

1 利用3d软件生成一个长方体 边长随意&#xff0c;长度随意 2 导出为模型文件并采样为点云数据 从mesh表面进行采样&#xff0c;点数根据自己需求进行设置&#xff0c;此处设置为100000。采样结果&#xff1a;3 识别OBB外接框并可视化长边方向import numpy as np import open3d…

1. 好的设计原则

目录一、应该具备的性质二、面向对象设计原则三、详解3.1 开闭原则3.2 单一职责原则3.3 里氏替换原则3.4 依赖倒置原则3.5 接口隔离原则3.6 合成复用原则3.7 迪米特原则一、应该具备的性质 可扩展性灵活性可插入性 二、面向对象设计原则 以下设计原则的重要性从高到低排列 …

深度学习图像分类数据集—猫七种表情识别分类

该数据集为图像分类数据集&#xff0c;适用于ResNet、VGG等卷积神经网络&#xff0c;SENet、CBAM等注意力机制相关算法&#xff0c;Vision Transformer等Transformer相关算法。 数据集信息介绍&#xff1a;猫七种表情识别分类&#xff1a;[Angry, Disgusted, Happy, Normal, Sa…

002_Claude模型与定价

Claude模型与定价 目录 Claude 4 模型系列模型功能对比定价策略计费说明企业定价使用建议 Claude 4 模型系列 Anthropic 推出了最新的 Claude 4 系列模型&#xff0c;提供不同性能等级以满足各种需求&#xff1a; Claude Opus 4 定位&#xff1a;最强大、最智能的模型特点…

【牛客刷题】游游的字母串

文章目录 一、题目介绍1.1 题目描述1.2 输入描述:1.3 输出描述:1.4 示例1二、解题二、解题思路2.1 核心问题2.2 关键策略三、算法分析3.1 为什么正确?3.2 复杂度分析四、模拟演练五、完整代码一、题目介绍 题目:游游的字母串 1.1 题目描述 对于一个小写字母而言,游游可以通…

docker容器高级管理-dockerfile创建镜像

目录一.构建LNMP架构1.构建nginx容器①拉取centos镜像&#xff08;对镜像做基础架构&#xff09;②创建dockerfile工作目录&#xff08;可以是一个服务的项目&#xff09;③创建dockerfile④创建启动脚本2.构建mysql数据库①创建mysql项目②配置dockersfile文件④创建镜像文件3…

北京-4年功能测试2年空窗-报培训班学测开-第四十九天

今天自习&#xff0c;在自习室嘤…今天效率不高&#xff0c;导致焦虑。不&#xff0c;或者该说&#xff0c;因为焦虑导致效率不高&#xff1f;没有达到自己预期&#xff0c;对自己也不满意临近结课&#xff0c;突然有些迷茫&#xff0c;我知道我要做的还有很多&#xff0c;要学…

css选择器的优先级以及用法

在 CSS 中&#xff0c;当多个选择器同时作用于一个元素&#xff0c;并且为该元素的同一属性设置了不同的值时&#xff0c;就需要依据选择器的优先级来确定最终应用哪个样式。本文详细介绍 CSS 选择器优先级的相关内容。 本文目录一、单个选择器的优先级1. 内联样式2. ID 选择器…

hercules zos 安裝 jdk 8

首先到 IBM 官網下載相關 PAX 檔 (SDK8_31bit_SR8_FP45.PAX.Z) 和 SDK8_31bit_readme.txt https://www.ibm.com/support/pages/java-sdk-products-zos 在 hercules 裡加一些新卷用來存放這個 JDK (UAPP02)&#xff0c;UTMP02 也可以順便加上讓 OMVS IBMUSER 下多一些存放空間&…

张量索引操作

一.前言本期我们来说一下张量的索引操作&#xff0c;需要掌握张量不同索引操作&#xff0c;我们在操作张量时&#xff0c;经常需要去进⾏获取或者修改操作&#xff0c;掌握张量的花式索引操作是必须的⼀项能⼒。二.简单行、列索引import torchdata torch.randint(0, 10, [4, 5…

docker 启动中间件

docker 启动 MySQL # 创建目录 mkdir -p /Users/dongdong/software/mysql/{conf,data}docker run -d \ -p 3306:3306 \ -v /Users/dongdong/software/mysql/conf:/etc/mysql/conf.d \ -v /Users/dongdong/software/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORDroot \ -…

如何批量旋转视频90度?

用相机拍摄视频的时候&#xff0c;原本是竖直拍的&#xff0c;但是放到电脑里面看的时候&#xff0c;却变成了横版的。如果我们需要放到剪映或者其他软件做剪辑的时候&#xff0c;一个一个去旋转视频会比较麻烦&#xff0c;这里&#xff0c;我们可以事先用.bat文件批处理的方式…