当前位置:网站首页>黑马程序员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 ∙ 精确路径>目录路径>扩展名路径>/>/
边栏推荐
猜你喜欢

什么样的存储服务,才能成为企业数字化创新“加速器”?

openCV第一篇

[Example构造方法增加notNull参数,默认false,允许值为null,值为null的时候不加入到条件中

lombok 下的@Builder和@EqualsAndHashCode(callSuper = true)注解

Excel 如何比较两列字符串是否相同?

粘包与拆包

JVM internal structure and various modules operation mechanism

【云原生】服务行业案例-不可预测的并发场景解决方案

大厂标配 | 百亿级并发系统设计 | 学完薪资框框涨

MySQL-如何分库分表?一看就懂
随机推荐
Linux定时任务脚本执行时mysqldump备份异常的问题
VS中使用BugTrap定位程序崩溃点
工作两年成跳槽高峰期,程序员会在一家公司待多久?
”QSqlDatabasePrivate::removeDatabase: connection ‘test-connect‘ is still in use“数据库多次打开报错
【社媒营销】Facebook速推帖子如何运作?值得吗?
MySQL-多表查询
Excel 如何比较两列字符串是否相同?
PHICOMM(斐讯)N1盒子 - Armbian5.77(Debian 9)配置自动连接WIFI无线网络
kubernetes部署ldap
sql注入是什么意思以及防止sql注入?
面试题整理1
什么样的存储服务,才能成为企业数字化创新“加速器”?
monkey 压测
【Flink】如何生成 Flink 作业的交互式火焰图?
370万欧元!西班牙iPronics加速可重构光子芯片商用
征集 |《新程序员》专访“Apache之父”Brian Behlendorf,你最想问什么?
二叉树的前序遍历、中序遍历、后序遍历和层序遍历
qt opengl 使用不同的颜色绘制线框三角形
Summary of some interviews
简单的布局的初级智能文本提示器