一文了解Servlet

这篇具有很好参考价值的文章主要介绍了一文了解Servlet。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、什么是Servlet

  • Servlet是Java提供的一门动态web资源开发技术
  • Servlet是JavaEE规范之一,其实就是一个接口,将来我们需要定义Servlet接口,并由web服务器运行Servlet

2、Servlet快速入门

创建web项目,导入Servlet依赖坐标

<dependencies>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

创建:定义一个类,实现Servlet接口,并重写接口中的所有方法,并在service方法中输入一句话

public class Demo01 implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        
    }
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("hello");
    }
    @Override
    public String getServletInfo() {
        return null;
    }
    @Override
    public void destroy() {
    }
}

配置:在类上实用@WebServlet注解,配置该Servlet的访问路径

@WebServlet("/demo01")

访问:启动Tomcat,浏览器输入URL 访问该Servlet

一文了解Servlet,servlet,hive,hadoop,java

一文了解Servlet,servlet,hive,hadoop,java

3、Servlet生命周期

Servlet生命周期就是Servlet从创建到销毁的过程

一文了解Servlet,servlet,hive,hadoop,java

测试

@WebServlet("/demo01")
public class Demo01 implements Servlet {

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("初始化方法");
    }

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

    @Override
    public void destroy() {
        System.out.println("销毁方法");
    }

​ 分别在init方法、service方法、destroy方法输出语句,运行时发现init方法调用一次,之后通过不断刷新,会重复调用service方法,直至关掉服务器调用destroy方法

一文了解Servlet,servlet,hive,hadoop,java

这样我们发现,只有访问网页,Servlet才会进行初始化,那如何在服务器启动的时候就加载Servlet

解决方法:为注解添加参数

@WebServlet(value = "/demo01",loadOnStartup = 1)
  1. 负整数:第一次访问时创建Servlet对象
  2. 0或正整数:服务器启动时创建Servlet对象,数字越小优先级越高

4、Servlet体系结构

一文了解Servlet,servlet,hive,hadoop,java

大部分开发B/S架构的web项目,都是针对HTTP协议,所以我们自定义Servlet,会继承HttpServlet

@WebServlet("/demo03")
public class Demo3 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("这是demo3,doGet");
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("demo3 doPost");
    }
}
  • 要想发送一个GET请求,请求该Servlet,只需要通过浏览器发送http://localhost:8080/web-demo/demo4,就能看到doGet方法被执行了
  • 要想发送一个POST请求,请求该Servlet,单单通过浏览器是无法实现的,这个时候就需要编写一个form表单来发送请求,在webapp下创建一个a.html页面,内容如下:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>get & post</title>
</head>
<body>
    <h1>GET</h1>
    <form action="login" method="get">
        用户:<input type="text" name="username"><br>
        密码:<input type="password" name="password"><br>
        <input type="submit" value="登录">
    </form>

    <form action="login" method="post">
        用户:<input type="text" name="username"><br>
        密码:<input type="password" name="password"><br>
        <input type="submit" value="登录">
    </form>
</body>
</html>

启动测试,即可看到doPost方法被执行了。

5、urlPatern配置

Servlet类编写好后,要想被访问到,就需要配置其访问路径(urlPattern)

其实就是前面的value,两个属于等价关系,但是不能同时存在

@WebServlet(value = "/demo01",loadOnStartup = 1)

一个Servlet,可以配置多个urlPattern

urlPattern配置规则:

1、精确匹配

/**
配置路径
*/
@WebServlet(value = "/order/demo04")

访问路径:localhost:9999/Tomcat_war_exploded/order/demo04

2、目录匹配

/**
配置路径
*/
@WebServlet(value = "/order/*")

访问路径:localhost:9999/Tomcat_war_exploded/order/任意

表示order目录下的所有路径都能够访问

3、扩展名匹配

/**
配置路径
*/
@WebServlet(value = "*.do")

访问路径:localhost:9999/Tomcat_war_exploded/order/任意.do

4、任意匹配

/**
配置路径
*/
@WebServlet(value = "/*")

访问路径:localhost:9999/Tomcat_war_exploded/任意

访问优先级问题

  1. 前缀匹配高于后缀匹配
  2. 匹配原则:最佳匹配原则,哪个接近就访问哪个
  3. 优先级顺序:精确匹配>目录匹配>任意匹配>后缀匹配

6、XML编写Servlet

Servlet从3.0版本后开始支持使用注解配置,3.0版本前只支持XML配置文件的配置方法

步骤:

  1. 编写Servlet类
  2. 在web.xml中配置该Servlet

演示

编写Servlet类

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


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

在web.xml中配置该Servlet

<!--给serlvet取名字-->
<servlet>
    <servlet-name>demo5</servlet-name>
    <servlet-class>org.example.servlet.demo5</servlet-class>
</servlet>
<!--根据servlet名字配置路径-->
<servlet-mapping>
    <servlet-name>demo5</servlet-name>
    <url-pattern>/demo5</url-pattern>
</servlet-mapping>

​ 这种配置方式和注解比起来,确认麻烦很多,所以建议大家使用注解来开发。但是大家要认识上面这种配置方式,因为并不是所有的项目都是基于注解开发的。文章来源地址https://www.toymoban.com/news/detail-815572.html

到了这里,关于一文了解Servlet的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Servlet | Servlet原理、开发第一个带有Java小程序Servlet

    ✅作者简介:一位材料转码农的选手,希望一起努力,一起进步!  📃个人主页:@每天都要敲代码的个人主页 🔥系列专栏:Web后端 | Servlet 目录 一:模拟实现Servlet 二:开发第一个带有Java小程序Servlet【重点】 有了上一章节的分析,我们来模拟实现以下Servlet;下面先分析一

    2024年02月02日
    浏览(34)
  • [JAVA EE]创建Servlet——实现Servlet接口笔记1

    创建Servlet的方式之一:实现servlet接口 servlet的生命周期: 1、实例化:创建servlet实例对象 2、初始化:调用init方法完成初始化工作 3、服务:调用service方法来处理用户请求 4、销毁:调用destroy方法来释放占用的内存资源 通过service方法处理用户的请求: 通过request(servletReque

    2024年02月03日
    浏览(36)
  • java: 程序包javax.servlet不存在、 java: 程序包javax.servlet.http不存在 java: 程序包javax.servlet.annotation不存在

    一般是JDK里没有servlet.api这个jar包,没有扫描到。可以先从你的tomcat的lib包下找,但我的这个里面是没有的,但我之前下过所以可以直接拷贝 然后找到你的jdk位置,不知道自己jdk位置的可以按照一下步骤打开      复制路径然后从文件夹打开,然后塞入你的jar即可。然后再编

    2024年02月10日
    浏览(31)
  • Java Servlet 技术

    一、Servlet 简介 Servlet 是 JavaEE 的规范之一,通俗的来说就是 Java 接口,将来我们可以定义 Java 类来实现这个接口,并由 Web 服务器运行 Servlet ,所以 TomCat 又被称作 Servlet 容器。 Servlet 提供了动态 Web 资源开发技术,一种可以将网页数据提交到 Java 代码,并且将 Java 程序的数

    2024年02月11日
    浏览(34)
  • java # Servlet

    Servlet是javaEE规范之一。规范就是接口。JavaWeb三大组件分别是:Servlet程序、Filter过滤器、Listener监听器。Servlet是运行在服务器上的一个Java小程序,它可以接收客户端发送来的请求,并响应数据给客户端。 执行Servlet构造器方法(只在第一次创建Servlet程序会调用) 执行init初始

    2024年02月13日
    浏览(35)
  • java:Servlet

    我们访问浏览器访问一个地址,最终是访问到了这个 java 类,而 java 是运行在 Tomcat 上的,所以 Tomcat 作为一个服务器会把这个访问地址指向这个类中,这个类就是 Servlet,Servlet 就是一个具有一定规范的类,具体规范后面会说。 创建JavaEE项目 定义一个类,实现Servlet接口 pub

    2024年02月11日
    浏览(42)
  • Exception in thread “main“ java.lang.NoClassDefFoundError: javax/servlet/Servlet

    缺少jar包 jar包冲突 先查看pom文件中是否引入了对应的依赖,如果没有的话,需要引入: 如果是从 Maven Repository 上面获取的依赖记得要 删除scop 这一行,我就是网上找了几百种方法,才发现是这个问题!

    2024年02月13日
    浏览(39)
  • java: 无法访问jakarta.servlet.ServletException 找不到jakarta.servlet.ServletException的类文件

    tomcat插件用不了?tomcat配置用不了?jdk太高了? 就在pom加个这个试试吧 因为黑马程序员ssm用的是jdk8,tomcat插件 但是我用jdk18,所以就用配置本地的那个,其他用最新的依赖

    2024年02月12日
    浏览(40)
  • java: 无法访问jakarta.servlet.ServletContext 找不到jakarta.servlet.ServletContext的类文件

    今天在学习springmvc的时候发现了一个关系冲突的问题,首先我不是大神,我只是一个初学者。 问题是由javax和jakerta引出来的。我的tomcat版本是9,jdk是17,spring是6.0.11,然后tomcat9使用的应该还是javax,但是在使用spring自己封装好的WebApplicaitonUtils的  getWebApplicationContext方法去优

    2024年02月04日
    浏览(39)
  • Java后端01(初识servlet)

    添加依赖坐标(maven) ​所有请求都会固定携带一个参数(method)代表请求的方式(GET,POST,PUT,DELETE,OPTION) 一个post请求的全流程 浏览器地址栏输入地址访问 通过超链接点击发送的请求方式 form表单的默认提交方式 ajax指定get方式发送的请求 form表单指定post方式提交 aj

    2024年02月16日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包