03006_Servlet简介

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>
原文地址:https://www.cnblogs.com/gzdlh/p/8182234.html