这里只讲解在企业中常用的核心技术,已经过时的如Jsp,EL,JSTL等等技术不再进行描述
有兴趣的小伙伴可以去作者的语雀知识库进行更多知识的查看。
知识库链接:https://www.yuque.com/books/share/ffbf2b86-52af-4a4f-b144-507a890fb8dc?# 《Teng的计算机知识库》
目前只更新了javaSE相关的知识,不过作者将持续分享一些java的知识,喜欢的话可以收藏加点赞哦。
1. XML
1.1 概述
xml 是可扩展的标记性语言
作用:
- 用来保存数据,而且这些数据具有自我描述性
- 它还可以做为项目或者模块的配置文件
- 还可以做为网络传输数据的格式(现在 JSON 为主)。
1.2 XML语法
XML语法包含5部分,分别是:
- 文档声明
- 元素(标签)
- xml 属性
- xml 注释
- 文本区域(CDATA 区)
由于XML语法与HTML语法较为相似,这里不进行描述。
1.3 Dom4j解析技术
首先需要在pom.xml文件中引入相关坐标
dom4j 编程步骤: 编程步骤
- 先加载 xml 文件创建 Document 对象
- 通过 Document 对象拿到根元素对象
- 通过根元素.elelemts(标签名); 可以返回一个集合,这个集合里放着。所有你指定的标签名的元素对象
- 找到你想要修改、删除的子元素,进行相应在的操作
- 保存到硬盘上
编码实现
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book sn="SN12341232">
<name>辟邪剑谱</name>
<price>9.9</price>
<author>班主任</author>
</book>
<book sn="SN12341231">
<name>葵花宝典</name>
<price>99.99</price>
<author>班长</author>
</book>
</books>
/**
* dom4j 获取Document对象
*/
@Test
public Document getDocument() throws DocumentException {
// 要创建一个Document对象,首先需要创建一个SAXReader对象
SAXReader reader = new SAXReader();
// 这个对象用于读取xml文件,然后返回一个Document
Document document = reader.read("src/main/resources/books.xml");
// 打印到控制台,看是否创建成功
// System.out.println(document); // org.dom4j.tree.DefaultDocument@5cee5251 [Document: name src/main/resources/books.xml]
return document;
}
/**
* 读取 xml 文件中的内容
*/
@Test
public void readXML() throws DocumentException {
// 需要分四步操作:
// 第一步,通过创建 SAXReader 对象。来读取 xml 文件,获取 Document 对象
Document document = getDocument();
// 第二步,通过 Document 对象。拿到 XML 的根元素对象
Element rootElement = document.getRootElement();
// 打印测试
// System.out.println(rootElement.asXML());
// 第三步,通过根元素对象。获取所有的 book 标签对象
// Element.elements(标签名)它可以拿到当前元素下的指定的子元素的集合
List<Element> books = rootElement.elements("book");
// 第四步,遍历每个 book 标签对象。然后获取到 book 标签对象内的每一个元素,再通过 getText() 方法拿到起始标签和结束标签之间的文本内容
for (Element book : books) {
// 拿到 book 下面的 name 元素对象
Element name = book.element("name");
// 拿到 book 下面的 price 元素对象
Element price = book.element("price");
// 拿到 book 下面的 author 元素对象
Element author = book.element("author");
// 再通过 getText() 方法拿到起始标签和结束标签之间的文本内容
System.out.println("书名:" + name.getText() + ",价格:" + price.getText() + ",作者:" + author.getText());
}
/**
* 书名:辟邪剑谱,价格:9.9,作者:班主任
* 书名:葵花宝典,价格:99.99,作者:班长
*/
2. Servlet
2.1 Servlet技术
什么是Servlet?
- Servlet是JavaEE规范之一。规范就是接口,其实Servlet就是接口
- Servlet是JavaWeb的三大组件之一。三大组件分别是:Servlet程序、Filter过滤器、Listener监听器
- Servlet是运行在服务器上的一个java小程序,它可以接收客户端发送过来的请求,并响应数据给客户端
手动实现Servlet
一般编写一个类去实现Servlet接口并实现响应方法(原生的还需要在web.xml中配置)
Servlet的生命周期
1、执行Servlet构造器方法
2、执行init初始化方法
第一、二步,是在第一次访问的时候创建Servlet程序会调用
3、执行service方法
第三步每次访问都会被调用
4、执行destroy销毁方法
第四步,在web工程停止的时候调用
通过继承HttpServlet实现Servlet程序
一般在实际项目开发中,都是使用继承 HttpServlet 类的方式去实现Servlet程序
1、编写一个类去继承 HttpServlet 类
2、根据业务需要重写 doGet 或 doPost 方法
3、到 web.xml 中的配置 Servlet 程序的访问地址
Servlet类的继承体系
2.2 ServletConfig类
ServletConfig 类从类名上来看,就知道是 Servlet 程序的配置信息类。
Servlet 程序和 ServletConfig 对象都是由 Tomcat 负责创建,我们负责使用。
Servlet 程序默认是第一次访问的时候创建,ServletConfig 是每个 Servlet 程序创建时,就创建一个对应的 ServletConfig 对象。
ServletConfig类的三大作用
- 可以获取 Servlet 程序的别名 servlet-name 的值
- 获取初始化参数 init-param
- 获取 ServletContext 对象
2.3 ServletContext类
什么是ServletContext?
- ServletContext是一个接口,它表示Servlet上下文对象
- 一个 web 工程,只有一个ServletContext对象实例
- ServletContext 对象是一个域对象
- ServletContext 是在 web 工程部署启动的时候创建。在 web 工程停止的时候销毁
域对象:可以像Map一样存取数据的对象;这里的域指的是存取数据的操作范围,整个web工程
存数据 | 取数据 | 删除数据 | |
---|---|---|---|
Map | put() | get() | remove() |
域对象 | setAttribute() | getAttribute() | removeAttribute() |
ServletContext类的四个作用
- 获取 web.xml 中配置的上下文参数 context-param
- 获取当前的工程路径,格式: /工程路径
- 获取工程部署后在服务器硬盘上的绝对路径
- 像 Map 一样存取数据
3. HTTP协议
3.1 概述
什么是HTTP协议
HTTP协议,就是指客户端和服务器之间通信时,发送的数据,需要遵守的规则,叫 HTTP 协议。
HTTP协议中的数据又叫报文
请求的HTTP协议
客户端给服务器发送数据叫请求。
服务器给客户端回传数据叫响应。
3.2 两种请求方式
请求又分为GET请求,和POST请求两种
- GET请求
- 请求行
- 请求的方式 GET
- 请求的资源路径[+?+请求参数]
- 请求的协议的版本号 HTTP/1.1
- 请求头
- key : value 组成 不同的键值对 表示不同的含义
- 请求行
- POST请求
- 请求行
- 请求的方式 POST
- 请求的资源路径[+?+请求参数]
- 请求的协议版本号 HTTP/1.1
- 请求头
- key : value 不同的请求头 有不同的含义
- 请求空行
- 请求体 =====> 发送给服务器的数据
- 请求行
- 常用请求头的说明
- Accept: 表示客户端可以接收的数据类型
- Accept-Language: 表示客户端可以接收的语言类型
- User-Agent:表示客户端浏览器的信息
- Host:表示请求时的服务器的ip和端口号
- 哪些是GET请求,哪些是POST请求
- GET请求
- form标签 method=get
- a标签
- link标签引入css
- Script标签引入js文件
- img标签引入图片
- iframe引入html页面
- 在浏览器地址栏输入地址后敲回车
- POST请求
- form标签 method=post
- GET请求
3.3 响应的HTTP协议
- 响应行
- 响应的协议和版本号
- 响应状态码
- 响应状态描述符
- 响应头
- key : value 不同的响应头,有其不同的含义
- 响应空行
- 响应体 =====> 就是回传给客户端的数据
常用的响应码说明
- 200 表示请求成功
- 302 表示请求重定向
- 404 表示请求服务器已经收到了,但是你要的数据不存在(请求地址错误)
- 500 表示服务器已经收到请求,但是服务器内部错误(代码错误)
MIME类型说明
MIME是HTTP协议中的数据类型
MIME类型的数据格式是“大类型/小类型”,并于某一种文件的扩展名相对应
常见的MIME类型
4 HTTPServletRequest类
4.1 概述
HttpServletRequest 类有什么作用
每次只要有请求进入 Tomcat 服务器,Tomcat 服务器就会把请求过来的 HTTP 协议信息解析好封装到 Request 对象中。 然后传递到 service 方法(doGet 和 doPost)中给我们使用。我们可以通过 HttpServletRequest 对象,获取到所有请求的信息。
4.2 常用方法
4.3 请求转发
请求转发是指,服务器收到请求后,从一次资源跳转到另一个资源的操作叫请求转发
请求转发的特点:
- 浏览器的地址栏不会发生改变
- 是一次请求
- 共享Request域对象中的数据
- 可以转发到WEB-INF目录下的资源
- 不能访问工程以外的资源
请求转发的方式:
req.getRequestDispatcher("/servlet2").forward(req, resp);
5 HTTPServletResponse类
5.1 概述
HttpServletResponse 类的作用
HttpServletResponse 类和 HttpServletRequest 类一样。每次请求进来,Tomcat服务器都会创建一个 Response 对象传递给 Servlet 程序去使用。HttpServletRequest 表示请求过来的信息,HttpServletResponse表示所有响应的信息, 我们如果需要设置返回给客户端的信息,都可以通过HttpServletResponse 对象来进行设置
5.2 两个输出流的使用
两个流同时只能使用一个
使用了字节流,就不能再使用字符流,反之亦然,否则就会报错
响应乱码解决方法
resp.setcontentType("text/html;charset=UTF-8");
5.3 请求重定向
请求重定向,是指客户端给服务器发请求,然后服务器告诉客户端说。我给你一些地址。你去新地址访问。叫请求重定向(因为之前的地址可能已经被废弃)
请求重定向的特点:
- 浏览器的地址栏会发生变化
- 两次请求
- 不共享Request域中的数据
- 不能访问WEB-INF下的资源
- 可以访问工程外的资源
请求重定向的方式
resp.sendRedirect("http:localhost:8080");
6 Cookie与Session
6.1 Cookie
什么是Cookie
- Cookie是服务器通知客户端保存键值对的一种技术
- 客户端有了Cookie后,每次请求都发送给服务器
- 每个Cookie的大小不能超过4kb
如何创建Cookie
服务器如何获取Cookie
req.getCookies(); //返回Cookie数组
Cookie值的修改
浏览器查看Cookie
Cookie生命控制
setMaxAge()
正数,表示在指定的秒数后过期
负数,表示浏览器一关,Cookie就会被删除(默认值是-1)
零,表示马上删除Cookie
Cookie有效路径Path的设置
Cookie的setPath()方法可以有效的过滤哪些 Cookie 可以发送给服务器。哪些不发。 path 属性是通过请求的地址来进行有效的过滤
6.2 Session会话
什么是Session会话
- Session就是一个接口(HttpSession)
- Session就是会话。它是用来维护一个客户端和服务器之间关联的一种技术
- 每个客户端都有自己的一个 Session 会话
- Session 会话中,我们经常用来保存用户登录之后的信息
如何创建Session和获取(id号,是否为新)
request.getSession()
第一次调用是:创建Session会话
之后调用都是:获取前面创建号的Session会话对象
isNew();判断到底是不是新创建出来的
true 表示刚创建
false 表示获取之前创建
每个会话都有一个身份证号。也就是 ID 值。而且这个 ID 是唯一的。
getId() 得到 Session
Session域数据的存取
req.getSession().setAttribute("key1", "value1");
.getAttribute("key1");
Session生命周期控制
public void setMaxInactiveInterval(int interval) 设置Session的超时时间(以秒为单位),超过指定的时长,Session就会被自动销毁。
值为正数的时候,设定 Session 的超时时长
负数表示永不超时(极少使用)
public int getMaxInactiveInterval()获 取 Session 的超时时间
public void invalidate() 让当前 Session 会话马上超时无效。
Session的默认超时时间时长为30分钟
在Tomcat中的web.xml配置文件中
浏览器和Session之间的关联的技术内幕
Session技术,底层其实是基于Cookie技术来实现的
7. Filter-过滤器
7.1 概述
什么是过滤器
- Filter 过滤器它是 JavaWeb 的三大组件之一。三大组件分别是:Servlet 程序、Listener 监听器、Filter 过滤器
- Filter 过滤器它是 JavaEE 的规范。也就是接口
- Filter 过滤器它的作用是:拦截请求,过滤响应
7.2 过滤器的使用
过滤器流程
过滤器的使用步骤
- 编写一个类实现Filter接口
- 实现过滤方法doFilter()
- 配置Filter拦截路径
Filter的生命周期
Filter的生命周期包含几个方法
-
构造器方法
-
init初始化方法
第1,2步,在web工程启动的时候执行(Filter已创建)
- doFilter过滤方法
第3步,每次拦截到请求,就会执行
- destroy销毁
第4步,停止web工程的时候,就会执行(停止web工程,也会销毁Filter过滤器)
Filter的拦截路径
-
精确匹配
<url-pattern>/target.jsp</url-pattern> 以上配置的路径,表示请求地址必须为:http://ip:port/工程路径/target.jsp
-
目录匹配
<url-pattern>/admin/*</url-pattern> 以上配置的路径,表示请求地址必须为:http://ip:port/工程路径/admin/*
-
后缀名匹配
<url-pattern>*.html</url-pattern>
以上配置的路径,表示请求地址必须以.html 结尾才会拦截到
<url-pattern>*.do</url-pattern>
以上配置的路径,表示请求地址必须以.do 结尾才会拦截到
<url-pattern>*.action</url-pattern>
以上配置的路径,表示请求地址必须以.action 结尾才会拦截
Filter过滤器它只关心请求的地址是否匹配,不关心请求的资源是否存在!!!
7.3 FilterConfig类
FilterConfig 类见名知义,它是 Filter 过滤器的配置文件类。
Tomcat 每次创建 Filter 的时候,也会同时创建一个 FilterConfig 类,这里包含了 Filter 配置文件的配置信息
FilterConfig类的作用是获取filter过滤器的配置内容
- 1、获取Filter的名称filter-name的内容
- 2、获取在Filter中配置的init-param初始化参数
- 3、获取ServletContext对象
7.4 FilterChain过滤器链
多个过滤器如何在一起工作
8 Listener-监听器
8.1 监听器机制
- 事件:一件事情
- 事件源:事件发生的地方
- 监听器:一个对象
- 注册监听:将事件、事件源、监听器绑定在一起。当事件源上发生某个事件后,执行监听器代码
ServletContextListener
:监听ServletContex
t对象的创建和销毁
8.2 方法
void contextDestroyed(ServletContextEvent sce)
:ServletContext
对象被销毁之前会调用该方法void contextInitialized(ServletContextEvent sce)
:ServletContext
对象创建后会调用该方法
8.3 使用步骤
-
定义一个类,实现ServletContextListener接口
-
复写方法
-
配置
- web.xml
cn.itcast.web.listener.ContextLoaderListener
指定初始化参数
-
注解:
@WebListener
- web.xml
9 AJAX请求
这里只简单介绍以下,不进行详细介绍 😄😄
什么是AJAX请求
AJAX 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术
ajax是一种浏览器通过js异步发送请求,局部更新页面的技术
Ajax请求的局部更新,浏览器地址栏不会发生变化,局部更新不会舍弃原来页面的内容