今天在公司分享了java web的ppt,把ppt大纲放在这里,希望可以帮助需要的人
servlet容器简介
- 定义
狭义上的,servlet容器为java Web应用提供运行时环境,负责管理servlet和jsp的生命周期,以及他们的共享数据等
广义上的。绝大部分Servlet容器同时也可以作为web server。
以tomcat为例,狭义上它可以分为连接器和servlet容器,容器只负责servlet逻辑,和用户的网络连接交由连接器处理。
广义上我们可以整个把他称为servlet容器,大家视语境来理解含义
- 生命周期图:
客户端把请求交给servlet 容器,容器把相关请求封装成httpServletRequest和httpServletReponse,然后交由特定的servlet处理,调用他的service方法。这个是普遍的流程,当然中间也会被filter截断,这在后续会讲到
- 详细的处理流程(以tomcat为例):
连接器把用户请求数据传给servlet容器,容器从工作线程池中取出一个工作线程。
servlet容器有四个级别的子容器:engine, host, context, servletwapper 每个子容器都有自己对请求的处理过滤逻辑,我们称只为阀(value),一个阀处理完毕,就会处理下一个阀。这些阀组合在一起就像在通过一个管道,我们称只为pipeline,通过完这些内部的阀,我们便可以到我们的web业务项目的控制范围
我们自己的业务项目处理逻辑,系统级别的处理通常会定义在filter里面,这个可以在web.xml里面定义。用户的请求在通过pipeline后,会通过这些filter,filter顺序由filter-mapping在web.xml. filter可以决定是否传给下一个filter,直到servlet。也可以在这个filter就终止传递处理
截取一个servlet的hello world的处理栈信息,大家可以清晰的看到这个过程
- servlet容器中项目的部署的结构:
部署的形式
1 War文件
通过打成war包
2 解压后的目录
相当于把war解压
部署后的目录结构
根目录存放jsp,html类型的文件
WEB-INF 存放发布描述文件web.xml,这里面记载了listener,filter,servlet的信息,以及用到的servletConfig和servletContext环境变量
WEB-INF/classes 存放应用相关的class文件,也就是我们在项目中写的java业务代码
WEB-INF/lib 存放需要的jar包,也就是项目依赖的第三方jar包
开发的目录结构
Src/main/java
Src/main/resources
这两个对应 WEB_INF/classes里面的文件
Src/test/java
Src/test/restources
这两个对应测试用例,不参与项目的真是部署,但在打包时,比如maven package会运行相应的测试用例
Src/main/webapp
这个对应除上述之外文件,如配置文件和静态文件,jsp等。例如webapp/WEB-INFO/web.xml等