202306-人民当家作组 实验五 软件开发案例(2)(团队作业)

rmdjzz / 2023-05-13 / 原文

项目 内容
课程班级博客链接 2020级卓越工程师班
这个作业要求链接 实验五 软件开发案例(2)
团队名称 人民当家作组
团队的课程学习目标 (1)理解MVC软件设计模式;
(2)练习并掌握JSP+JavaBean+Servlet技术实现的MVC设计模式;
(3)练习UML建模技术;
这个作业在哪些方面帮助团队实现学习目标 (1)学习和巩固软件开发相关知识
(2)掌握Github协作开发程序的操作方法
(3)提高阅读程序能力;
团队博客链接 人民当家作组

任务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,测试运行学生信息的增加、更新、删除、显示等操作。

显示:

增加:


更新:


删除:


任务2:学生信息管理软件增量开发

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



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


(3)将任务1与任务2的完成的学生信息管理软件源码上传到团队github仓库。

团队Github仓库

任务3

记录完成《实验五 软件开发案例(2)团队作业》各项任务实际花费的时间和成员分工;

任务内容 预计花费时间 实际花费时间
在MySQL中创建数据库:students 2 1
在students数据库中创建学生信息表:student 3 5
创建Web项目并在项目的src包中创建包model、control、在WebRoot下创建JSP文件夹 20 30
在项目中添加MySQL数据库驱动包 2 2
在src包中创建entity包存放实体类,创建实体类Student.java 2 4
在src包中创建dbutil包存放数据库连接工具类Dbconn.java 2 3
分别对案例中四个模块的M、V、C层进行编码,并在项目中的WebRoot/WEB-INF/webWeb.xml中配置control包的6个Servelet控制器。 10 20
将项目部署在Tomcat服务器,在浏览器输入网址,测试运行学生信息的增加、更新、删除、显示等操作。 50 120
为案例软件开发一个新功能,可将excel文件的学生信息批量导入数据库。 30 60
在项目的WebRoot文件夹下创建一个upload文件夹用于存放用户上传的文件,增加学生信息字段 60 180
将任务1与任务2的完成的学生信息管理软件源码上传到团队github仓库。 5 15
总结Servlet技术的工作原理 15 25
总结MVC设计模式的特点 10 20
每位团队成员总结 10 20
成员 分工
美合日** tomcat部署以及完成增量开发
郭思** Java web项目创建以及在项目中导入包
古丽努** 运行调试以及博客编写

总结Servlet技术的工作原理


Servlet是运行在Servlet容器中的,由Servlet容器来负责,Servlet实例的查找、创建及整个生命周期的管理。
Servlet生命周期:
类装载及实例的创建阶段:
默认情况下,servlet实例是在接受第一次请求时进行创建并且以后的请求进行复用(单例),如果servlet需要进行一些复杂的操作,需在初始化时就完成eg:打开文件、初始化网络连接,可以配置在服务器启动时便创建实例,具体配置方法为在声明servlet标签中添加
/标签。

初始化init(ServletConfig)
一旦Servlet实例被创建,将会调用Servlet的init方法,同事传入ServletConfig实例,传入Servlet的相关配置信息,init方法在整个Servlet声明周期中只会被调用一次。

服务Service(HttpServletRequest request HttpServletResponse response)
为提高效率,Servlet规范要求一个Servlet实例必须能同时服务于多个客户端请求,即Service()方法运行在多线程的环境下(每一个请求在Servlet容器中都会产生一个线程来调用Service方法,但需要注意每个线程也共享Servlet对象的成员变量),Servlet开发者必须保证该方法的线程是安全的。另外HttpServletRequest对象封装的事用户请求的信息,此对象其他相应的方法获取封装的信息,用此对象可获得用户提交的信息,HttpServletResponse对象是用来响应用户的请求,用此对象可获得用户想要得到的信息。

销毁destory()
服务器关闭时会调用destory方法,销毁Servlet实例。当Servlet容器将决定结束某个Servlet时,将会调用destory()方法,在destory方法中释放资源,一旦destory方法被调用Servlet容器将不会再发送任何请求给这个实例,若Servlet容器再次使用该Servlet实例,需要重新实例化该Servlet实例。

Web Client 向Servlet容器(Tomcat)发出Http请求;

Servlet容器接收Web Client的请求;

Servlet容器创建一个HttpRequest对象,将Web Client请求的信息封装到这个对象中;

Servlet容器创建一个HttpResponse对象;

Servlet容器调用HttpServlet对象的service方法,把HttpRequest对象与HttpResponse对象作为参数传给 HttpServlet对象;

HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息;

HttpServlet调用HttpResponse对象的有关方法,生成响应数据;

Servlet容器把HttpServlet的响应结果传给Web Client;

MVC的优点:

1.耦合性低

视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。

2.重用性高

MVC模式允许使用各种不同样式的视图来访问同一个服务器端的代码,因为多个视图能共享一个模型,它包括任何WEB(HTTP)浏览器或者无线浏览器(wap),比如,用户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式是一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。

3.部署快,生命周期成本低

MVC使开发和维护用户接口的技术含量降低。使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。

4.可维护性高

分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。

每位团队成员总结实验学习心得。

古丽努尔.开萨尔:

在本次实验中我负责了测试运行学生信息的增加、更新、删除、显示等操作,通过反反复复的测试更熟悉的掌握了MySQL数据库的操作,理解了MVC软件设计模式的特点以及Servlet技术的工作原理,对博客的撰写也比较熟悉了。

郭思彤:

在本次实验我负责了Java web项目创建以及在项目中导入包,在导入包时花费的时间比较长,代码老是报错,后来查资料,反复改代码以后终于成功了,巩固了以前所学过的专业知识,深刻意识到要想做出一个好的项目就要做到多方面知识的相结合。

美合日阿依.麦麦提敏:

通过本次实验,我对于MVC软件设计模式有了更深的了解和掌握,软件的熟悉程度和环境配置能力也大大提高了,项目初期出现了不少错误,通过上网查资料,请教同学等方法也逐步解决了这些问题。