Servlet
历史
web开发:
web1.0 纯静态页面 html
web2.0 动态的 允许用户与网站进行交互
动态脚本语言:
1.asp 微软的 新的技术 .net 运行在window服务器 如lis服务器
2.php 活跃的 适合做网站 草根语言 黄金组合:lamp
Linux + Apache + Mysql + php
3.jsp java server pages --------前身 servlet
jsp1.0 早先的语法 脚本和html混合 <%这里允许写java代码
%>,<%=表达式
%>,<%!声明变量或方法!
%>
jsp2.0 引入了jstl标签技术 核心标签 c标签 <c:set var = '‘name’'value =“张三”/ > sql标签操作数据库 fn标签功能函数 fmt标签格式化 x标签xml
web3.0 前后端分离
前端框架 基于javascrpt/typescript Vue react angular
版本
4.0.1之前 属于Apache下的 包名是javax.servlet…
4.0.2开始 属于Jakarta(Apache下的一个子组织)
Servlet介绍
RIA 应用: rich internet application
其他技术:
Adobe Flex----经过编译后成为flash flash动画
Siverlight 微软的
Servlet容器
区分
服务器:
通常所说的Web副服务器,比如Apcahe,Nginx,IIS等,他们的功能往往都比较单一,只能提供http(s)服务,让用户访问静态资源(HTML文档,图片,CSS文件,JavaScript文件等),他们不能执行任何变成语言,也不能发那个文数据库,更不能让用户注册和登录.
容器(包含服务器+servlet):
要想运行servlet代码,还需要一种额外的部件,该部件必须支持Servlet规范,实现了servlet接口和一些基础类,这种部件就是Servlet容器.
为了简化部署流程,Web容器往往也会自带Web服务器模块,提供基本的HTTP服务,如:Tomcat
Tomcat版本选择
端口号
默认为8080
localhost----对应本机地址----127.0.0.1
Tomcat正常运行的前提是jdk环境变量没有问题
Servlet接口
Servlet本身是一个java类,他的运行必须实例化
实例化:
在java中通过 new 来实例化
Servlet的实例化是由容器来实例化的(不再是程序员自己实例化),在容器启动时实例化
JSP
与页面相关的设置有三条指令:
page指令 设置与页面相关的信息 比如 :编码,内容类型…
include指令 包含其他页面 将其他页面的内容加载到当前页面
taglib指令 引入jstl标签库
注意:指令必须放到文档的最前面
指令语法:
<%@ 指令 %>
HttpServlet
请求方法
restful api:
- get 代表读操作
- post 代表新增 资源
- put 代表的修改资源
- delete 代表删除资源
get请求 参数显示在地址栏中 不能传递敏感参数(不安全),地址栏长度是有限制的,不能传递太多的参数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9WRnt1Ed-1668511164590)(assets/202211111700676.png)]
post请求 参数不会显示在地址栏,更安全 以表单数据传递,参数的长度和大小不受限制
Servlet配置
xml配置
通过在web.xml映射Servlet路径来访问
servletConfig
XMl
xml一般值可扩展的标记语言,用来描述数据或配置文件
xml允许用户自定义标签:
<中国>
<河南省>
<郑州市>
<开封>
</开封>
</郑州市>
</河南省>
</中国>
一个严格,良好的xml文档 ,具有文档验证规则 规则:
早期版本 DTD 文档类型定义 定义了xml文档中标签的规则(通俗说:xml文档中可以使用哪些标签,标签出现的顺序,标签的属性)
元素限制符号说明:
- ? 说明指定的元素最多出现一次
- Servlet* 元素后边的* 代表元素可以出现任意次
- 元素+ 代表元素至少出现一次
XML SCHEMA 是一种xml格式的 文档验证
servlet实例 创建时机
两种创建时机
- 在访问的时候创建(默认)
- 在容器启动的时候创建 需要配置
load-on-startup元素
load-on-startup是web.xml中的一个节点,是servlet元素的子元素,用来标记servlet容器启动时是否初始化当前servlet,以及当前servlet的初始化顺序.
load-on-startup元素取值规则如下:
- 它的取值必须是一个整数;
- 当值小于0或者没有指定时,则表示容器在该servlet被首次请求时才会被加载;
- 当值大于0或者等于0是,表示容器在启动时就会加载并初始化该servlet,取值越小,优先级越高;
- 当取值相同时,容器就会自动选择顺序进行加载.
@WebServlet注解的loadOnStartup属性与web.xml中的load-on-startup元素相对应,取值的规则和汉译相同.
项目部署
不包含war包
包含war包
war包是web项目的归档文件(类似于.zip压缩包),放到tomcat目录下,服务器会自动解压
@WebServlet注解
@WebServlet注解和web.xml的优缺点
使用web.xml或@WebServlet注解都可以配置Servlet,两者各有优缺点
@WebServlet注解配置Servlet
- 优点:@WebServle直接在Servlet类中使用,代码量少,配置简单.每个类只关注自身业务逻辑,与其他Servlet类互不干扰,适合多人同时开发
- 缺点:Servlet较多时,每个Servlet的配置分布在各自的类中,不便于查找和修改
web.xml配置文件配置Servlet
- 优点:集中管理Servlet的配置,便于查找和修改
- 缺点:代码较繁琐,可读性不强,不易于理解
Servlet的生命周期
生命周期是指事物从创建到毁灭的过程.
Servlet也有生命周期Servlet的生命周期就是Servlet从创建到销毁的过程.Servlet的生命周期由Servlet容器管理,主要分为以下3个阶段.
- 初始化阶段
- 运行时阶段
- 销毁阶段
软件结构
c/s结构 client server 客户端服务器
b/s结构 brower server 浏览器服务器 (通过浏览器访问的应用)