5.Servlet

一、Servlet快速入门

1.创建web项目,导入Servlet依赖坐标(scope范围为provided因为上传后tomcat也有这个,可能会冲突)pom.xml


      javax.servlet
      javax.servlet-api
      3.1.0
      provided

2.创建:定义一个类,实现Servlet接口,并重写接口中所有方法,并在service方法中输入一句话(在java文件下创建com.itheima.web.ServletDemo1)

3.配置:在类上面使用@WebServlet注解配置该Servlet的访问路径 (只演示了service方法)

package com.itheima.servlet;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;

@WebServlet("/demo1")
public class ServletDemo1 implements Servlet {
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("servlet hello world~");
    }

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

    }

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

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

    @Override
    public void destroy() {

    }
}

4.右键:Run Maven/tomcat7:run运行项目,访问路径:http://localhost:8080/web-demo/demo1

二、Servlet的执行流程

1.Servlet由谁创建?Servlet方法由谁调用?

答:Servlet由web服务器创建,Servlet方法由web服务器调用。

2.服务器怎么知道Servlet中一定有servlet方法》

答:因为我们自定义的Servlet,必须实现Servlet接口并复写其方法,而Servlet接口中有service方法

三、Servlet生命周期

@WebServlet(urlPatterns=”/demo”, loadOnStartup = 1) 负整数:第一次被访问时创建Servlet对象。0或正整数:服务器启动时创建Servlet对象,数字越小优先级越高

1.加载和实例化:默认情况下,当Servlet第一次被访问时,由容器创建Servlet对象

2.初始化:在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象,完成一些如加载配置文件、创建连接等初始化的工作。该方法只调用一次。

3.请求处理:每次请求Servlet时,Servlet容器都会调用Servlet的service()方法对请求进行处理。

4.服务终止:当容器需要释放内存或者容器关闭时调用destory()方法完成资源的释放,该实例会被垃圾回收。

方法:getServletInfo返回提示信息,作者没什么用一般返回null或者空字符串

方法:getServiceconfig()方法暂时用不到,后面用到了说,就是要用config

package com.itheima.servlet;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;

@WebServlet(urlPatterns = "/demo2",loadOnStartup = 1)
public class ServletDemo2 implements Servlet {

    /*初始化方法
    * 1. 调用时机:默认情况下,Servlet被第一次访问,调用
    * 2. 调用次数:1次
    * */
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("哈哈哈");
    }

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

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("hello world");
    }

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

//    销毁方法:内存释放,被调用一次
    @Override
    public void destroy() {

    }
}

四、Servlet体系结构

5.Servlet
package com.itheima.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/demo3")
public class ServletDemo3 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("get....");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("post...");
    }
}

五、Servlet urlPattern配置

1.Servlet 要想被访问,必须配置其访问路径(urlPattern)

2.一个Servlet,可以配置多个 urlPattern

@WebServlet(urlPattern = {“/demo1″,”/demo2”})

3.urlPattern 配置规则

(1)精准匹配 (2)目录匹配 (3)扩展名匹配 (4)任意匹配

5.Servlet
package com.itheima.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * urlPattern:一个Servlet可以配置多个访问路径
 */

@WebServlet(urlPatterns = {"/demo3","/demo4"})
public class ServletDemo3 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("demo3 get...");
    }
}

六、XML配置方式编写 Servlet

1.Servlet从3.0之后开始支持注解配置,3.0版本之前只支持xml配置文件的配置方式 了解

步骤:

(1)编写Servlet类

(2)在web.xml中配置该Servlet

ServletDemo4.java

package com.itheima.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class ServletDemo4 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("demo4 .. get");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }
}

web.xml


  Archetype Created Web Application

    demo4
    com.itheima.servlet.ServletDemo4

    demo4
    /demo4

Original: https://blog.csdn.net/m0_61927991/article/details/127802617
Author: 代码界小菜鸟
Title: 5.Servlet

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/660733/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球