JavaWeb核心知识总结

这里只讲解在企业中常用的核心技术,已经过时的如Jsp,EL,JSTL等等技术不再进行描述
有兴趣的小伙伴可以去作者的语雀知识库进行更多知识的查看。
知识库链接:https://www.yuque.com/books/share/ffbf2b86-52af-4a4f-b144-507a890fb8dc?# 《Teng的计算机知识库》
目前只更新了javaSE相关的知识,不过作者将持续分享一些java的知识,喜欢的话可以收藏加点赞哦。

1. XML

1.1 概述

xml 是可扩展的标记性语言

作用:

  1. 用来保存数据,而且这些数据具有自我描述性
  2. 它还可以做为项目或者模块的配置文件
  3. 还可以做为网络传输数据的格式(现在 JSON 为主)。

1.2 XML语法

XML语法包含5部分,分别是:

  1. 文档声明
  2. 元素(标签)
  3. xml 属性
  4. xml 注释
  5. 文本区域(CDATA 区)

由于XML语法与HTML语法较为相似,这里不进行描述。

1.3 Dom4j解析技术

首先需要在pom.xml文件中引入相关坐标

dom4j 编程步骤: 编程步骤

  1. 先加载 xml 文件创建 Document 对象
  2. 通过 Document 对象拿到根元素对象
  3. 通过根元素.elelemts(标签名); 可以返回一个集合,这个集合里放着。所有你指定的标签名的元素对象
  4. 找到你想要修改、删除的子元素,进行相应在的操作
  5. 保存到硬盘上

编码实现

<?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类的继承体系

image-20220820102540429

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工程

存数据取数据删除数据
Mapput()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 组成 不同的键值对 表示不同的含义

image-20220820105731929

  • POST请求
    • 请求行
      • 请求的方式 POST
      • 请求的资源路径[+?+请求参数]
      • 请求的协议版本号 HTTP/1.1
    • 请求头
      • key : value 不同的请求头 有不同的含义
    • 请求空行
    • 请求体 =====> 发送给服务器的数据

image-20220820105804659

  • 常用请求头的说明
    • 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

3.3 响应的HTTP协议

  • 响应行
    • 响应的协议和版本号
    • 响应状态码
    • 响应状态描述符
  • 响应头
    • key : value 不同的响应头,有其不同的含义
  • 响应空行
  • 响应体 =====> 就是回传给客户端的数据

image-20220820110008512

常用的响应码说明

  • 200 表示请求成功
  • 302 表示请求重定向
  • 404 表示请求服务器已经收到了,但是你要的数据不存在(请求地址错误)
  • 500 表示服务器已经收到请求,但是服务器内部错误(代码错误)

MIME类型说明

MIME是HTTP协议中的数据类型

MIME类型的数据格式是“大类型/小类型”,并于某一种文件的扩展名相对应

常见的MIME类型

image-20220820110040638

image-20220820110047349

4 HTTPServletRequest类

4.1 概述

HttpServletRequest 类有什么作用

每次只要有请求进入 Tomcat 服务器,Tomcat 服务器就会把请求过来的 HTTP 协议信息解析好封装到 Request 对象中。 然后传递到 service 方法(doGet 和 doPost)中给我们使用。我们可以通过 HttpServletRequest 对象,获取到所有请求的信息。

4.2 常用方法

image-20220820110308915

4.3 请求转发

请求转发是指,服务器收到请求后,从一次资源跳转到另一个资源的操作叫请求转发

image-20220820110355933

请求转发的特点:

  • 浏览器的地址栏不会发生改变
  • 是一次请求
  • 共享Request域对象中的数据
  • 可以转发到WEB-INF目录下的资源
  • 不能访问工程以外的资源

请求转发的方式:

req.getRequestDispatcher("/servlet2").forward(req, resp);

5 HTTPServletResponse类

5.1 概述

HttpServletResponse 类的作用

HttpServletResponse 类和 HttpServletRequest 类一样。每次请求进来,Tomcat服务器都会创建一个 Response 对象传递给 Servlet 程序去使用。HttpServletRequest 表示请求过来的信息,HttpServletResponse表示所有响应的信息, 我们如果需要设置返回给客户端的信息,都可以通过HttpServletResponse 对象来进行设置

5.2 两个输出流的使用

image-20220820110535308

两个流同时只能使用一个

使用了字节流,就不能再使用字符流,反之亦然,否则就会报错

响应乱码解决方法

resp.setcontentType("text/html;charset=UTF-8");

5.3 请求重定向

请求重定向,是指客户端给服务器发请求,然后服务器告诉客户端说。我给你一些地址。你去新地址访问。叫请求重定向(因为之前的地址可能已经被废弃)

image-20220820110639228

请求重定向的特点:

  • 浏览器的地址栏会发生变化
  • 两次请求
  • 不共享Request域中的数据
  • 不能访问WEB-INF下的资源
  • 可以访问工程外的资源

请求重定向的方式

resp.sendRedirect("http:localhost:8080");

6 Cookie与Session

6.1 Cookie

什么是Cookie

  • Cookie是服务器通知客户端保存键值对的一种技术
  • 客户端有了Cookie后,每次请求都发送给服务器
  • 每个Cookie的大小不能超过4kb

如何创建Cookie

image-20220820110900426

服务器如何获取Cookie

req.getCookies();	//返回Cookie数组

image-20220820110950894

Cookie值的修改

image-20220820111026448

image-20220820111041108

浏览器查看Cookie

image-20220820111101619

Cookie生命控制

setMaxAge()
	正数,表示在指定的秒数后过期
    负数,表示浏览器一关,Cookie就会被删除(默认值是-1)
    零,表示马上删除Cookie

Cookie有效路径Path的设置

Cookie的setPath()方法可以有效的过滤哪些 Cookie 可以发送给服务器。哪些不发。 path 属性是通过请求的地址来进行有效的过滤

image-20220820111207643

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技术来实现的

image-20220820111335919

7. Filter-过滤器

7.1 概述

什么是过滤器

  • Filter 过滤器它是 JavaWeb 的三大组件之一。三大组件分别是:Servlet 程序、Listener 监听器、Filter 过滤器
  • Filter 过滤器它是 JavaEE 的规范。也就是接口
  • Filter 过滤器它的作用是:拦截请求,过滤响应

7.2 过滤器的使用

过滤器流程

image-20220820111642611

过滤器的使用步骤

  • 编写一个类实现Filter接口
  • 实现过滤方法doFilter()
  • 配置Filter拦截路径

Filter的生命周期

Filter的生命周期包含几个方法

  1. 构造器方法

  2. init初始化方法

​ 第1,2步,在web工程启动的时候执行(Filter已创建)

  1. doFilter过滤方法

​ 第3步,每次拦截到请求,就会执行

  1. 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过滤器链

多个过滤器如何在一起工作

image-20220820111824218

8 Listener-监听器

8.1 监听器机制

  • 事件:一件事情
  • 事件源:事件发生的地方
  • 监听器:一个对象
  • 注册监听:将事件、事件源、监听器绑定在一起。当事件源上发生某个事件后,执行监听器代码
  • ServletContextListener:监听ServletContext对象的创建和销毁

8.2 方法

  • void contextDestroyed(ServletContextEvent sce) ServletContext对象被销毁之前会调用该方法
  • void contextInitialized(ServletContextEvent sce)ServletContext 对象创建后会调用该方法

8.3 使用步骤

  1. 定义一个类,实现ServletContextListener接口

  2. 复写方法

  3. 配置

    1. web.xml

      cn.itcast.web.listener.ContextLoaderListener

    ​ 指定初始化参数

    • 注解:

      @WebListener

9 AJAX请求

这里只简单介绍以下,不进行详细介绍 😄😄

什么是AJAX请求

AJAX 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术

ajax是一种浏览器通过js异步发送请求,局部更新页面的技术

Ajax请求的局部更新,浏览器地址栏不会发生变化,局部更新不会舍弃原来页面的内容

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ambition0823

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值