1、什么是Servlet
(1)Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求、响应给浏览器的动态资源;
(2)Servlet的实质就是java代码,通过java的API动态的向客户端输出内容;
(3)Servlet规范:包含三个技术点
①Servlet技术;
②filter技术--过滤器;
③listener技术--监听器。
2、Servlet快速入门
(1)实现步骤
①创建类实现Servlet接口;
②覆盖尚未实现的方法---service(专门向客户端提供响应的方法);
1 package com.gzdlh.servlet; 2 import java.io.IOException; 3 4 import javax.servlet.Servlet; 5 import javax.servlet.ServletConfig; 6 import javax.servlet.ServletException; 7 import javax.servlet.ServletRequest; 8 import javax.servlet.ServletResponse; 9 10 public class QuickStartServlet implements Servlet { 11 12 @Override 13 public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { 14 System.out.println("QuickStartServlet running..."); 15 } 16 17 @Override 18 public void destroy() { 19 20 } 21 22 @Override 23 public ServletConfig getServletConfig() { 24 return null; 25 } 26 27 @Override 28 public String getServletInfo() { 29 return null; 30 } 31 32 @Override 33 public void init(ServletConfig arg0) throws ServletException { 34 35 } 36 37 }
③在web.xml进行servlet的配置。
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns="http://java.sun.com/xml/ns/javaee" 4 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 5 id="WebApp_ID" version="2.5"> 6 <display-name>WEB13</display-name> 7 <servlet> 8 <servlet-name>abc</servlet-name> 9 <servlet-class>com.gzdlh.servlet.QuickStartServlet</servlet-class> 10 </servlet> 11 12 <servlet-mapping> 13 <servlet-name>abc</servlet-name> 14 <url-pattern>/quickStartServlet</url-pattern> 15 </servlet-mapping> 16 17 18 19 20 21 <welcome-file-list> 22 <welcome-file>index.html</welcome-file> 23 <welcome-file>index.htm</welcome-file> 24 <welcome-file>index.jsp</welcome-file> 25 <welcome-file>default.html</welcome-file> 26 <welcome-file>default.htm</welcome-file> 27 <welcome-file>default.jsp</welcome-file> 28 </welcome-file-list> 29 </web-app>
(2)在实际开发中,我们不会直接去实现Servlet接口,因为那样需要覆盖的方法太多,我们一般创建类继承HttpServlet,实现步骤:
①创建类继承HttpServlet类;
②覆盖doGet和doPost ;
③在web.xml中进行servlet的配置。
3、Servlet的API
(1)init(ServletConfig config)
①何时执行:servlet对象创建的时候执行;
②ServletConfig : 代表的是该servlet对象的配置信息。
(2)service(ServletRequest request,ServletResponse response)
①何时执行:每次请求都会执行;
②ServletRequest :代表请求 认为ServletRequest 内部封装的是http请求的信息;
③ServletResponse :代表响应 认为要封装的是响应的信息。
(3)destroy()
何时执行:servlet销毁的时候执行。
1 package com.gzdlh.servlet; 2 3 import java.io.IOException; 4 5 import javax.servlet.Servlet; 6 import javax.servlet.ServletConfig; 7 import javax.servlet.ServletException; 8 import javax.servlet.ServletRequest; 9 import javax.servlet.ServletResponse; 10 11 public class QuickStartServlet implements Servlet { 12 13 @Override 14 public void init(ServletConfig arg0) throws ServletException { 15 System.out.println("init running..."); 16 } 17 18 @Override 19 public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { 20 System.out.println("QuickStartServlet running..."); 21 } 22 23 @Override 24 public void destroy() { 25 System.out.println("destroy running..."); 26 } 27 28 @Override 29 public ServletConfig getServletConfig() { 30 return null; 31 } 32 33 @Override 34 public String getServletInfo() { 35 return null; 36 } 37 38 }
运行结果:
4、Servlet的生命周期
(1)Servlet何时创建
默认第一次访问servlet时创建该对象。
(2)Servlet何时销毁
服务器关闭servlet就销毁了。
(3)每次访问必然执行的方法
service(ServletRequest req, ServletResponse res)方法。
5、servlet的执行过程
6、servlet的配置
(1)基本配置
1 <!-- servlet类的配置 --> 2 <servlet> 3 <servlet-name>abc</servlet-name> 4 <servlet-class>com.gzdlh.servlet.QuickStartServlet</servlet-class> 5 <init-param> 6 <param-name>url</param-name> 7 <param-value>jdbc:mysql://mydb</param-value> 8 </init-param> 9 </servlet> 10 11 <!-- servlet的虚拟路径的配置 --> 12 <servlet-mapping> 13 <servlet-name>abc</servlet-name> 14 <url-pattern>/quickStartServlet</url-pattern> 15 </servlet-mapping>
其中url-pattern的配置方式:
①完全匹配:访问的资源与配置的资源完全相同才能访问到;
<url-pattern>/quickStartServlet</url-pattern>
②目录匹配:/虚拟的目录../* *代表任意;
<url-pattern>/aaa/bbb/ccc/*</url-pattern>
③扩展名匹配:*.扩展名,
<url-pattern>*.abcd</url-pattern>
7、服务器启动实例化Servlet配置
(1)Servlet何时创建:默认第一次访问时创建;
(2)为什么是默认?当在servlet的配置时加上一个配置 <load-on-startup>, servlet对象在服务器启动时就创建,数字代表优先级,数字越小,优先级越高。
<load-on-startup>3</load-on-startup>
8、缺省Servlet
(1)可以将url-pattern配置一个/,代表该servlet是缺省的servlet;
(2)什么是缺省的servlet?当你访问资源地址所有的servlet都不匹配时 , 缺省的servlet负责处理;
(3)其实,web应用中所有的资源的响应都是servlet负责,包括静态资源。
9、欢迎页面
在WebContent下配置。
<welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list>