侧边栏壁纸
博主头像
老十三

敬年少热诚!

  • 累计撰写 31 篇文章
  • 累计创建 36 个标签
  • 累计收到 8 条评论

目 录CONTENT

文章目录

Servlet(一)

老十三
2022-03-18 / 0 评论 / 92 点赞 / 1,083 阅读 / 3,179 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-03-25,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Servlet(一)

Servlet概述

  • Servlet

    Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,是用Java编写的服务器端程序,是运行在服务端(例如tomcat)的Java小程序,由sun公司提供一整套规范,它也指动态资源。

    作为来自Web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库或应用程序之间的中间层,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。

  • Servlet的作用

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

    servlet的实质就是java代码,通过java的API动态的向客户端输出内容

  • servlet与普通的java程序的区别

    必须实现servlet接口

    必须在servlet容器(例如服务器tomcat)中运行

    servlet程序可以接收用户请求参数以及向浏览器输出数据


Servlet案例

需求:在IDEA编写Servlet,发布到Tomcat,在浏览器输入路径请求,控制台打印hello world...

配置文件方式实现

步骤:

  • 创建web工程
  • 创建一个类实现Servlet接口
  • 在web.xml配置servlet
  • 在tset01包下创建一个类实现Servlet接口:

    package test01;
    
    import javax.servlet.*;
    import java.io.IOException;
    
    public class ServletDemo01 implements Servlet {
        @Override
        //服务方法: 处理请求
        //这里只实现service方法,来实现需求即控制台打印hello world...
        public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
            System.out.println("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() {
    
        }
    }
    
  • web.xml配置(该文件在web/WEB-INF文件夹下):

    <?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_3_1.xsd"
             version="3.1">
    
        <!--配置Servlet-->
        <servlet>
            <!--servlet-name: 名字随便取,一般就是类名-->
            <servlet-name>ServletDemo01</servlet-name>
            <!--servlet-class:Servlet这个类的全限定名-->
            <servlet-class>test01.ServletDemo01</servlet-class>
        </servlet>
        <servlet-mapping>
            <!--servlet-name: 必须和servlet标签里面的servlet-name一样-->
            <servlet-name>ServletDemo01</servlet-name>
            <!--url-pattern: 配置访问的路径-->
            <url-pattern>/demo01</url-pattern>
        </servlet-mapping>
    </web-app>
    
  • 发布项目,浏览器跳转到welcome页面,此时我们访问/demo01路径,可以看到控制台输出了hello world...

    image-20220318192643186

    image-20220318192735291


注解方式实现

步骤:

  • 创建web工程

  • 创建一个类实现Servlet接口

  • 在实现类上面添加@WebServlet(“访问的路径”)

  • 在test02包下创建一个类实现Servlet接口并添加注解:

    package test02;
    
    import javax.servlet.*;
    import javax.servlet.annotation.WebServlet;
    import java.io.IOException;
    
    @WebServlet("/demo02")
    public class ServletDemo02 implements Servlet{
    
        @Override
        public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
            System.out.println("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() {
    
        }
    }
    
  • 发布项目,浏览器跳转到welcome页面,此时我们访问/demo02路径,可以看到控制台输出了hello world...

    image-20220318193513088

    image-20220318193600746


案例原理和路径配置

Servlet执行原理

  • 原理图:

    image-20220318203158722

  • 注意:

    • Servlet对象是由服务器创建(反射)
    • request与response对象也是由tomcat服务器创建
    • service()方法也是服务器调用的

Servlet路径的配置url-pattern

url-pattern配置方式共有三种:

  • 完全路径匹配:以/开始

    注:访问的路径要严格遵守配置路径

    例如:配置了/demo01 	请求的时候必须是:/demo01  
    
  • 目录匹配:以/开始需要以*结束

    注: Servlet里面用的不多,但是过滤器里面通常就使用目录匹配

    例如:
    配置了/* 	 访问:/a,/aa,/aaa
    配置了/aa/*	 访问:/aa/b,/aa/cc
    
  • 扩展名匹配:以*开始

    注:不能以/开始

    例如:配置了*.action  	访问:aa.action,bb.action,c.action
    错误写法:/*.do,不可以写:*.jsp,*.html
    
  • 注意的地方:

    • 一个路径只能对应一个servlet,但是一个servlet可以有多个路径

    • tomcat获得匹配路径时,优先级顺序:完全路径匹配 > 目录匹配 > 扩展名匹配

    • 路径有多种方式, 一般用完全路径匹配


92

评论区