当前位置:网站首页>黑马程序员Servlet
黑马程序员Servlet
2022-08-03 02:10:00 【闲易生事】
Servlet
∙ \bullet ∙ Servlet是java提供的一门动态web资源开发技术
∙ \bullet ∙ Servlet是JavaEE规范之一,其实就是一个接口,将来我们需要定义Servlet类实现Servlet接口,并由Web服务器运行Servlet
Servlet快速入门
1.创建web项目,导入Servlet依赖坐标
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>privided</scope>
</dependency>
2.创建:定义一个类,实现Servlet接口,并重写接口中所有方法,并在service方法中输入一句话
public class ServletDemo implements Servlet(
public void service(){
}
}
3.配置:在类上使用@WebServlet注解,配置该Servlet的访问路径
@WebServlet("/demo")
public class ServletDemo implements Servlet{
}
4.访问:启动Tomcat ,浏览器输入URL访问该Servlet
http://localhost:8080/web-demo/demo
项目结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0bVZ1rxl-1659235450631)(https://img-blog.csdnimg.c n/338811bfea994131b771d71252ad4f40.png)]
使用Maven构建项目约定大于配置,所以项目结构要严格遵守约定,不然会报错
Servlet执行流程
http://localhost:8080/tomcat-demo/demo
http://localhost:8080:这段是为了找到tomcat服务器
tomcat-demo:这段是为了找到这个项目
demo:这段为了找到对应的servlet
Servlet生命周期
∙ \bullet ∙ 对象的生命周期指一个对象从创建到被销毁的整个过程
∙ \bullet ∙servlet运行在Servlet容器(web服务器)中,其生命周期由容器来管理,分为4个阶段:
1.加载和实例化:默认情况下,当Servlet第一次被访问时,有容器创建Servlet对象
2.初始化:在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象,完成一些如加载配置文件,创建连接等初始化的工作.该方法只调用一次
3.请求处理:每次请求Servlet时,Servlet容器都会调用Servlet的service()方法对请求进行处理.
4.服务终止:当需要释放内存或容器关闭时,容器就会调用Servlet实例的destory()方法完成资源的释放.在destory()方法调用后,容器会释放这个Servlet实例,该实例随后会被java的垃圾收集器所回收.
可以定义Servlet对象创建的时间
@WebServlet(urPattems="/demo",loadOnStartup=1)
1.负整数:第一次被访问时创建Servlet对象
2.0或正整数,服务器启动时创建Servlet对象,数字越小优先级越高.
好处:缩短第一次被访问时所耗时间
Servlet体系结构
Servlet | Servlet体系根接口 |
---|---|
GenericServlet | Servlet抽象实现类 |
HttpServlet | 对HTTP协议进行封装的Servlet实现类 |
*我们将来开发B/S架构的web项目,都是针对HTTP协议,所以我们自定义Servlet,会继承HttpServlet
HttpServlet概述
1.HttpServlet使用步骤
1.继承HttpServlet
2.重写doGet()和doPost()方法
2.HttpServlet原理
1.获取请求方式,并根据不同的请求方式,调用不同的doXxx()方法
Servlet urlRattern配置
∙ \bullet ∙ Servlet要想被访问,必须配置其访问路径(urlPattern)
1.一个Servlet,可以配置多个ulrPattern
@WebServlet(urlPattern={“/demo1”,“/demo2”})
urlPattern是一个字符串数组可以存放多个访问路径
2.urlPatern配置原则
1.精确匹配 urlPattern(“/user/demo”)优先级高于目录匹配
2.目录匹配 urlPattern(“/user/“)
3.扩展名匹配 urlPattern(”.txt”)注意前面无"/",其他有
4.任意匹配 urlPattern(“/”)或者urlPattern(“/*”)(不建议配置/或/*或导致无法访问静态资源)
∙ \bullet ∙ /和/的区别
-> 当我们的项目中的Servlet配置了"/“,会覆盖tomcat中DefaultServlet,当其他的url-pattern都不匹配时会走这个Servlet
-> 当我们项目中配置了”/",意味着匹配任意fangwenlujing
->/优先级高于/
∙ \bullet ∙ 精确路径>目录路径>扩展名路径>/>/
边栏推荐
猜你喜欢
WordPress博客问答小插件
MATLAB绘制填充图(X轴上下两种颜色)
【云原生】灰度发布、蓝绿发布、滚动发布、灰度发布解释
新库上线 | CnOpenDataA股上市公司董监高信息数据
FLIR E95 在8层楼看马路上行驶的CAR的热成像形态?
mysql-installer安装教程(详细图文)
Topic Modeling of Short Texts: A Pseudo-Document View
The cornerstone of high concurrency: multithreading, daemon threading, thread safety, thread synchronization, mutual exclusion lock, all in one article!...
【云原生】服务行业案例-不可预测的并发场景解决方案
LabVIEW程序框图保存为图像
随机推荐
IDEA基本使用-创建和删除项目
leetcode:163 缺失的区间
leetcode:172. 阶乘后的零
leetcode:162. 寻找峰值
一次偶然的钓鱼文件分析
简单的布局的初级智能文本提示器
JVM内部结构图及各模块运行机制总结
Pro_07丨波动率因子3.0与斜率因子
面试题整理1
[@property enhancement in Objective-C language]
MySQL-Explain详解
leetcode:153. 寻找旋转排序数组中的最小值
How does Excel compare if two columns of strings are the same?
容联云发送验证码
FLIR E95 在8层楼看马路上行驶的CAR的热成像形态?
PHICOMM(斐讯)N1盒子 - Armbian5.77(Debian 9)基本配置
问题记录:jenkins构建时报错The goal you specified requires a project to execute but there is no POM in...
win下使用vscode+wsl2
Jmeter TCP/UDP测试
粘包与拆包