Serlvet入门
Serlvet是用来处理客户端请求并产生动态页面内容的JAVA类。
所有的Serlvet都必须直接或者间接实现javax.serlvet.Servlet.
有两种间接的方式
- 继承javax.serlvet.GenericServlet(实现了Servlet和ServletConfig接口),通过此方法能够简化程序代码,但需要实现service()方法
- 继承javax.servlet.http.HTTPServlet(继承了GenericServlet类)为实际开发中大多数Servlet处理HTTP请求的应用灵活的方法
总结:
- a.Serlvet使用多线程可以并行的为多个请求服务。
- b.Serlvet应用是通过监听器、过滤器来实现。
- c. web.xml的加载顺序context-param->listener(监听器)->filter(过滤器)->servlet
- d.监听器可以对application、session、request创建或者消亡时做属性操作;
过滤器可以用来转换HTTP请求,响应和头信息 - f.在Structs2.0 中 interceptor:拦截器是对过滤器更加细化的应用 (不是在web.xml中配置)
关于Serlvet过滤器
第一部分:过滤器在WEB应用
由filter元素包括 filter-name和filter-class
第二部分:过滤器映射定义
filter-mapping 将过滤器映射到一个或者多个Serlvet或者JSP文件,
也可以采用url-pattern将过滤器映射到任意特征的URL
关于Serlvet监听器
实现 ServletContextListener、HttpSessionListener、ServletRequestListener类分别对 针对于ServletContext、HttpSession、ServletRequest对象的增删修改进行监听。
<listener>
<listener-class>包.类</listener-class>
</listener>
Serlvet的生命周期
Servlet 加载—>实例化—>服务—>销毁。
Servlet是基于 观察者模式设计
主要的方法:init() 、service() 、destory()
总结:
- a.在Serlvet生命周期init()和destory()只会调用一次,每运行一次JSP都会调用一次service()
- b.JSP先解析成Servlet源文件,再被编译成Servlet类文件
SpringMVC处理请求
- Model模型:存取数据
- View视图:展示数据
- Controller控制器:与用户进行交互
- DispatcherServlet 前端控制器:接收用户请求
- HandlerAdapter 处理器适配器:选择合适的处理器,并且调用相应功能处理方法
- ViewResolver 视图解析器
用户发送请求和返回响应的流程
- 发送请求 至DispatcherServlet
- 映射处理器 获取处理器映射至 DispatcherServet
- HandlerAdapter进行处理器适配
- 调用处理器相应功能处理方法
- ViewResolver 接收View 进行视图解析
- Model加入到View 中进行视图渲染
- DispatcherServlet返回响应