关于Servlet:
在MVC建构中Servlet充当着控制器使用。Servlet被称为服务端小程序。用于处理客户端的请求及其响应。
Servlet是一个特殊的java类,这个类必须继承至HttpServlet,Servlet提供了不同的方法来响应客户端的请求。
---doGet:用于客户端的get请求
---doPost:用于客户端的post请求
---doPut:用于响应客户端的put请求
---doDelect:用于响应客户端的delect请求。
但事实上,客户端的请求只有get与post,Servlet需要解决那种请求就去重写那种方法。
但是大部分时候Servlet对用户请求处理多是一样的,所以我们,我们可以直接重写service()方法来代替前面几个方法
除此之外httpServlet还包含了一下两个方法:
--init(ServletConfig config):创建Servlet实例时,调用该方法来初始化Servlet资源
--destroy:销毁Serv;et实例时,自动调用该方法的回收机制
关于Servlet的配置:
我们想要Servlet响应客户端请求,就必须将Servlet编译之后产生的.Class文件放在WEB-INF/classes路径,除此之外我们还需将Servlet配置在Web应用当中
- 在Web.xml中进行配置
- 在Servlet中添加注解( Servlet 3 开始有的)
第一种:进行以下两个步骤
- 配置Servlet的名字:对应web.xml文件中的<servlet/>元素。
<servlet>
<servlet-name>firstservlet</servlet-name>
<servlet-class>database.data</servlet-class>
</servlet>
- 配置Servlet的URL:对应web.xml文件当中的<servlet-mapping/>元素。
<servlet-mapping>
<servlet-name>firstservlet</servlet-name>
<url-pattern></url-pattern>
</servlet-mapping>
第二种:
开发Servlet类时使用@WebServlet注释修饰该类,使用@WebServlet可以指定如下的属性:
属性 是否必要 说明
asyncSupported 否 指定Servlet是否支持异步操作模式
DisplayName 否 指定Servlet是否显示名称
InitParams 否 用于该Servlet的参数配置
LoadOnStartup 否 用于将Servlet配置成load-on-startup的Servlet
Name 否 用于指明该Servlet的名称
urlPatterns/value 是 指定Servlet的url的
如果使用注解来配置Servlet有两点要注意:
---不要在web.xml文件的根元素(<web-app.../>)中指出metadata-complete=”true”。
---不要在web.xml文件当中配置该Servlet
下面我们来讲解JSP/Servlet的声明周期:
JSP页面通过Web容器编译生成对应的Servlet,当Servlet的创建与销毁等多不是Web容器进行控制的。
创建Servlet实例有以下两个时机:
- 用户第一次请求某个Servlet时,系统创建该实例(大部分Servlet多是这个时间段创建的)
- Web应用程序启动的时候就创建了Servlet实例,及load-on-startup Servlet
Servlet的生命周期:
- 创建Servlet实例
- Web容器调用Servlet的init方法,对Servlet进行初始化
- Servlet初始化后,将会一直存在容器当中,用于响应用户的请求
- Web容器决定销毁Servlet时,先调用Servlet的destory方法,经常是关闭Web应用的时候销毁