Servlet(理解)
目录
Servlet入门:
Servlet关系视图 :
Servlet映射方式:
Servlet创建时机:
默认Servlet
ServletConfig
ServletConfig 配置方式
ServletConfig 常用方法
ServletContext 介绍
域对象
ServletContext 配置方式
ServletContext 常用方法
注解开发Servlet
抖一抖
Servlet是运行在Java服务器端的程序,用于接收和相应来自客户端基于HTTP协议的请求。
如果想要实现Servlet功能,可以通过实现javax.servlet.Servlet接口或者继承它的实现类。
Servlet是单例模式,也就是整个应用中只有一个实例对象,虽然是单线程,但是也存在线程不安全,解决办法:不要定义成员变量,而是要定义局部变量,或者加上synchronized(this){代码}
核心方法:service(),任何客户端的请求都会经过该方法。
小tips:如果读者是web项目,那么可以在WEB-INF文件夹下的web.xml文件里加入如下配置来更改默认访问的主页
//修改访问tomcat默认主页
<welcome-file-list><welcome-file>自己的访问主页路径</welecome-file>
</welcome-file-list>
Servlet入门:
servlet是一个接口,运行在web服务器中的小程序,实现servlet功能有三种方式:
1.实现servlet接口 2.继承GenericServlet 3.继承HttpServlet
tip1.servlet初始化时都会执行init方法;
tip2.所有客户端请求都会经过service()方法;
tip3.当servlet从服务器中移除的时候会调用destroy()方法,最后由垃圾回收器进行回收。
Servlet关系视图 :
Servlet映射方式:
No.1 具体名称的的方式
No.2 /开头+通配符*的方式,只要符合目录结构,不用考虑结尾是什么
No.3 通配符*+固定格式结尾的方式。只要符合固定结尾的格式即可,不用考虑前面的路径
优先级问题:越是具体的优先级越高,No.1 > No.2 > No.3
Servlet创建时机:
1. 第一次访问时创建
- 优势:减少对服务器内存的浪费,提高了服务器启动的效率
- 弊端:如果有一些要在应用加载时就做的初始化操作,无法完成
2. 服务器加载时创建
- 优势:提前创建好对象,提高了首次执行的效率,可以完成一些应用加载时要做的初始化操作
- 弊端:对服务器内存占用较多,影响了服务器启动的效率
实现方法:
在<servlet>标签中,添加<load-on-startup>标签。
<servlet><servlet-name>servletDemo</servlet-name><servlet-class>com.kolacc.demo.demo01</servlet-class><load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping><servlet-name>servletDemo</servlet-name><url-pattern>/demo</url-pattern>
</servlet-mapping>
- 正整数代表服务器加载时创建,值越小,优先级越高。负整数或不写代表第一次访问时创建。
默认Servlet
- 默认servlet是有服务器提供的一个servlet。它配置在Tomcat的conf目录中的web.xml中。
- 它的映射路径是<url-pattern>/</url-pattern>,我们在发送请求时,首先会在我们项目中的web.xml中查找映射配置,找到则执行。但当找不到对应的Servlet路径时,就去找默认的Servlet处理,所以,一切都是Servlet。
<!-- The mapping for the default servlet --><servlet-mapping><servlet-name>default</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
ServletConfig
- ServletConfig是Servlet的配置参数对象,在Servlet的规范中,允许为每一个Servlet都提供一些初始化的配置。所以,每个Servlet都有一个自己的ServletConfig。
- 作用:在Servlet的初始化时,把一些配置信息传递给Servlet。
- 生命周期:和Servlet相同。
ServletConfig 配置方式
- 在<servlet>标签中,通过<init-param>标签来配置,有两个子标签。
- <param-name>:代表初始化的key。
- <param-value>:代表初始化的value。
通过init方法对ServletConfig对象赋值
ServletConfig 常用方法
- getInitParameter(String name) 根据参数名称获取参数的值 返回值String类型
- getInitParameterNames() 获取所有参数名称的枚举 返回Enumeration类型
- getServletName() 获取Servlet名称 返回String类型
- getServletContext() 获取ServletContext对象 返回ServletContext
ServletContext 介绍
- ServletContext是应用上下文对象(应用域对象)。每一个应用中只有一个ServletContext对象
- 作用:可以配置和获取应用的全局初始化参数,可以实现Servlet之间的数据共享。
- 生命周期:应用一加载则创建,应用被停止则销毁
域对象
- 域对象指的是对象有作用域。也就是有作用范围。域对象可以实现数据的共享。不同作用范围的域对象,共享数据的能力也不一样。
- 在Servlet规范中,一共有4个域对象。ServletContext就是其中的一个。它也是web应用中最大的作用域,也叫application域。它可以实现整个应用之间的数据共享!
ServletContext 配置方式
- 在<web-app>标签中,通过<context-param>标签来配置。有两个子标签。
- <param-name>:代表全局初始化参数的key。
- <param-value>:代表全局初始化参数的value。
ServletContext 常用方法
- getInitParameter(String name) 根据名称获取全局配置的参数 返回值为String类型
- getContextPath() 获取当前应用的访问虚拟目录 返回值为String类型
- getRealPath(String path) 根据虚拟目录获取应用部署的磁盘绝对路径 返回值为String类型
- setAttribute(String name,Object value) 向应用域对象中存储数据 没有返回值
- getAttribute(String name) 通过名称获取应用域对象中的数据 返回值为Object类型
- removeAttribute(String name) 通过名称移除应用域对象中的数据 没有返回值
注解开发Servlet
配置文件开发servlet是基于servlet2.5,servlet3.0之后就可以使用注解来进行开发servlet,同时也可以使用注解方式开发,因为向下保留
直接使用@WebServlet("/访问路径")
抖一抖
definition n.定义;阐述;清晰度
BeanDefinition
一个接口,包含了一些bean的基本信息(名称,所属类名称,是否单例,作用域等等)
Servlet(理解)相关推荐
- JSP中javaBean和Servlet理解
以前,没接触JAVA开发,总以为javabean和servlet很神奇,很怪,很复杂,现在找了本JSP的很基础的书看了,对于它们的大概总算了解了. javaBean可以说就是一个JAVA类,只不过它有 ...
- servlet 理解 --servlet笔记
http 80 smtp 25 pop3 110 ftp 23 https 443 Host里面 <Context path="/itcast" docBase=&quo ...
- 毛哥的快乐生活(21) 让Servlet理解用户的需求
本章源码:Github 程序是干啥的 还记得最开始的程序吗,无非是输出. System.out.println("Hello World"); 此时用户的请求只有一个目标,就是这个 ...
- servlet必知细节(一)
servlet必知细节(一) 今天复习了一下servlet,有过一些编程经验后,与最初学习servlet相比,对servlet理解的角度不同了,最初只是学习了如何写一个servlet,api怎么用,现 ...
- 深入理解HTTP Session
为什么80%的码农都做不了架构师?>>> 深入理解HTTP Session session在web开发中是一个非常重要的概念,这个概念很抽象,很难定义,也是最让人迷惑的一个名词 ...
- 001 Servlet 介绍
Servlet(Server Applet),全称Java Servlet.是用Java编写的服务器端程序.其主要功能在于交互式地浏览和修改数据,生成动态Web内容.狭义的Servlet是指Java语 ...
- java web入门——概念理解、名词解释
引言:当你想入门java web后,一定会查阅到很多相关的名词:Servlet,HTML,Spring...等等之类的,但是对于他们之间的关系总是比较混乱的,这篇文章就是理清这些名词的关系. 什么是w ...
- 探秘Tomcat——一个简易的Servlet容器
即便再简陋的服务器也是服务器,今天就来循着书本的第二章来看看如何实现一个servlet容器. 背景知识 既然说到servlet容器这个名词,我们首先要了解它到底是什么. servlet 相比你或多或少 ...
- 初学Java Web(3)——第一个Servlet
这学期 Java Web 课程的第一节课就简短复习了一下 Java 的一些基础知识,所以觉得 Java 的基础知识还是很重要的,但当我想要去写一篇 Java 回顾的文章的时候发现很难,因为坑实在太多了 ...
- Servlet 编程基础
可参考博文 超文本传输协议HTTP. Servlet 概述 Servlet(Server Applet)是Java Servlet 的简称,称为小服务程序或服务连接器,用Java 编写的服务器端程序, ...
最新文章
- Zookeeper 服务注册与发现01——服务提供者
- JavaScript——易班优课YOOC课群在线测试自动答题解决方案(十九)强制重做
- java获取本地外网ip地址
- 三国大将风云java_三国正史四大猛将:临阵斩杀敌方大将,连吕布和马超也做不到...
- 【MySQL】存储过程中,怎么把多个select结果,合并成一个结果集返回?
- testng接口自动化测试_Java+Maven+TestNG接口(API)自动化测试教程(10) 使用 Jenkins 构建自动化测试持续集成...
- spring注入私有字段_Spring字段依赖注入示例
- Protobuf使用规范分享
- 钉钉总裁不穷首谈产品观:To B产品用户不只是CEO
- c语言的高级编程,C语言高级编程
- php字符串的截取方式
- mysql select 列名_Mysql查询出所有列名
- 软件设计架构中各模块breakdown
- 第二篇第十一章灭火救援设施
- CodeCombat计算机科学6.14脆弱的迷宫
- 程序员必须知道的9大数据挖掘工具
- 珍爱生命,举手之劳__如何优雅的叫优步专车
- dlg和app的区别
- 微型计算机系统原理接口与EDA设计技术,微型计算机系统与接口
- 如何制作带照片的工作证