当前位置:网站首页>黑马程序员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 ∙ 精确路径>目录路径>扩展名路径>/>/
边栏推荐
猜你喜欢
rancher集成ldap,实现统一账号登录
openCV第一篇
Topic Modeling of Short Texts: A Pseudo-Document View
WordPress博客问答小插件
Shell脚本乘法口诀等小实验
leetcode:151. 颠倒字符串中的单词
豆瓣评分9.3的好书,文末给大家抽奖送几本!
leetcode:149. 直线上最多的点数
The cornerstone of high concurrency: multithreading, daemon threading, thread safety, thread synchronization, mutual exclusion lock, all in one article!...
Rust Web(三)—— 通过sqlx连接数据库(MySQL)
随机推荐
PHICOMM(斐讯)N1盒子 - Armbian5.77(Debian 9)配置自动连接WIFI无线网络
【Objective-C语言中的@property增强】
DTD约束和Schema约束
leetcode:172. 阶乘后的零
南瓜科学新品上线 开辟益智玩具新世界
Get the first/last day of the current week, month, quarter in MySQL
[Arduino] Reborn Arduino Monk (2)----Arduino Language
会话技术!
[Arduino] Reborn Arduino Monk (3)----Arduino function
pytorch 中 permute()函数的用法
常用工具链和虚拟环境-TDMGCC
PHICOMM(斐讯)N1盒子 - Armbian5.77(Debian 9)基本配置
JS高级 之 Proxy-Reflect 使用详解
梅科尔工作室-14天华为培训三
SPI机制是什么?
Jenkins2.328+sonarqube7.9 实现代码自动化检测
openCV第二篇
如何准备考pmp?
vsftp容器搭建+go开发web用户管理界面(更新于2022.02.23)
Spark SQL简介