202311-hello-world7843 实验五 软件开发案例(2)(团队作业)
| 项目 | 内容 |
|---|---|
| 课程班级博客链接 | 2023年春软件工程(2020级计算机科学与技术) |
| 这个作业要求链接 | 实验五:软件开发案例(2) |
| 团队名称 | hello-world7843 |
| 团队成员分工描述 | 王 * 润 创建Java web项目及运行测试 王 * 软件增量开发及上传至github 杜 * 团队博客撰写及运行调试 |
| 团队的课程学习目标 | (1)理解MVC软件设计模式 (2)练习并掌握JSP+JavaBean+Servlet技术实现的MVC设计模式; (3)练习UML建模技术。 |
| 这个作业在哪些方面帮助团队实现学习目标 | 1、学会了自己解决程序运行中遇到的问题; 2、通过团队的方式进行项目的学习体验 3、与团队成员交流沟通,共同建设团队 |
| 团队博客链接 | hello-world7843 |
| 团队项目Github仓库地址链接 | github仓库 |
一、实验内容
任务1:创建学生信息管理的Java web项目
(1)在MySQL中创建数据库:students

(2)在students数据库中创建学生信息表:student

(3)创建Web项目,项目名称为:studentmanager

(4)在项目的src包中创建包model、control、在WebRoot下创建JSP文件夹

(5)在项目中添加MySQL数据库驱动包

(6)在src包中创建entity包存放实体类,创建实体类Student.java,其属性与数据库表的student的字段对应,程序中获取的数据库表student的记录就可存储到Student.java类的对象实例中。

(7)在src包中创建dbutil包存放数据库连接工具类Dbconn.java

(8)分别对案例中四个模块的M、V、C层进行编码,并在项目中的WebRoot/WEB-INF/webWeb.xml中配置control包的6个Servelet控制器。
学生信息列表模块:studentlist.jsp(V)、SearchStudent.java(M)、ListStudentServelet.java(C)
新增学生信息模块:studentinsert.jsp(V)、InsertStudent.java(M)、InsertStudentServlet.java(C)
修改学生信息模块:studentupdate.jsp(V)、SelectStudent.java+UpdateStudent.java(M)、UpStudentServlet.java(修改前)、DoStudentServlet.java(修改后)
删除学生信息模块:studentshow.jsp(V)、SelectStudent.java+DeleteStudent.java(M)、ShowStudentServlet.java(删除前)、DeleteStudentServlet.java(删除后)

(9)将项目部署在Tomcat服务器,在浏览器输入:http://localhost:8080/studentmanager/ListStudentServlet.do ,测试运行学生信息的增加、更新、删除、显示等操作。
将项目部署在Tomcat服务器

登录页面


学生信息的显示

学生信息的添加

学生信息的删除

学生信息的修改

任务2:学生信息管理软件增量开发
(1)为案例软件开发一个新功能,可将excel文件的学生信息批量导入数据库。

导入功能

导入结果

(2)在项目的WebRoot文件夹下创建一个upload文件夹用于存放用户上传的文件,增加学生信息字段:相片,根据相片字段的信息存储和维护完善案例软件,要求学生相片文件存放在服务器上项目的upload文件夹中,数据库中存放相片的文件名,显示相片时是根据文件名到该文件夹中访问图片文件而实现。

(3)将任务1与任务2的完成的学生信息管理软件源码上传到团队github仓库。
二、实验总结
1、完成各项任务花费的时间
| 任务内容 | 预计花费时间(h) | 实际花费时间(h) |
|---|---|---|
| 创建学生信息管理的Java web项目 | 1 | 1.5 |
| 学生信息管理软件增量开发 | 3 | 4 |
| 撰写团队博文 | 3 | 2.5 |
2、成员分工
| 成员 | 分工 |
|---|---|
| 王*润 | 创建Java web项目及运行测试 |
| 王* | 软件增量开发及上传至github |
| 杜* | 团队博客撰写及运行调试 |
3、总结Servlet技术的工作原理
Servlet工作过程中,涉及到了客户端(浏览器)、Servlet容器、Servlet应用三种角色。大致过程如下所示:
首先,由客户端发起请求。
然后,Servlet容器接收到客户端的请求,解析请求协议和数据,如果servlet程序还没有被加载,就会执行加载过程并调用service()方法,否则直接调用service()方法。
其中,加载Servlet程序的过程:根据Servlet容器与Servlet程序间的契约,当有请求过来时,如果Servlet程序还没有被载入Servlet容器中,这个时候Servlet容器就会通过调用init()方法将Servlet类载入内存,并产生Servlet实例。在调用init()方法的时候,Servlet容器会传入一个ServletConfig对象进来从而对Servlet对象进行初始化。该过程只会被执行一次,即在一个应用程序中,每类Servlet程序只能有一个实例。其中,在ServletConfig对象中还隐藏一个ServletContext实例对象,这个ServletContext实例对象就表示了Servlet程序在容器中的上下文环境。
而,service()方法执行的过程:首先由Servlet容器解析请求参数并封装成一个ServletRequest和ServletResponse对象。其中,ServletRequest中封装了当前的Http请求,开发者可以操作ServletRequest对象获取用户的请求数据;ServletResponse封装了当前用户的Http响应,开发者可以操作ServletResponse对象把响应内容发回给用户。Servlet容器把ServletRequest和ServletResponse作为参数传递给了service()方法,通过执行service()方法,实现响应的逻辑,并通过ServletResponse对象返回内容到客户端。
最后,如果关闭Servlet容器时,这个时候,Servlet容器就会根据契约,调用destroy()方法,该方法一般都用来编写一些释放资源的逻辑。
4、总结MVC设计模式的特点
MVC模式的主要特点包括:
(1)分离关注点:MVC将复杂的应用拆分成三个独立的模块,每个模块有明确的职责和关注点,实现了业务逻辑、数据展示和用户交互的分离,从而使得每个模块都能够独立进行修改和扩展,提高了应用的可维护性和可扩展性。
(2)低耦合:MVC模式通过定义规范的接口和通信方式来进行模块之间的通信,从而将它们解耦,减少相互依赖,让应用更加灵活、可重用和可测试。
(3)增强代码的可重用性:由于每个模块都有明确的职责和接口,使得这些模块可以在不同的应用中被重复使用和组合,减少了重复编写代码的工作量。
(4)分层:MVC模式中每个模块都是一个独立的层,通过分层将应用进行了抽象,使得扩展和维护都更容易。
总之,MVC设计模式通过将复杂的应用划分为三个独立的模块,实现了业务逻辑、数据展示和用户交互的分离,有效地提高了应用的可维护性和可扩展性。
5、实验学习心得
| 成员 | 学习心得 |
|---|---|
| 王*润 | 本次实验中,我深刻理解了MVC软件设计模式,练习UML建模技术,练习并掌握了JSP+JavaBean+Servlet技术实现的MVC设计模式。通过团队内部交流完成软件开发过程,解决遇到的问题,感受团队协作的魅力。 |
| 王* | 本次实验中,我理解了MVC软件设计模式;练习并掌握了JSP+JavaBean+Servlet技术实现的MVC设计模式;在实现项目的过程中体会到了团队协作的重要性,加深了自己对程序的理解。 |
| 杜* | 通过本次实验,我掌握了servlet技术的工作原理及MVC设计模式的特点,实验过程中遇到了很多问题,最后通过查阅资料和请教团队成员一一解决,提高了软件开发能力和团队协作能力。 |


浙公网安备 33010602011771号