02.servlet入门
[TOC]
servlet入门和单列设计模式
1. servlet
概念:运行在服务器端的小程序。
- servlet其实是一个接口,定义了java类如何能够被浏览器访问到的规范。
- 我们定义的servlet类需要实现servlet接口,重写servlet接口中的方法
1.1 创建一个Servlet类的步骤
创建javaEE的工程
定义一个Servlet实现类实现Servlet接口
public class HelloServlet implements Servlet
实现Servlet接口中的所有方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31/**
* @Date 2020/6/16 19:01
* @Version 10.21
* @Author DuanChaojie
*/
public class HelloServlet implements Servlet {
public void init(ServletConfig servletConfig) throws ServletException {
}
public ServletConfig getServletConfig() {
return null;
}
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
}
public String getServletInfo() {
return null;
}
public void destroy() {
}
}配置servlet
- 在web.xml中配置
1 | <servlet> |
1.2.执行原理
- 浏览器发送请求:http://localhost:8080/hello
- 服务器接收到请求后,解析url地址,要去找到对象的servlet,然后执行他的service方法。
- 服务器在加载web.xml的时候,会去解析servlet-mapping中的url-pattern的路径。
- 如果找到的对应的路径,根据路径找到servlet-class的全类名。
- tomcat将当前的class文件加载到内存中,并且创建它的对象。
- 调用servlet中的service方法。
- servlet对象在第一次访问到当前servlet的时候才创建
1.3. servlet的生命周期
1.3.1 init方法
servlet对象被创建的时候,执行init方法。
1 | /* |
对于servlet来说:只会执行一次init()方法。servlet对象被创建的时候执行当前方法==servlet对象是单例的==。多个用户同时访问的时候,拿到的servlet对象只有一个,而且是同一个。
多个用户同时访问一个Servlet的时候,多线程访问同一个service方法。存在线程安全的问题。线程安全问题主要来源于共享数据并且修改数据。所以在servlet中尽量不要定义成员属性。如果定义了,在service中不要去修改它。
1.3.2 service方法:提供服务的方法。
每次访问servlet的时候,service方法就会被调用一次。
1.3.3 destory方法:销毁的方法。
服务器关闭的时候,servlet被销毁。
只有正常关闭服务器的时候,才会执行destory。
destory的方法会在servlet对象被销毁前执行,一般用来释放资源。
1 | //获取servletConfig对象的方法。 |
==以上是servlet3.0以前的规范。==
1.3.4 servlet3.0开发的时候使用注解
Servlet3.0(WEB3.0)算是比较新的Servlet技术了,对应的JavaEE版本是6,目前最新的版本是3.1,对应版本JavaEE7
servlet3.0的配置步骤:
- 1.可以省略web.xml不写。
- 2.定义一个servlet类
- 3.实现servlet接口
- 4.重写方法
- 5.使用注解配置。
1 | ?????? |
1.4 单例设计模式在Java中的应用
- servlet
- 连接池
☆
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Jilfoyle!