Servlet

一、Servlet简介

什么是Servlet

Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口):

  1. servlet接收响应请求
  2. filter过滤器
  3. listener监听器

用来处理客户端请求、响应给浏览器的动态资源。

servlet的实质就是java代码,通过java的API动态的向客户端输出内容。以后写的程序就不在是在本地执行了。而是编译成字节码,放到服务器上来去执行。

编写程序时, 不需要有main函数了。因为写完后,就把编写的程序编译成字节码,放到服务器上面。当前发送就一个请求的时候,服务器就会按照一定规则调用编写的代码。

Servlet快速入门

  1. 创建一个web工程
  2. 在src下创建一个包名称为com.myxq.servlet
  3. 在创建的servlet包当中创建一个class文件起名为FirstServlet
  4. 进入该class实现一个Servlet接口,实现它未实现的方法
    1. 重点看service方法
    2. 在该方法当中写入一句话进行输出
  5. 在web.xml当中进行配置
// Servlet 是sun公司提供一套规范(接口),要想用就必须遵循这套规范(实现接口)
public class FirstServlet implements Servlet {
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("Hello Servlet");
    }

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

web.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         id="WebApp_ID" version="3.0">
    <absolute-ordering/>
    <display-name>servlet</display-name>

    <!--配置Servlet-->
    <servlet>
        <servlet-name>myServlet</servlet-name><!--自己起的一个名字-->
        <servlet-class>com.study.servlet.FirstServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>myServlet</servlet-name><!--必须和上面自己起的名字相同-->
        <url-pattern>/firstServlet</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

生命周期

Servlet什么时候被创建

  1. 默认情况下第一次访问的时候创建
  2. 可以通过配置文件设置服务器启动的时候就创建

init

  • servlet对象创建的时候调用
  • 默认第一次访问时创建

service

  • 每次请求都会执行一次

destroy

  • servlet对象销毁的时候执行
  • 默认服务器关闭时销毁

load-on-startup

  • <load-on-startup>标签(在项目web.xml中里添加标签)
  • 对象在服务器启动时就创建
  • 值为数字代表优先级,数据越小,优先级越高,不能为负数。
// Servlet 是sun公司提供一套规范(接口),要想用就必须遵循这套规范(实现接口)
public class FirstServlet implements Servlet {
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("Hello Servlet");
        System.out.println("每次请求都会执行一次");
    }

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("servlet对象创建的时候调用,默认第一次访问时创建");
    }

    @Override
    public void destroy() {
        System.out.println("servlet对象销毁的时候执行,默认服务器关闭时销毁");
    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public String getServletInfo() {
        return null;
    }
}

二、Servlet配置信息

标签 init-params

初始化参数,在项目web.xml中里添加该标签

<init-name>名称</init-name>
<init-value>值</init-value>

通过config参数,可以

  • 获得该servlert的配置信息
  • 获得web.xml当中参数
  • 初始化参数
  • 获取servletContext对象

标签 url-patten

完全匹配

<url-pattern>/firstServlet</url-pattern>

目录匹配

<url-pattern>/my/xq/*</url-pattern>

扩展名匹配

<url-pattern>*.myxq</url-pattern>

缺省Servlet

访问的资源不存在时,就会找缺省的地址

<url-patten>/</url-patten>

全局Web.xml

  • 对于部署在服务器上的所有应用都有效
  • 先到自己工程当中找web.xml配置
  • 再到全局web.xml当中去找配置
  • 如果两个当中有相同的配置,自己当中配置的内容会生效

静态资源加载过程

  • 在path后面写的静态资源名称index.html或者是其它的.html它都是会找ur-patten当中有没有匹配的内容
  • 如果有,就加载对应的servlet,如果没有就到自己配置当中找缺省的url-patten
  • 如果自己配置文件当中没有缺省的,就会找全局配置缺省的url-patten
  • 在全局配置当中有一个缺省的url-patten 对应的是default的Servlet
  • defaultServlet内部会到当前访问的工程根目录当中去找对应的名称的静态资源,如果有,就把里面的内容逐行读出。响应给浏览器。
  • 如果没有,就会报404错误

欢迎页面

Welcome-file-list 标签

  • 不写任何资源名称的时候,会访问欢迎页面
  • 默认从上往下找
<welcome-file-list>
	<welcome-file>index.html</welcome-file>
	<welcome-file>index.htm</welcome-file>
	<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
posted @ 2019-03-31 20:48  Lomen~  阅读(551)  评论(0编辑  收藏  举报