认识Servlet
Servlet简介
-
Servlet
是Java提供的一门动态web资源开发技术. -
Servlet
是JavaEE规范之一,其实就是一个接口,将来我们需要定义Servlet类实现Servlet接口,并由web服务器运行Servlet.
Servlet执行流程
-
Servlet
由谁创建?Servlet
由谁调用?Servlet
由web服务器创建,servlet
方法由web服务器调用.
-
服务器为什么知道
Servlet
中由service
方法?- 因为我们自定义的Servlet,必须实现
Servlet
接口并复写其方法,而接口中由service
方法
- 因为我们自定义的Servlet,必须实现
Servlet生命周期
- 对象的生命周期指一个对象从创建到被销毁的过程
Servlet
运行在Servlet容器(web服务器)
时,其生命周期由容器来管理,分为四个阶段加载和实例化
:默认情况下,当Servlet第一次被访问时,由容器来创建Servlet对象初始化
:在Servlet被实例化后,容器会调用Servlet的init()方法对Servlet对象进行初始化,完成一些配置文件及创建连接等初始化工作,方法只调用一次.请求处理
:每次请求Servlet时,Servlet容器都会调用Servlet的service方法对请求进行处理服务终止
:当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destory()方法完成资源的释放.在destory()方法调用之后,Servlet示例会被释放,并被Java的垃圾收集器回收
@WebServlet(value = "URL",loadOnStartup = 1)
Servlet方法介绍
//初始化方法在Servlet被创建时执行,只执行一次
void init(ServletyConfig config)
//提供服务的方法,每次Servlet被访问,都会调用该方法
void service(ServletRequest req,ServletResponse res)
//销毁方法,当Servlet被销毁时,调用该方法.在内存释放或服务器关闭时销毁Servlet
void destroy()
//获取ServletConfig对象
ServletConfig getServletConfig()
//获取Servlet信息
String getServletInfo()
Servlet体系结构
接口或抽象类名 | 描述 |
---|---|
Servlet | Servlet体系根接口 |
GenericServlet | Servlet抽象实现类 |
HttpServlet | 对Http协议封装的Servlet实现类 |
- HttpServlet使用步骤
- 继承HttpServlet
- 重写doGet(),doPost方法
- HttpServlet原理
- 获取请求方式,并根据请求方式的不同调用不同的doXxx方法
Servlet的urlPattern配置
Servlet
想要被访问必须配置urlPattern
(访问路径)
-
一个Servlet可以配置多个
urlPattern
@WebServlet(urlPattern={url1,url2}) //url1,url2均为访问路径
-
urlPattern配置规则
-
精确匹配
@WebServlet(urlPattern="/select/demo")
则需要在服务器的
/select/demo
才可以访问到 -
目录匹配
@WebServlet(urlPattern="/select/*")
则在
/select
目录下什么路径都可以例如/select/aaaa
-
扩展名匹配
@WebServlet(urlPattern="*.do")//此处不需要"/"
则只要带
.do
扩展名即可 -
任意匹配
@WebServlet(urlPattern="/") //或者 @WebServlet(urlPattern="/*")
则任意路径均可访问到
"/"
与"/*"
的区别,当配置了"/"
,时会覆盖掉Tomcat中的DefaultServlet
,当其他的url-Pattern
都匹配不上时都会走这个Servlet
- 当我们配置了"/*",意味着匹配任意访问路径
-
XML配置Servlet
-
步骤
-
编写Servlet类
-
在web.xml中配置Servlet
<servlet> <servlet-name>{与servlet-mapping的映射名}</servlet-name> <servlet-class>{类路径}</servlet-class> </servlet> <servlet-mapping> <servlet-name>{与servlet的映射名}</servlet-name> <url-pattern>{urlPattern配置}</url-pattern> </servlet-mapping>
-