Servlet初步认识
JavaWeb
Javaweb应用是由一组servlet、HTML 页面、类、以及其他可以被绑定的资源构成,它可以在各种供应商提供的实现Servlet规范的Servlet容器中运行。
一个JavaWeb项目的运行流程如下:
其中就涉及到了Servlet容器和Servlet,下面分别介绍一下Servlet容器和Servlet。
Servlet容器
Servlet容器为JavaWeb应用提供运行时环境,它负责管理Servlet和JSP的生命周期,以及管理他们的共享数据,也称为Javaweb应用容器。
我们开发常用到的Servlet容器是Tomcat。
Tomcat是一个免费的开放源代码的Servlet容器。
Servlet
Servlet容器负责Servlet和客户的通信以及调用Servlet的方法,Servlet和客户的通信采用“请求/响应”的模式。
Servlet可以完成如下功能:
1.创建并返回基于客户请求的动态HTML页面
2.创建可嵌入到现有HTML页面的部分HTML页面
3.与其他服务器资源进行通信
Servlet本质是一个类,是运行在服务器上的java类。Servlet需要在web.xml中进行配置和映射
<!--配置和映射Servlet-->
<servlet>
<!-- Servlet注册的名字 -->
<servlet-name>helloServlet</servlet-name>
<!--Servlet全类名-->
<servlet-class>com.ouc.javaweb.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<!-- 需要和某一个Servlet节点的servlet-name子节点的文本节点一致 -->
<servlet-name>helloServlet</servlet-name>
<!--具体访问路径,'/'代表当前路径的根目录-->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
同一个Servlet可以被映射到多个URL上,即一个servlet可以由多个servlet-mapping与之匹配。
<!--配置和映射Servlet-->
<servlet>
<!-- Servlet注册的名字 -->
<servlet-name>helloServlet</servlet-name>
<!--Servlet全类名-->
<servlet-class>com.ouc.javaweb.HelloServlet</servlet-class>
<!--可以指定Servlet被创建的时机-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<!-- 需要和某一个Servlet节点的servlet-name子节点的文本节点一致 -->
<servlet-name>helloServlet</servlet-name>
<!--具体访问路径,'/'代表当前路径的根目录-->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<servlet-mapping>
<!-- 需要和某一个Servlet节点的servlet-name子节点的文本节点一致 -->
<servlet-name>helloServlet</servlet-name>
<!--具体访问路径,'/'代表当前路径的根目录-->
<url-pattern>/hello2</url-pattern>
</servlet-mapping>
映射路径:
在Servlet映射到的URL中也可以使用*通配符,但是只能以两种固定的格式:
一种格式是“*.扩展名”,另一种是"/ *",但是既带/又带扩展名的不合法。
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
Servlet生命周期方法
Servlet生命周期方法都是由Servlet容器负责调用的。
(1)init方法:只被调用一次,创建好实例后,立即被调用,用于初始化当前Servlet
(2)service方法:被多次调用,每次请求都会调用service方法,实际用于响应请求的。
(3)destroy:只调用一次,在当前Servlet所在的web应用被卸载前调用,用于释放当前Servlet所占用的资源。