-
xml
-
概念:可扩展标记语言
-
可扩展:标签都是自定义的。任意的自定义标签
-
-
功能
-
存储数据
-
在网络中传输
-
-
xml与html的区别
-
xml的标签都是自定义的,html标签是预定义的
-
xml语法严格
-
xml是存储数据的,html是展示数据的
-
-
-
语法
-
基本语法
-
xml文档后缀是xml
-
xml第一行必须定义文档声明
-
xml有且仅有一个根标签
-
属性值必须要用引号引起来
-
标签必须正确关闭
-
xml标签名称区分大小写
-
-
快速入门
-
组成部分
-
文档声明
-
格式:<?xml 属性列表 ?>
-
属性列表:
-
version:版本号,必须的属性
-
encoding:编码方式,告知解析引擎当前文档使用的字符集,默认值:ISO-8859-1
-
standalone:是否独立
-
yes:不依赖于其他文件
-
no:依赖于其他文件
-
-
-
-
指令
-
标签
-
属性
-
id的属性值是唯一的
-
-
文本内容
-
CDATA区,在该区域的数据会被原样展示
格式:<![CDATA[ 数据 ]]>
-
-
约束:规定xml文档的书写规则
-
作为框架的使用者(程序员)
-
能够再xml中引入约束文档
-
能够简单的读懂约束文档
-
-
分类:
-
DTD:简单的约束技术
-
Schema:复杂的约束技术
-
-
DTD
-
引入dtd文档到xml文档中
-
内部dtd:将约束规则定义在xml文档中
-
外部dtd:将约束规则定义在外部的dtd文件中
-
本地:<!DOCTYPE 根标签名 SYSTEM"dtd文件的位置" >
-
网络:<!DOCTYPE 根标签名 PUBLIC"dtd文件的名字" >
-
-
-
-
Schema
-
填写xml文档的根元素
-
引入xsi前缀,xmlns=“”
-
引入xsd文件命名空间
-
为每一个xsd约束声明一个前缀
-
-
解析:操作xml文档,将文档中的数据读取到内存中
-
解析(读取):将文档中的数据读取到内存中
-
写入:将内存中的1数据保存到xml文档中,持久化的储存
··解析xml的方式:
DOM:将标记语言文档一次性加载进内存,在内存中形成dom树
-
优点:操作方便,可以对文档进行crud的所有操作
-
缺点:占内存
SAX:逐行读取,基于事件驱动的
-
优点:不占内存
-
缺点:只能读取,不能增删改
-
-
xml常见的解析器:
-
JAXP:sun公司提供的解析器,支持dom和dax两种思想
-
DOM4J:优秀的解析器
-
Jsoup:
-
步骤:
-
导入jar包
-
获取document对象
-
获取对应的标签
-
和获取数据
-
-
对象的使用
-
parse:解析html和xml文档返回Docement对象
-
Document:文档对象,代表内存中的dom树
-
getElementByTag根据标签名称获取元素对象的集合
-
根据属性名称获取对象集合
-
根据对应的属性值和属性名获取元素对象集合
-
-
Elements:元素对象的集合,可以当做ArrayList<element>使用
-
Element:元素对象
-
Node:节点对象
-
-
-
-
-
-
Servlet:server applet
-
概念:运行在服务器端的小程序
Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)
-
快速入门
-
创建Javaee项目
-
实现一个类,实现servlet接口
-
实现接口中的抽象方法
-
配置Servlet
-
-
执行原理
-
当服务器接收到客户端浏览器的请求后,会解析请求url路径,获取访问的Servelet的资源路径
-
查找web.xml文件,是否有对应的<url-patten>标签体内容
-
如果有,则在找到对应的<servlet-class> 全类名
-
tomocat会将字节码文件加载进内存,并且创建对象
-
调用方法
-
-
Servlet中的生命周期
-
被创建,执行init方法,只执行一次
-
Servlet什么时候被创建?
-
默认情况下第一次被访问时,servlet被创建
-
可以去配置执行Servlet方法
-
<!--指定Servlet的创建时机
1,第一次被访问是,创建 <load-on-startup>为负数
2.服务器被访问时创建
<load-on-startup>值为0或者正整数
-->
-
-
-
Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的
-
多个用户同时访问时,可能存在线程安全问题。
-
解决:尽量不要再Servlet中定义成员变量
-
-
-
提供服务,执行service方法,执行多次
-
销毁:执行destory方法,只执行一次
-
Servlet被销毁时执行,服务器关闭时,Servlet被销毁
-
只有服务器正常关闭时候,才会执行destory方法
-
destory在销毁之前指定,一般用于释放资源
-
-
Servlet3.0
-
好处
-
支持注解配置。可以不需要web.xml了
-
-
步骤
-
创建JavaEE项目,选择Servlet3.0以上版本,可以不创建web.xml
-
定义一个文件夹,实现Servlet接口
-
复写方法
-
在类上使用@WebServlet注解,进行配置
@WebServlet("资源路径")
Servlet --接口
|
GenericServlet
|
httpServlet
-
GenericServlet:将Servlet接口中的其他方法做了默认空实现,只将Service作为抽象
HttpServlet:对http协议的封装
1.定义类继承httpServlet
2.重写doGet/doPost方法
-
-
Servlet相关配置
-
urlpartten:Servlet访问路径
-
一个Servlet可以定义多个访问路径:@WebServlet({“/d4”,“/DD4”})
-
路径定义规则
-
/xxx
-
/xxx/xxx:多层路径
-
*.do
-
-
-
-
-
-
HTTP
-
概念:Hyper Text Transfer Protocol 超文本传输协议
-
传输协议:定义了客户端和服务器端通信时的格式
-
特点
-
基于TCP/IP的高级协议+
-
默认端口号80
-
基于请求/相应模型:一次请求一次响应
-
每次请求都是独立的
-
-
历史版本
-
1.0,每次链接都是新建连接
-
1.1,复用连接。
-
-
-
-
请求消息数据格式
-
请求行
-
请求方式 请求url 请求协议/版本
-
Get login http/1.1
-
请求方式:
-
http协议有7种请求方式,常见的有两种
-
Get
-
请求参数在请求行中,在url后
-
请求的url长度有限制
-
不太安全
-
-
Post
-
请求参数在请求体中
-
请求的url长度没有限制
-
相对安全
-
-
-
-
请求头:客户端浏览器告诉服务器一些信息
-
请求头名称:请求头值
-
常见的请求头:
-
User-Agent:浏览器告诉服务器,我访问你使用的浏览器版本信息
-
可以在服务器获取该头的信息,解决浏览器兼容问题
-
-
Referer:http://localhost/login.html
-
告诉服务器请求从哪里来
-
作用
-
防盗链
-
统计工作
-
-
-
-
-
请求空行
-
空行
-
-
请求体
-
-
-
响应消息数据格式
-
Request请求
-
request和response对象的原理
-
request和response对象是由服务器创建的。我们来使用他们
-
request对象来获取请求消息,response对象是来设置响应消息
-
-
request对象继承体系结构
-
servletRequest
-
HttpServletRequest
-
-
request功能:
-
获取请求消息数据
-
获取请求行数据
-
GET /day14/demo1?name = zhangd HTTP/1.1
-
方法
-
获取请求方式
-
String getMethod()
-
-
**获取虚拟目录:/day14
-
getContextPsth
-
-
获取Servlet路径:/demo1
-
getServletPath
-
-
获取get请求参数
-
getQueryString()
-
-
** 获取请求的URI
-
getRequestURI
-
URL:统一资源定位符 http://...... //中华人名共和国
-
URI:统一资源标识符 。。。共和国
-
-
获取协议以及版本号
-
getPotocol
-
-
-
-
获取请求头数据
-
方法
-
String getHeader(String name):通过请求头的名称获取请求头的值
-
Enumeration<String> getHeaderName():和获取所有的请求头名称
-
-
-
获取请求体数据
-
请求体:只有POST请求方式,才有请求体,在请求体中封装了POST请求的参数
-
-
获取流对象
-
bufferedReader getReader():获取字符输入流,只能操作字符数据
-
ServletInputStream getInputStream():获取字节输入流,可以操作所有数据类型
-
-
再从流对象中拿数据
-
-
-
-
其他功能
-
获取请求参数通用的方式
-
getParameter(String name):根据参数名称获取参数值
-
getParameterValue(String name):根据参数名称获取参数值的数组 hobby=xx&hobyby=name
-
Enumeration<String> getHeaderNames():获取所有请求参数名称
-
Map<String ,String[]> getParameterMap():获取所有参数的map集合
-
中文乱码问题
-
get方式:womocat 8已经将get方式乱码解决
-
post方式:会乱码
-
在获取参数前设置流的编码
-
request.setCharacterEncoding(“utf-8”);
-
-
-
-
-
请求转发:一种在服务器内部的资源跳转方式
-
步骤
-
通过Request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path)
-
使用该对象进行转发:forward(RequestDispatcher request, RequestDispatcher response )
-
-
特点:浏览器地址栏路径没有发生变化。
只能访问到当前服务器内部资源中。
转发是一次请求。
-
-
共享数据:
-
域对象:一个有作用范围的对象,可以在范围内共享数据
-
request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据
-
方法
-
setAttribute(string name,Object obj):存储数据
-
getAttribute(String name):通过建获取值
-
removeAttribute(String name):同过键值对移除
-
-
-
获取ServletContext
-
-
HTTP协议_响应消息
-
请求消息:客户端发给服务器端的数据
-
数据格式
-
请求行
-
请求头
-
请求空行
-
请求体
-
-
-
响应消息:服务器端发给客户端的数据
-
数据格式
-
响应行
-
组成:协议/版本 响应状态码 状态码描述
-
响应状态码:服务器告诉客户端浏览器本次请求和响应的一个状态
-
状态码都是三位数字
-
1xx:服务器接收客户端消息但没有接收完成,等待一段时间,发送1xx
-
2xx:成功代表:200
-
3xx:重定向。代表:302(重定向):304(缓存)
-
4xx:客户端错误。
-
5xx:服务器端错误。
-
-
-
-
响应头
-
格式:头名称:值
-
常见的响应头:
-
Content-Type: 服务器告诉客户端本次响应体数据格式以及编码格式
-
Content-disposition:服务器告诉客户端以什么格式打开响应体数据
-
值:
-
默认:in-line:默认值,在当前页面打开
-
attachment:以附件形式打开响应体
-
-
-
-
-
响应空行
-
响应体:真实的传输的数据
-
-
响应数据格式
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;
charset=UTF-8
Content-Length: 97
Date: Tue, 23 Mar 2021 06:45:15 GMT
Response对象
-
功能:设置响应消息
-
设置响应行
-
格式:http/1.1 200 ok
-
设置状态码:setStatus(int sc)
-
-
设置响应头:setHeader(String name,String value)
-
设置响应体
-
使用步骤:
-
获取输入流:
-
字节输入流:
-
-
使用输出流,将数据输出到客户端浏览器
-
-
案列:
-
完成重定向
-
重定向:浏览器
-
-
服务器输出字符数据到浏览器
-
中文乱码:编码解码使用的字符集不一样,字符集:默认使用GBK
-
//告诉浏览器,服务器发送数据的编码格式,建议浏览器使用该编码编码
resp.setHeader ( "content-type","text/html;charset=utf-8" );
-
-
服务器输出字节数据到浏览器
-
获取字节数据
-
输出数据
-
-
验证码
-
本质:图片
-
目的:防止恶意表单注册
-
-
-
-
-
ServletContext
-
概念,代表整个web应用,可以和程序的容器(服务器)来通信
-
获取
-
通过request对象获取
request.getServletContext();
-
通过HttpServlet
-
-
功能:
-
获取MIME类型
MIME类型:在互联网通信过程中定义的一种文件数据类型
格式:大类型:小类型 text/html
获取:getMimeType(String file)
-
域对象:共享数据
-
setAttribute(String name , Object value)
-
getAttribute
-
ServletContext对象范围,所有用户数据
-
-
获取文件的真实(服务器路径)路径
-
-
-
文件下载案列
-