目 录
一、实验目的
二、实验环境
三、实验步骤和内容
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。