Servlet 的工作原理
Servlet接口定义了Servlet与servlet容器之间的契约。这个契约是:Servlet容器将Servlet类载入内存,并产生Servlet实例和调用它具体的方法。但是要注意的是,在一个应用程序中,每种Servlet类型只能有一个实例。
用户请求致使Servlet容器调用Servlet的Service()方法,并传入一个ServletRequest对象和一个ServletResponse对象。ServletRequest对象和ServletResponse对象都是由Servlet容器(例如TomCat)封装好的,并不需要程序员去实现,程序员可以直接使用这两个对象。
ServletRequest中封装了当前的Http请求,因此,开发人员不必解析和操作原始的Http数据。ServletResponse表示当前用户的Http响应,程序员只需直接操作ServletResponse对象就能把响应轻松的发回给用户。
对于每一个应用程序,Servlet容器还会创建一个ServletContext对象。这个对象中封装了上下文(应用程序)的环境详情。每个应用程序只有一个ServletContext。每个Servlet对象也都有一个封装Servlet配置的ServletConfig对象。
5 Maven高级
5.1 分模块设计与开发
将一个完整的项目按照功能拆分成若干个子模块,使用时只需通过Maven引入依赖即可。方便项目的管理维护、扩展,也方便模块间的相互调用,资源共享。
注意事项:
分模块设计不是先将工程开发完毕,然后进行拆分。而是需要先针对模块功能进行设计,再进行编码。
5.2 继承与聚合
继承:继承描述的是两个父子工程的关系,与java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承和传递。如在SpringBoot工程的xml文件中配置了spring-boot-starter-parent父工程。
聚合:将多个模块组织成一个整体,同时进行项目的构建。一个不具有业务功能的"空工程"(只有一个pom文件的父工程)。在项目构建时,聚合工程中所包含的模块会根据它们之间的依赖关系设置构建顺序
总结继承与聚合的作用:
继承用于统一管理依赖,简化依赖配置。
聚合用于快速构建项目。
5.2.1 父工程
在每个功能子模块中可能会引入相同的依赖,管理起来比较麻烦,所以我们一般会为子模块创建一个父工程,每个子模块都会继承依赖于该父工程,由于Maven的依赖传递,父工程中的依赖在子模块中也能使用。
作用:统一管理依赖,简化项目依赖配置。
实现:<parent>...</parent>
1.首先创建父工程模块如springcloud-demo,设置打包方为pom(默认jar)。
jar:普通模块打包,springboot项目基本都是jar包(内嵌Tomcat运行)。
war:基于servlet和原始的springMVC开发的web程序打包,需要部署在外部的Tomcat服务器上运行。
pom:父工程或聚合工程,该模块不写代码,仅仅用于的统一管理。
2.在父工程下创建子工程。然后在Maven文件中指定父工程,当然如果在创建子模块的时候直接指定父工程就不用写了。
3.在父工程的pom文件中通过<dependencies>来统一管理子工程的直接依赖。可以在此标签下引入子工程共同的依赖。在此标签下引入的依赖,所有子工程都可以使用。
4.在父工程的pom文件中通过<dependencyManagement>来统一管理依赖版本。在该标签下引入统一的依赖。在子工程中添加相关依赖,不用指定版本号。变更依赖版本时,只需在父工程中统一修改即可。如果子工程中添加的依赖指定了版本号,那就以子工程的为准。
5.3 Maven的远程仓库配置
5.3.1 远程仓库介绍
我们使用的依赖都是先存储在本地仓库的,那本地仓库的资源从哪下载这些依赖呢?或者我们开发了一些Maven项目,怎么分享给其他人使用呢?
这时就需要使用到Maven的远程仓库了,该远程仓库架设在局域网内的仓库,用来代理位于外部的中央仓库,用于解决团队内部的资源共享与资源同步问题。远程仓库一般由公司自己搭建,我们只需要会使用就可以。
5.3.2 远程仓库配置
资源的上传我们需要直到上传到哪个远程仓库的什么地方,还需要访问权限。所以我们要做的配置就是:配置远程仓库地址和上传位置,以及配置仓库的用户名和密码。
首先配置远程仓库的地址,相当于就是配置远程仓库的镜像地址,跟之前配置阿里云镜像地址一样,在settings.xml中替换mirror以及profiles的配置,让RELEASE和SNAPSHOT仓库都可以使用:
在Maven工程中的pom文件配置上传(发布)地址:
项目版本:每个Maven项目的pom文件中<version>1.0-SNAPSHOT</version>就是用来指定项目版本的。不指定的话默认是RELEASE版本,上传时存储在RELEASE仓库。
RELEASE:发行版本,功能趋于稳定,可以用于发行的版本,存储在远程仓库的RELEASE仓库中。
SNAPSHOT:快照版本,功能不稳定,尚处于开发中的版本,存储在远程仓库的SNAPSHOT仓库中。
最后配置访问远程仓库的用户名和密码,在settings.xml的servers标签中配置server,包含RELEASE仓库和SNAPSHOT仓库的访问:
5.3.3 资源上传和下载
通过远程仓库的配置后就可以进行资源的上传和下载了。
资源上传只需执行Maven项目生命周期的发布阶段就可以了。
资源下载就是我们平时写依赖坐标,然后刷新下载引入依赖资源的操作。
课程设计开发