5.Servlet
一、Servlet快速入门
1.创建web项目,导入Servlet依赖坐标(scope范围为provided因为上传后tomcat也有这个,可能会冲突)pom.xml
<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency>
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 {@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {System.out.println("servlet hello world~");}@Overridepublic void init(ServletConfig servletConfig) throws ServletException {}@Overridepublic ServletConfig getServletConfig() {return null;}@Overridepublic String getServletInfo() {return null;}@Overridepublic 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次* */@Overridepublic void init(ServletConfig servletConfig) throws ServletException {System.out.println("哈哈哈");}@Overridepublic ServletConfig getServletConfig() {return null;}@Overridepublic void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {System.out.println("hello world");}@Overridepublic String getServletInfo() {return null;}// 销毁方法:内存释放,被调用一次@Overridepublic void destroy() {}
}
四、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 {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("get....");}@Overrideprotected 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)任意匹配
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 {@Overrideprotected 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 {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("demo4 .. get");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {}
}
web.xml
<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Application</display-name><!--Servlet 全类名
--><servlet><servlet-name>demo4</servlet-name><servlet-class>com.itheima.servlet.ServletDemo4</servlet-class></servlet>
<!--Servlet 访问路径
--><servlet-mapping><servlet-name>demo4</servlet-name><url-pattern>/demo4</url-pattern></servlet-mapping>
</web-app>
相关文章:

供应化学试剂BHQ-1 氨基|BHQ-1 amine|1308657-79-5
1、名称 英文:BHQ-1 amine 中文:BHQ-1 氨基 2、CAS编号:1308657-79-5 3、所属分类:Other dyes 4、分子量:475.55 5、分子式:C25H29N7O3 6、质量控制:95% 7、储存: -20℃可长…...

高通导航器软件开发包使用指南(2)
高通导航器软件开发包使用指南(2)2.6 与 Qualcomm Navigator 交互2.6.1 设置安卓平板2.6.1.1 Qualcomm Navigator DroneController Companion2.6.2 设置 Spektrum RC3 数据记录和查看遥测3.1 概述3.1.1 日志文件命名3.1.2 机器视觉日志3.1.3 原始 GNSS 数…...

CodeForces - 545D Queue 贪心 排序
题目链接:点击查看 Little girl Susie went shopping with her mom and she wondered how to improve service quality. There are n people in the queue. For each person we know time ti needed to serve him. A person will be disappointed if the time he …...

牛客网 Applese 走方格
题目链接:点击查看 题解:我们容易发现到当n,m都为奇数时,是回不到原点的,因为你无论哪个方向走一去一回就是两步,所以n和m必然有一个偶数,那至于我们怎么走呢,看下图,注意的是n1,m2…...

括号有效配对题型问题解法
目录 问题描述: 问题一:怎么判断一个括号字符串有效? 问题二:如果一个括号字符串无效,返回至少填几个字符能让其整体有效。 问题三:返回一个括号字符串中,最长的括号有效子串的长度。 问题四…...

7K325T 引脚功能详解
本文针对7K325T芯片,详细讲解硬件连接需要注意的技术点,可以作为设计和检查时候的参考文件。为了方便使用,按照Bank顺序排列,包含配置Bank、HR Bank、HP Bank、GTX Bank、供电引脚等。 参考文档包括DS182、UG470、UG475、UG476等。…...

python导入安装包
主要分两种方式:在线安装和离线安装 在线安装 因为我公司开发是在云桌面,里面是没有外网的。之前是只能离线安装,后面搭了一个内部镜像环境。 1.添加配置文件进行换源 2.检查requirements.txt配置 3.直接使用pycahrm工具install 换源 …...

POJ - 2406 Power Strings next数组应用循环节
题目链接:点击查看 Language:Default Power Strings Time Limit: 3000MS Memory Limit: 65536KTotal Submissions: 61784 Accepted: 25534Description Given two strings a and b we define a*b to be their concatenation. For example, if a "abc" and…...

JS中 [] == ![]结果为true,而 {} == !{}却为false, 追根刨底
转载自 JS中 [] ![]结果为true,而 {} !{}却为false, 追根刨底 console.log( [] ![] ) // true console.log( {} !{} ) // false 在比较字符串、数值和布尔值的相等性时,问题还比较简单。但在涉及到对象的比较时,问题就变…...

Spring Boot 自动配置的 “魔法” 是如何实现的?
转载自 Spring Boot 自动配置的 “魔法” 是如何实现的? Spring Boot是Spring旗下众多的子项目之一,其理念是约定优于配置,它通过实现了自动配置(大多数用户平时习惯设置的配置作为默认配置)的功能来为用户快速构建出…...

每天五分钟机器学习:超平面分离定理和凸优化
凸集和凸函数 在点集拓扑学与欧几里得空间中,凸集是一个点集,其中每两点之间的直线上的点都落在该点集中。如下所示: 函数任意两点(x,f(x))和(y,f(y))连线上的值大于(x,y)区间内任意一点m的值f(m),那么这个函数就是一个凸函数: 超平面分离定理 空间中存在两类样本,…...

AcWing 848. 有向图的拓扑序列
原题链接:AcWing 848. 有向图的拓扑序列 给定一个 n 个点 m 条边的有向图,点的编号是 1 到 n,图中可能存在 重边 和 自环 。 请输出任意一个该有向图的拓扑序列,如果拓扑序列不存在,则输出 −1。 若一个由图中所有点…...

数论一些小总结
1.对于任意一个素数p, n!中含有p的个数为 (n/p n/p^2 n/p^3 ......). 2.c(n,k) n! / ( k! * (n-k)! ). 3.c(n,k)(n-k1)/k*c(n,k-1). 4.任意一个数n可以写成若干个素数的乘积,即 p1^a1 * p2^a2*......*pn^an, 它的的约数的个数为 (a11)*(a21)*..…...

Spring MVC竟然有5种参数绑定的方式?你知道几种?
转载自 Spring MVC竟然有5种参数绑定的方式?你知道几种? SpringMVC参数绑定,简单来说就是将客户端请求的key/value数据绑定到controller方法的形参上,然后就可以在controller中使用该参数了下面通过5个常用的注解演示下如何进行参…...

接口测试那些事儿
什么是接口? 首先,在讲接口测试之前,我们先要搞清楚接口类型的概念。 接口:可能是系统与系统(包括服务与服务)之间的调用,像A系统(服务)给B系统(服务&#x…...

数据中心典型测试场景浅析
数据中心概述 数据中心泛指拥有众多服务器的大型机房,通过利用通信运营商已有的互联网通信线路、带宽资源,建立标准化的数据中心机房环境,具有运行速度快、存储量大、安全性高等特点。数据中心东西向流量的占比更大,传统的园区网…...

mysql重置Root密码
方法一: 在my.ini的[mysqld]字段加入: skip-grant-tables 重启mysql服务,这时的mysql不需要密码即可登录数据库 然后进入mysql mysql>use mysql; mysql>更新 user set passwordpassword(新密码) WHERE Userroot; mysql>flush privileges; 运…...

Google Swift 与 DC 传输
网络拥塞,默认指转发节点出现了严重的排队现象,甚至队列溢出而丢包。、 但接收端也是一个统计复用系统(通用 OS 均为统计复用系统,比如 Linux),但凡统计复用系统就是潜在拥塞点,即可套用排队论模型。 人们很少将最后…...

专精特新企业评价指标
(一)化指标(满分25分) 1. 上年度主营业务收入总额占营业收入总额比重(5分) 2. 近2年主营业务收入平均增长率(10分) 3. 从事特定细分市场年限(5分),…...

每天一个adb命令:wm命令详解
wm命令可以用于获取屏幕分辨率、像素密度等。 前提:Android4.3及以上 usage: wm [subcommand] [options]wm size [reset|WxH]wm density [reset|DENSITY]wm overscan [reset|LEFT,TOP,RIGHT,BOTTOM]wm size: return or override display size.wm density: overrid…...

idea插件开发入门
前言:最近想研究一款自动在idea中定位缺陷及发送JIRA的快捷工具,方便提升报自动化脚本的bug的效率。因为idea插件学习是必不可少了,沉淀小结如下。 idea插件开发入门插件用途工程创建配置文件Action实现开发语法常用对象常用方法运行效果打包…...

【DSP】【第五篇】RBL源代码分析
2022年11月7日 最近手头事情做完,闲下来,整理一下之前的笔记。本文关注的重点是,RBL是如何在EMIF接口下,自动搬运代码段的。随着理解的深入,以后会进行自纠和补充。 1. C6678、C6670的RBL代码调用关系 (…...

Linux_gdb_进程概念
目录 进度条 学习过程 自主实现: Linux的git操作 .gitignore .git git add . git commit git push git log git status git pull 进度条 学习过程 首先创建源文件,这个源文件就是我们要写的进度条的定义 接下来,我们创建文件Ma…...

读王安石变法
今天早上读到王安石变法,王安的变法确实充满理想化。以现代金融的办法进行国家的经济改革。但最终却并未走向成功,其中值得我们反思。思想太过超前,在没有实际土壤的环境下,再好的策略都难免不可能实现,这让我想起来摩…...

2017 ICPC Asia Urumqi I. A Possible Tree 带权并查集
题目链接:https://nanti.jisuanke.com/t/40520 题解:因为他们都是联通的且只有唯一路径,所以不用管之前怎么连的,直接按照他给的查询,带权并查集判断即可 #include <bits/stdc.h> using namespace std; const …...

软件协会第01次活动第01次任务布置:typora文档编写markdown语法
文章目录1.标题级别2.纯文本形式粘贴3.划线3.1 上划线(分割符)3.2 中划线(删除符)3.3 下划线4.列表4.1 有序列表4.2 无序列表4.3 减少缩进4.4 增加缩进4.5 任务列表5.高亮6.引用7.代码框8.表格9.内联代码片10.图片10.1 插入图片10…...
基于数据驱动的接口自动化测试解决方案
总结一下我么项目中使用的基于数据驱动的接口自动化测试解决方案,仅供大家参考。1.接口框架设计结构 2.接口测试脚本设计原则 3.持续集成 这块用jenkins就可以了,就不介绍了,目前我们项目的集成规则介绍一下: 1.脚本job与应用对…...

胡扯推荐算法(协同)及其dome实现
文章目录前言推荐系统定义基本分类相似度计算欧式距离皮尔逊系数余弦相似度协同过滤案例数据定义相似度计算推荐svd奇异值分解优化完整代码总结前言 打瞌睡遇到送枕头的感觉真爽嘿嘿 BoyC啊 废话不多说,开始吧。 推荐系统定义 推荐系统(Recommendation System,…...

力扣 35. 搜索插入位置
目录 第一站 LeetCode 新手村 前言 35. 搜索插入位置 题目描述 解题思路 代码 总结 题目来源 第一站 LeetCode 新手村 前言 最近玩OJ赛,发现对算法的理解还需要更加扎实,code能力还可以进一步提升,所以做这样一个算法的系列文章&#…...

软件设计师--数据结构考点细节总结
视频2022软件设计师-提炼高频考点-个人学习过程的总结,仅供参考!_哔哩哔哩_bilibili 目录 1,栈 2,二叉树 3,HUFFMAN 特点: 4,文件压缩比 5,拓扑排序 -- 有向无环图 6,查找 7…...

JavaFX其他事件
一、其他事件 InputMethodEvent.InputMethodTextChanged 文本输入改变 ContextMenuEvent.CONTEXT_MENU_REQUESTED 上下文菜单请求 二、用法 node.setOnXX(event->{//do something });node.addEventFilter(XXEvent.XX, event -> {//do something});...

SpringBoot开启事务
Transactional 直接在想要启动事务的方法或者类上添加Transactional注解即可,在类上添加注解,默认类下的所有方法都会使用事务。 在类上添加注解 Transactional Service public class UserServiceImpl implements UserService { } 在方法上添加注解 …...

深入探索 Java 热部署
转载自 深入探索 Java 热部署 简介 在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能实现方法体的修改热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作。对…...

C++设计模式
管理变化, 提高复用 两种手段:分解 抽象 八大原则:https://blog.csdn.net/mmk27_word/article/details/108521903 重构技法: 静态 -> 动态 早绑定 -> 晚绑定 继承 -> 组合 编译时依赖 -> 运行时依赖 紧耦合 ->…...

spring boot深入及启动原理探究
围绕spring boot 的优点,本文我们来探究一下spring boot具体是如何实现这些特性的。 自动配置:针对很多Spring应用程序和常见的应用功能,Spring boot能自动提供相关配置;起步依赖:告诉Spring boot需要什么功能,它就能引…...
为什么大公司一定要使用DevOps
转载自 为什么大公司一定要使用DevOps 0 DevOps的意图 究竟什么是DevOps? 要想回答这个问题,首先要明确DevOps这个过程参与的人员是谁?即开发团队和IT运维团队!那么,DevOps的意图是什么呢?即在两个团队之间&#…...

JfreeChart柱状图饼图
JfreeChart画出柱状图饼图的代码片段及详细的注释,附件为JfreeChart中文API一览表,和生成的柱状图,饼图图片 import java.awt.Font; import java.io.FileOutputStream; import java.io.IOException; import org.jfree.chart.C…...

【SSO单点登录】ticket+token+redis 实现sso单点登录 防重放、防盗用、防篡改
🍳引言 大家好,我是melo,sso篇断更很久了,本次带来 sso:tickettokenredis 的实现方案~ 最近断断续续冷面翻炒redis、MySQL、sso,知识大杂烩属于是hhh MySQL高级篇专栏 SSO单点登录专栏 Redis入门与实战 …...

自动装配的底层实现
public void autowire(Object o, Map<String, String> map) throws Exception { // 获得map 所有key Set<String> keys map.keySet(); // 获得Object中所有属性 // 获得Class对象 Class c o.getClass(); // 获得…...

C/C++ 时间知识总结
文章目录C/C 中时间的概念常用的时间库函数time()asctime()gmtime()ctime()localtime()mktime()strftime()difftime()C/C 获取当前(本地)时间的方法方法一方法二方法三方法四方法五C/C 中时间的概念 Unix 时间戳(Unix timestamp)…...

jdk安装
jdk下载 官网地址 https://www.oracle.com/java/technologies/downloads/#java8-windows 新建文件夹 我这里是在D盘下,新建java文件夹 然后java文件夹中再新建 jdk和jre文件夹(我这里一般名字直接取当前下载的版本) 安装 修改为我们刚…...

文件上传,你还存储在应用服务器?
文章目录前言一、准备工作1. 开通腾讯云对象存储服务2. 创建存储桶3. 密钥管理,创建密钥三、整合步骤1. 添加maven依赖2. yml文件增加配置3. 新建 COS 配置类4. 新建 COS 上传工具类5. 新建 Controller 上传接口6. 测试总结前言 嗨,大家好,我…...

Java异常打印输出中常见方法的分析
Java异常是在Java应用中的警报器,在出现异常的情况下,可以帮助我们程序猿们快速定位问题的类型以及位置。但是一般在我们的项目中,由于经验阅历等多方面的原因,依然有若干的童鞋在代码中没有正确的使用异常打印方法,导…...

Web渗透测试攻防之浅述信息收集
前言 众所周知渗透测试的本质是信息收集,在渗透测试中信息收集的质量直接关系到渗透测试成果的与否。在对系统进行渗透测试前的信息收集是通过各种方式获取所需要的信息,收集的信息越多对目标进行渗透的优势越有利。通过利用获取到的信息对系统进行渗透…...

【菜菜的sklearn课堂笔记】支持向量机-探索核函数在不同数据集上的表现
视频作者:菜菜TsaiTsai 链接:【技术干货】菜菜的机器学习sklearn【全85集】Python进阶_哔哩哔哩_bilibili 关于核函数在不同数据集上的研究甚少,谷歌学术上的论文中也没有几篇是研究核函数在SVM中的运用的,更多的是关于核函数在深…...

无人机和热成像
当它变得可见时,看不见的世界是一个令人惊叹的景象。 热成像就是这样,透过使用专门的摄影机和技术,使看不见的红外光谱可见。 我们周围那个无形的世界隐藏着什么,这是一个完整的隐藏世界。 图片来源:Keith Davis/热成像…...

Mybatis框架的详细介绍(基础版)
目录 1.什么是框架 2. Mybatis框架是什么? 3. 为什么要使用Mybatis框架 4. Mybatis的发展历程 5.使用Mybatis的前期准备 6.Mybatis框架使用的步骤 6.1 Mybatis的pom文件中你的依赖 6.2 Mybatis的主配置文件的详细介绍 7. 具体案例(有详细注解&a…...

Java——数组的使用
Java数组的使用一、数组的基本概念1.数组的声明及初始化2.数组的访问及遍历二、操作数组1.数组拷贝2.数组排序三、不规则数组一、数组的基本概念 数组是一种数据结构,用来存储一类型值的集合。可以看成是相同类型元素的一个集合,再内存中是一段连续的的…...

【axios】二次封装——避免重复发送请求
axios 请求封装🚩前言🚩目的🚩文件结构🚩实现💨请求拦截💨响应拦截💨取消重复发送请求🚩调用🚩前言 🚩🚩🚩 💎个人主页: 阿…...
Mysql调优你不知道这几点,就太可惜了
转载自 Mysql调优你不知道这几点,就太可惜了 一、Mysql的逻辑分层 Mysql分为:连接层、服务层、引擎层、存储层。 当客户端向服务端发起操作请求的时候,执行过程是这样的: 1、客户端端与Mysql服务端的连接层建立连接ÿ…...