Servlet的使用

目录

一.servlet接口

二.Servlet的使用

三.Servlet生命周期

四.使用便捷类

五.路径通配符


一.servlet接口

Servlet接口,Servlet就是一种实现了Servlet接口的类,它是由web容器负责创建 并调用,用于接收和响应用户的请求.

在 Servlet 接口中定义了 5 个抽象方法,具体如下:

二.Servlet的使用

      第一步:编写一个类,实现Servlet接口

import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;


public class Myservlet implements Servlet {

    /**
     * Servlet实例化后,调用init()方法进行初始化
     * Servlet什么时候进行初始化?
     *     不是服务器一启动就进行实例化,二是第一次请求时,才会进行实例化.
     * init()只执行一次.
     */
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("Servlet初始化了");
        String encoding= servletConfig.getInitParameter("encoding");
        System.out.println(encoding);
    }

    /**
     * service方法调用时需要使用两个参数:ServletRequest和ServletResponse
     *     每一次请求都会创建新的ServletRequest和ServletResponse对象
     *     service()有几次请求就执行几次
     */
    @Override
    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
        //向控制台输出
        System.out.println("hello servlet");//service处理请求比较麻烦,比如我们需要判断用户的请求方式
        //向浏览器输出
        response.getWriter().write("hello service");

    }

    /**
     * Servlet什么销毁?
     *    Web应用停止或者服务器关闭
     *    只执行一次
     */
    @Override
    public void destroy() {

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

       第二步:配置

在 WebContent->WEB-INF,web.xml 文件下添加配置信息
 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <display-name>day33</display-name>
    <welcome-file-list>
        <welcome-file>/login.jsp</welcome-file>
    </welcome-file-list>
    <!--配置servlet信息-->
    <servlet>
        <!--配置servlet的名称,必须唯一-->
        <servlet-name>Myservlet</servlet-name>
        <!--配置servlet的全类名-->
        <servlet-class>servlet快速入门.Myservlet</servlet-class>
        <!--配置初始化参数-->
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
        <!--配置Servlet的加载时机,值时一个正整数,值越小,表示越先被加载,值相同,谁在上面,谁先被加载-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <!--需要和上面的名字一致-->
        <servlet-name>Myservlet</servlet-name>
        <!--配置servlet的请求路径-->
        <url-pattern>/myServlet</url-pattern>
    </servlet-mapping>
</web-app>

       第三步:运行访问

控制台显示:

浏览器显示:

三.Servlet生命周期

 Servlet 生命周期三个阶段

        阶段一:初始化阶段 Servlet 接收到请求后,会先检查内存中是否有该 Servlet 对象,如果有直接使用该 对象,如果没有就创建实例,后调用 init()方法,需要注意,在 Servlet 的整个生命周期 内,它的 init() 方法只会调用一次。

        阶段二:运行阶段 Servlet 生命周期中最主要的阶段,该阶段会为这个请求创建`ServletRequest`对象和 `ServletResponse`对象,然后传递给 service()方法,在整个 Servlet 生命周期内,每一次 访问请求,都会创建新的`ServletRequest`和`ServletResponse`对象。并且调用 service()方 法 。

        阶段三:销毁阶段 Servlet 随着 Web 应用的销毁而销毁,在销毁 Servlet 之前,Servlet 的 destroy() 方 法会被调用,在该方法里面可以进行资源释放操作,destroy()只会被调用一次,需要注 意的是 Servlet 对象一旦被创建就会驻留在内存中,直到服务器关闭。

四.使用便捷类

HttpServlet 类

抽象类,专门用于处理 HTTP 请求的 Servlet
      主要功能 :  1. 根据用户请求方式不同,定义相应的 doXxx()方法处理用户请求。

                         2. 通 过 service() 方 法 将 HTTP 请 求 和 响 应 分 别 转 为 HttpServletRequest 和 HttpServletResponse 类型的对象
      使用步骤: 1. 新建类,基础 HttpServlet

                         2. 重写 doGet、doPost 方法 

                         3. 在 web.xml 文件中配置

      测试 doGet 方法 :

      采用 GET 方式访问`HttpServletDemo`,只需要在地址栏输入 HttpServletDemo 访问地址 即可打印`thisisdoGet!!!`
      测试 doPost 方法 :

      采用POST就必须使用表单了,创建表单提交html文件 ,设置提交数据到`HttpServletDemo`即可.

注意:表单action里的数据.

第二步路径只输入/,action就可以只写/loginServlet了

五.路径通配符

 通配符优先级  有如下映射关系
            Servlet1 映射到 /abc/*

            Servlet2 映射到 /*

            Servlet3 映射到 /abc

            Servlet4 映射到 *.do

当请求 URL 为`/abc/a.html`,“/abc/*”和“/*”都匹配,Servlet1 响应

当请求 URL 为`/abc`时,“/abc/*”和“/abc”都匹配,Servlet3 响应

当请求 URL 为`/abc/a.do`时,“/abc/*”和“*.do”都匹配,Servlet1 响应

当请求 URL 为`/a.do`时,“/*”和“*.do”都匹配,Servlet2 响应

当请求 URL 为`/xxx/yyy/a.do`时,“/*”和“*.do”都匹配,Servlet2 响应
 

六、.默认 Servlet(掌握)

如果每个 Servlet 的映射路径仅仅是一个正斜线(/),那么这个 Servlet 就是当前 Web 应用 的默认 Servlet,默认 Servlet 用于处理其它 Servlet 都不处理的访问请求。

如下配置,Servlet 服务器在接收访问请求时,如果再 web.xml 文件中找不到匹配的 <servlet-mapping>元素的 URL,就会将访问请求交给默认 Servlet 处理 

    <servlet>
        <servlet-name>DefaultServlet</servlet-name>
        <servlet-class>yyy.demo01.DefaultServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>DefaultServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值