Java后端核心——Servlet

目录

一.概述

二.基础实现

1.导入坐标

2.定义实现类

3.注解

4.访问Servlet

三.执行流程

四.生命周期 

1.加载和实例化

2.初始化

3.请求处理

4.服务终止

五.方法

1.init

2.service

3.destroy

4.getServletInfo

5.getServletConfig

六.体系结构

七.urlPattern配置

1.精确匹配

2.目录匹配

3.扩展名匹配

4.任意匹配

八.Xml配置Servlet


 

一.概述

servlet就是一门Java提供的动态开发web资源的技术。 

Servlet是JavaEE规范之一,本质就是一个接口,需要开发人员自己定义Servlet类实现Servlet接口,并由web服务器运行Servlet。

查看API文档,开发者的任务便是编写实现类,实现上述接口中的5个方法。

二.基础实现

1.导入坐标

首先创建一个Web项目,前文已说过此处不赘述。

在配置文件中引入Tomcat的插件:

    <build><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version></plugin></plugins></build>

 添加Servlet的依赖:

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

2.定义实现类

如上,定义实现类。

package Myweb;import javax.servlet.*;
import java.io.IOException;public class ServletDemo1 implements Servlet {@Overridepublic void init(ServletConfig servletConfig) throws ServletException {}@Overridepublic ServletConfig getServletConfig() {return null;}@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {}@Overridepublic String getServletInfo() {return null;}@Overridepublic void destroy() {}
}

 重写方法。

3.注解

4.访问Servlet

配置文件中添加如下代码,将打包改为war包:

<packaging>war</packaging>

 添加插件:

   <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>3.2.0</version><configuration><failOnMissingWebXml>false</failOnMissingWebXml></configuration></plugin>

打包。

启动Tomcat服务器~

键入正确的注释:

Servlet已经启动成功!(这句话是博主自行键入的~)

当然也可以通过Maven插件的方式运行~

三.执行流程

http://localhost:8080/Servlet_F1_war/demo1

如上是博主访问上述Servlet的路径,展开来说:

  •  localhost:8080:Tomcat服务器的端口号
  • Servlet_F1_war:项目名
  • demo1:Servlet的注解名

Servlet由web服务器创建,它的方法也由web服务器调用。

四.生命周期 

1.加载和实例化

默认情况下,当Servlet第一次被访问时,由容器创建Servlet对象。

2.初始化

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

@WebServlet(urlPatterns="/demo1",loadOnStartup = 0)

完成如上修改,则服务器启动时 

3.请求处理

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

4.服务终止

        当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destroy()方法完成资源的释放。在destroy()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾收集器所回收。

五.方法

1.init

初始化方法,创建Servlet时执行一次~

2.service

提供服务方法,每次Servlet被访问,都会调用该方法~

3.destroy

销毁方法,当Servlet被销毁时,调用该方法。

4.getServletInfo

获取ServletConfig对象。

5.getServletConfig

获取Servlet信息。

六.体系结构

开发B/S架构的web项目,都是针对HTTP协议,所以我们自定义Servlet来继承HttpServlet。如下:

package Myweb;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/demo2")
public class ServletDemo2 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doGet(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);}
}

        考虑到不同请求方式提交数据的格式不同,需要针对不同方法编写不同的业务逻辑。HttpServlet的存在,本质上是简化了封装处理get请求和post请求的过程~

七.urlPattern配置

如上,一个Servlet可以配置多个访问路径。

1.精确匹配

即,访问路径与配置路径完全一致:

2.目录匹配

包含通配符的路径~

(需要注意的是,如果出现名字相似的重合情况,精确匹配的优先级会高于目录匹配~) 

3.扩展名匹配

不能以斜杠开头

4.任意匹配

无论写什么路径都可以访问得到。需要注意的是,该种写法优先级最低~

  • "/"的配置方式,会覆盖掉Tomcat种的DefaultServlet,当其他的url-pattern都匹配不上时都会走这个Servlet
  • "/*",则意味着匹配任意访问路径

八.Xml配置Servlet

3.0版本以前,只支持XML配置方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/722411.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第二节 JDBC SQL语法

结构化查询语言(SQL)是一种标准化语言&#xff0c;允许对数据库执行操作&#xff0c;例如&#xff1a;创建数据记录&#xff0c;读取内容&#xff0c;更新内容和删除数据记录等。 本教程中将概述SQL&#xff0c;这是了解和学习JDBC概念的前提条件。 经过本章后&#xff0c;您将…

【C++】7-1 简单加法 分数 15

7-1 简单加法 分数 15 全屏浏览 切换布局 作者 刘利 单位 惠州学院 编写add函数&#xff0c;通过函数重载&#xff0c;实现对变量num&#xff0c;增加值n。num增加n的规则如下&#xff1a; 如果num和n都是数值&#xff0c;则num的值变为numn。 如果num为字符&#xff0c;…

前端小案例——登录界面(正则验证, 附源码)

一、前言 实现功能&#xff1a; 提供用户名和密码输入框。当用户提交表单时&#xff0c;阻止默认提交行为。使用正则表达式验证用户输入的内容&#xff0c;判断输入的是有效的邮箱地址还是身份证号码。根据验证结果&#xff0c;在输入框下方显示相应的提示信息。 实现逻辑&a…

ZYNQ--PS_PL交互(AXI_HP)

AXI_HP接口 通过AXI_HP接口,可直接通过AXI_FULL协议向DDR中通过DMA传输数据。 BD设计 AXI_HP接口设置 AXI_Master代码 module axi_full_master #(parameter C_M_TARGET_SLAVE_BASE_ADDR = 32h40000000,parameter integer C_M_AXI_BURST_LEN = 16,parameter integer …

【英语学习(1)】学习工具和学习习惯培养(自用向,非专业!持续更新中)

我英语一直一直一直就是学不好&#xff0c;好痛苦&#xff01;&#xff01;&#xff01;&#xff01;~~~~最近又重拾了激情&#xff0c;因此分享一下我的学习经历~大家共勉&#xff01;&#xff01;&#xff01; 一、对话工具挑选 我的朋友们英语大多都很好&#xff0c;所以我根…

DiskMirror-spring-boot-starter 技术|

DiskMirror-spring-boot-starter 技术 diskMirror 实现了 SpringBoot 的 starter 能够集成到 SpringBoot 中。 DiskMirror 的 starter&#xff0c;通过引入此类&#xff0c;可以直接实现 diskMirror 在 SpringBoot 中的自动配置&#xff0c;接下来我们将使用案例逐步的演示 d…

[202403]xavier nx環境配置流程記錄

xavier nx環境配置流程記錄 引言1.板子環境2.設置默認python和pip2.安裝torch和torchvision2.1 下載正確的whl安裝文件2.2 開始安裝2.3 查看torch安裝情況 3.問題記錄3.1 問題1&#xff1a;Running pip as the root user can result in broken permissions3.2 問題2&#xff1a…

Java Web(八)--Servlet(三)

会话技术 为什么需要&#xff1f; 每个用户在使用浏览器与服务器进行会话的过程中&#xff0c;不可避免各自会产生一些数据&#xff0c;服务器要想办法为每个用户保存这些数据&#xff1b; 用户通过浏览器访问 Web 应用时&#xff0c;服务器都需要保存和跟踪用户的状态&…

探究与以太坊智能合约的交互

# 概述 智能合约是部署在区块链上的一串代代码&#xff0c;通常我们与智能合约的打交道 可以通过前端的Dapp&#xff0c;etherscan&#xff0c;metamask 等方式。作为开发人员可以通过调用提供的相关包来与之交互&#xff0c;如web3.js&#xff0c;ether.js , web3.j(java 语言…

外部存储空间

1. 存储在外部 私有 存储空间 /storage/emulated/0/Android/data/com.tiger.chapter06/files/Download/1709636015824.txt package com.tiger.chapter06;import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.view.View; impo…

linux kernel物理内存概述(六)

目录 伙伴系统 1、什么是伙伴&#xff1f; 2、伙伴系统的分配原理 3、伙伴系统回收 伙伴系统 1、什么是伙伴&#xff1f; 伙伴必须是大小相同并且在物理上连续的两个或者多个页。 2、伙伴系统的分配原理 首先根据内存分配接口函数gfp_t gfp_mask&#xff0c;找到内存分…

什么样的计算机专业应届生好找工作

什么样的计算机专业应届生好找工作 引言 计算机技术在现代社会中扮演着至关重要的角色&#xff0c;因此&#xff0c;计算机专业的就业前景一直备受关注。对于即将毕业的计算机专业应届生来说&#xff0c;找到一份满意的工作是他们的首要目标。但是&#xff0c;如何在竞争激烈…

网安笔记(二)

十三、OSI七层模型 OSI七层模型是一种将计算机通信协议按照功能分层的模型。每一层都有明确定义的功能和协议规范&#xff0c;各层之间可通过接口互相调用&#xff0c;以实现数据通信和交换。这些层分别是&#xff1a; 1. 应用层&#xff08;Application Layer&#xff09;&am…

前端最简单的方法,实现字段拼接

在前端实现两个字段的拼接是一个非常基础且常见的需求&#xff0c;可以通过多种编程语言和技术来实现&#xff0c;这里主要以JavaScript为例&#xff0c;介绍几种简单的方法&#xff1a; 1. 使用加号&#xff08;&#xff09;运算符 JavaScript中最直观的字符串拼接方式是使用…

分布式事务Seata

分布式事务与Seata落地 一、事务基础 1.1 本地事务 事务指的就是一个操作单元&#xff0c;在这个操作单元中的所有操作最终要保持一致的行为&#xff0c;要么所有操作都成功&#xff0c;要么所有的操作都被撤销。 1.2 本地事务特性 本地事务四大特性: ACID A&#xff1a;原…

SuperPoint和SuperGlue 的算法介绍及学习应用经验分享

SuperPoint和SuperGlue 的算法介绍及学习应用经验分享 2024年01月03日 10:38186浏览 3喜欢 0评论 视频地址&#xff1a; SuperPoint和SuperGlue 的算法介绍及学习应用经验分享 好想 特征点匹配&#xff0c;为了计算位姿 特征点&#xff1a;关键点描述子&#xff08…

第五十回 插翅虎枷打白秀英 美髯公误失小衙内-mayfly-go:web 版 linux、数据库等管理平台

晁盖宋江和吴用到山下迎接雷横上山&#xff0c;宋江邀请雷横入伙&#xff0c;雷横以母亲年事已高为由拒绝了。 雷横回到郓城&#xff0c;听李小二说从东京新来了个表演的叫白秀英&#xff0c;吹拉弹唱跳&#xff0c;样样精通&#xff0c;于是雷横和李小二一起到戏院去看演出。…

数据结构与算法-耿国华-图部分的全部代码【C++】

前言 总结整理不易&#xff0c;希望大家点赞收藏。 给大家整理了一下数据结构与算法中图的全部代码&#xff0c;以供大家期末复习和考研复习的时候使用。 参考资料是耿国华的数据结构与算法。 即插即用 邻接表 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #inc…

Python爬虫实战第三例【三】(下)

零.前情提要&#xff1a; 没有看上一章的小伙伴&#xff0c;建议先去看上一章&#xff0c;避免有些知识点不连贯 地址&#xff1a;Python爬虫实战第三例【三】【上】-CSDN博客 在上一章&#xff0c;我们经过分析.m3u8文件和.ts文件后&#xff0c;成功爬取到了所有.ts文件的文…

冒泡经典题

&#x1f4d1;前言 本文主要是【】——简单使用的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一句&#xff1a;狠…