jar包介绍


Servlet
分层 | 阐述 |
Model
(模型)
|
它是应用程序的主体部分,主要由以下
2
部分组成:
1.
实体类
Bean
:专门用来存储业务数据的对象,它们通常与数据库中的某
个表对应,例如
User
、
Student
等。
2.
业务处理
Bean
:指
Service
或
Dao
的对象,专门用于处理业务逻辑、数
据库访问。 一个模型可以为多个视图(
View
)提供数据,一套模型
(
Model
)的代码只需写一次就可以被多个视图重用,有效地减少了代码的
重复性,增加了代码的可复用性。
|
View
(视
图)
|
指在应用程序中专门用来与浏览器进行交互,展示数据的资源。在
Web
应用
中,
View
就是我们常说的前台页面,通常由
HTML
、
JSP
、
CSS
、
JavaScript
等组成
|
Controller
(控制
器)
|
通常指的是
Servlet
。它负责将用户的请求交给模型(
Model
)层进行处理,
并将
Model
层处理完成的数据,返回给视图(
View
)渲染并展示给用户。
在这个过程中,
Controller
层一般不会做任何业务处理,它只是
View
(视
图)层和
Model
(模型)层连接的枢纽,负责调度
View
层和
Model
层,将
用户界面和业务逻辑合理的组织在一起,起到控制效果。
|
Servlet 生命周期
对象的生命周期指一个对象从被创建到被销毁的整个过程
Servlet运行在Servlet容器(web服务器)中,其生命周期由容器来管理,分为4个阶段:
1.加载和实例化:默认情况下,当Servlet第一次被访问时,由容器创建Servlet对象
@WebServlet(urlPatterns = "/demo",loadOnStartup = 1)
//配置路径时,配置loadOnStartup,修改Servlet创建的时机,参数为负数和非负数
//1,负整数:第一次被访问时创建Servlet(默认情况)
//2,零或者正整数:服务器启动时创建Servlet对象,数字越小,优先级越高(把创建的时机提前了,把耗时的
//操作提前到服务器启动的时候,用户在访问Servlet耗时更少,更快)
2. 初始化:在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象,完成一些如
加载配置文件、创建连接等初始化的工作。该方法只调用一次
3.请求处理:每次请求Servlet时,Servlet容器都会调用Servlet的service()方法对请求进行处理。
4. 服务终止:当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destroy()方法(只会调用一次)完成资源的释放。在destroy()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾收集器所回收
Servlet方法介绍
前四种以上介绍过,这里不过多赘述,介绍下面两种
getServletConfig()
获取Servlet配置对象
public String getServletInfo(){
return null;
}
getServletInfo()
不常用,主要是获取一些信息,一般写返回空
public String getServletInfo(){
return null;
}
GenericServlet
-
直接编写Servlet,比较复杂,有的方法不一定需要,但是却必须重写,导致大量无用代码生成。
-
构建一个GenericServlet(通用Servlet)抽象类,其中重写所有Servlet接口的方法,并将service方法设置为abstract
我们需要使用Servlet的时候可以继承GenericServlet,减少重写的代码量
同时必须继承service方法实现用户逻辑
-
一般称这种设计模式为适配器设计模式
ServletConfig
-
Servlet的配置信息对象
- 存储了web.xml中的配置信息
- 一个Servlet对应一个ServletConfig对象
- 在Servlet的init函数调用时会传入一个ServletConfig对象
-
注意:以上方法在GenericServlet中可以直接使用this调用,因为GenericServlet实现了ServletConfig接口。
ServletContext
-
Servlet的环境(上下文)对象,在一个webapp中只有一个,也就是说不管几个Servlet对象,它们的ServletContext是共用的。
-
ServletContext在服务器启动时创建,服务器关闭时终止。
ServletContext属于应用域,与其对应的还有请求域,会话域等,在不同的域可以存放一些数据,在对应的域之内均可使用,例如在应用域存放的数据在整个webapp中均可使用。
- HttpServletRequest:获取请求数据
- HttpServletResponse:设置响应数据
Cookie
- Cookie是在浏览器访问web服务器上的某个资源时,由web服务器在响应浏览器时通过响应
- 一旦web浏览器保存了来自于某个服务器的Cookie,那么当浏览器再次访问这个服务器的时
- 浏览器访问服务器的时候,只会携带由当前服务器存储在客户端的cookie;
- Cookie中缓存的数据数据是以键值对形式存储的(name-value)。
- Cookie默认在浏览器关闭之后,就立即实现失效,如果想长期有效,需要设置过期时间
HttpSession
HttpSession request.getSession(); 获得当前会话对象void session.setAttribute([key], [value]); 向会话中保存对象 , 键值对形式Object session.getAttribute([key]); 从会话中获得指定 key 的 value 值void session.removeAttribute([key]); 从会话中删除指定的 key 和它对应的 valueString session.getId(); 获得当前会话的 IDvoid session.setMaxInactiveInterval([ 时间 : 秒 ]); 设置 HttpSession 失效时间 , 单位秒(超时断开登录,会话默认保持时间为30min )void session.invalidate(); 设置当前 Httpsession 立即失效(立即失效 - 比如注销的时候)