JavaWeb是什么?关于JavaWeb的那些知识点,一文带你复盘那些你应该知道的JavaWeb知识点

前言

当你将被动学习变成主动学习的时候,那一定不是低谷,在学习上一定要缺乏满足感。在2022年的暑假中,通过B站学习动力节点JavaWeb编程,丰富了自己的技术栈,以下是关于JavaWeb一些知识点总结,如有不实之处,还请个位小伙伴指正。

JavaWeb

Java Web,是用Java技术来解决相关web互联网领域的技术栈。
web包括:web服务端和web客户端两部分。Java在服务器端的应用非常的丰富,比如Servlet,JSP、第三方框架等等。Java技术对Web领域的发展注入了强大的动力。

Servlet

关于系统架构

1.系统架构包括什么形式
  • C/S架构
  • B/S架构
2.C/S架构
  • Client/Server(客户端/服务器)
  • C/S结构的软件
    • QQ…
  • C/S架构的特点
    • 需要安装特定的客户端软件
  • C/S系统架构的优点和缺点
    • 优点
      • 体验好,界面炫酷:软件中展示给用户的界面样式都是UI设计师精心设计的
      • 服务器压力小:大量的数据都是集成在客户端软件当中的,服务器只需要传送很少的数据量,服务器的压力很小
      • 速度快:软件中的数据大部分都是集成到客户端软件当中的,很少量的数据从服务器端传过来,所以C/S系统架构的速度快
      • 安全:大量的数据都是集成在客户端软件当中的,并且客户端有很多个,服务器虽然有一个,就算受损,大量的数据在多个客户端上有缓存,所以从这个方面来说,C/S结构的系统比较安全
    • 缺点
      • 升级维护比较差劲:升级维护麻烦,成本比较高。
3.B/S架构
  • Browser/Server(浏览器/服务器)
  • B/S系统架构还是一个C/S系统,只不过这个C比较特殊,Client是一个固定不变的浏览器软件
  • B/S系统架构的优点和缺点
    • 优点
      • 升级维护方便,成本比较低:只需要升级服务器端即可
      • 不需要安装特定的客户端软件,用户操作方便:只需要打开浏览器,搜索即可
    • 缺点
      • 体验差:界面不炫酷,浏览器只支持三个语言html,css,JavaScript
      • 速度慢:所有的数据都是在服务器上,用户发送的每一个请求都是需要服务器做出响应,B/S架构的系统在网络中传送的数据量比较大
      • 不安全:所有的数据都在服务器上,只要服务器发生损坏,最终数据全部丢失
4.C/S和B/S架构的系统,那个好
  • 不同架构的系统在不同的业务场景下有不同的使用场景
5.开发B/S架构的系统

开发B/S架构的系统,就是在开发网站,开发一个WEB系统

  • 需要用到的技术
    • WEB前端
      • HTML
      • CSS
      • JavaScript
    • WEB后端
      • Java
      • C
      • C++
      • Python
      • Golang
      • PHP

      • 使用Java做WEB开发我们称为JavaWeb开发,最核心的规范:Servlet规范

B/S架构的系统通信原理

1.WEB系统的访问过程
  • 打开浏览器
  • 找到地址栏
  • 输入一个合法的网站
  • 确认(回车)
  • 在浏览器上会显示响应的结果
2.WEB系统的通信原理,通信过程
  • 用户输入网址(URL)
  • 域名解析器进行域名解析:http://110.242.68.3:80/index.html
  • 浏览器软件在网络中搜索110.242.68.3:80这一台主机
  • 定位110.242.68.3:80这台主机上80端口对应的服务器软件
  • 80端口对应的服务器软件找到资源名是index.html的资源
  • 服务器软件找到index.html文件,并且将文件中的内容直接输出响应到浏览器上
  • 浏览器接收到来自服务器的文件,并将其解析到浏览器上
  • 浏览器渲染,执行HTML、CSS、JavaScript代码,展示效果
3.域名

官方定义:是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)

  • http://www.baidu.com/(网址)
  • www.baidu.com是一个域名
  • 在浏览器地址栏上输入域名,回车之后,域名解析器会将域名解析出来一个具体的IP地址和端口号等
4.IP地址

官方定义:IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。
IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异

  • 类似于一个人的身份证号,IP地址是计算机在网络中的一个身份证号,在同一个网络中,IP地址是唯一的。
  • A计算机想要和B计算机通信,首先要知道B计算机的IP地址,有了IP地址才能建立连接
5.端口号

官方定义:所谓的端口,就好像是门牌号一样,客户端可以通过ip地址找到对应的服务器端,但是服务器端是有很多端口的,每个应用程序对应一个端口号,通过类似门牌号的端口号,客户端才能真正的访问到该服务器。为了对端口进行区分,将每个端口进行了编号,这就是端口号

  • 一个端口代表一个软件
  • 一个计算机当中有很多软件,每一个软件启动之后都有一个端口号
  • 在同一个计算机上,端口号具有唯一性
6.请求与响应
  • 请求和响应的数据流向是不同的
  • 从Browser端发送数据到Server端,称为请求(request)
  • 从Server端向浏览器Browser端发送数据,称为响应(response)

WEB服务器软件

1.WEB服务器软件有哪些
  • Tomcat(WEB服务器)
  • jetty(WEB服务器)
  • JBOSS(应用服务器)
2.应用服务器和WEB服务器的关系
  • 应用服务器实现了JavaEE的所有规范(一共13个)
  • WEB服务器只实现了JavaEE中的Servlet和JSP规范
  • 应用服务器是包含WEB服务器的
3.Tomcat下载
  • Apache官网:https://tomcat.apache.org/
  • Tomcat开源免费的轻量级WEB服务器,使用Java语言开发
  • 要想运行Tomcat服务器,需要先有jre,安装JDK,配置Java运行环境
    在这里插入图片描述
    在这里插入图片描述
4.关于Tomcat服务器的目录
  • bin:Tomcat服务器的命令文件存放的目录,比如:打开Tomcat、关闭Tomcat
  • conf:Tomcat服务器的配置文件存放目录
  • lib:Tomcat服务器的核心程序目录,这里的jar包全是class文件
  • logs:Tomcat服务器的日志目录,Tomcat服务器启动等信息都会在这个目录下生成日志文件
  • temp:Tomcat服务器的临时目录,存储临时文件
  • webapps:用来存放大量的webapp
  • work:用来存放JSP文件翻译之后的java文件以及编译之后的class文件
5.在IDEA当中启动Tomcat服务器

新建一个模块

在这里插入图片描述

点击Next

在这里插入图片描述

起一个模块名,然后点击Finish

在这里插入图片描述

给模块添加Web框架支持

在这里插入图片描述
勾选Web Application(4.0),点击ok
在这里插入图片描述
在test文件下生成以下目录

在这里插入图片描述
index.jsp代码(内容已修改)

在这里插入图片描述
部署服务器,点击Tomcat 10.0.22下的Edit Configurations…

在这里插入图片描述
在Deployment中点加号(IDEA版本不同,加号位置不同),点击Artifact…
在这里插入图片描述
找到test:war exploded点击OK添加成功

在这里插入图片描述
修改下面路径为/test(不是固定的),点击Apply,OK
在这里插入图片描述
在Server中配置,点击Apply,OK

在这里插入图片描述
启动服务器,出现Artifact is deployed successfully表示启动成功

在这里插入图片描述
然后,在浏览器地址栏中输入localhost:8080/test,回车

在这里插入图片描述

Servlet对象的生命周期

1.生命周期的概念

Servlet对象的生命周期表示:一个Servlet对象从出生到最后的死亡的整个过程

  • 执行实现类空参的构造器
  • Servlet初始化后调用init() 方法
  • Servlet调用service() 方法来处理客户端的请求
  • Servlet销毁前调用destroy() 方法
  • Servlet由JVM的垃圾回收器进行垃圾回收
2.Servlet对象的维护

Servlet对象的生命周期是由Tomcat服务器(WEB Server)全权负责,在此过程中,JavaWeb程序员无权干涉

3.Servlet对象生命周期中的重要方法
  • init()方法:init()方法在用户发送第一次请求时,创建Servlet时只被调用一次,用于一次性初始化。
  • service()方法:在用户发送第二次、第三次…请求的时候,Servlet对象并没有新建,直接调用之前的Servlet对象的service()方法,只要用户发送一次请求,service()方法就会被Tomcat服务器调用一次。
  • destroy()方法:destroy()方法在服务器关闭的时候被调用,只会被调用一次,执行结束之后,Servlet对象的内存被Tomcat释放。
4.演示Servlet生命周期

在之前的基础上添加jar包依赖,点击Open Module Settings

在这里插入图片描述

在Modules中找到test文件,点击加号(IDEA版本不同加号位置不同)

在这里插入图片描述

在电脑中找到Tomcat文件中两个jar包,点击OK

在这里插入图片描述

在src目录下创建Servlet01类

import jakarta.servlet.*;
import jakarta.servlet.http.HttpServlet;

import java.io.IOException;

public class Servlet01 extends HttpServlet {
	//构造器
    public Servlet01(){
        System.out.println("Servlet01构造器被执行了");
    }
    @Override
    public void init() throws ServletException {
        System.out.println("init()方法被执行了");
    }

    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        System.out.println("service()方法被执行了");
    }

    @Override
    public void destroy() {
        System.out.println("destroy()方法被执行了");
    }
}

在web/WEB-INF/web.xml中配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>Servlet</servlet-name>
        <servlet-class>Servlet01</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Servlet</servlet-name>
        <url-pattern>/servlet</url-pattern>
    </servlet-mapping>
</web-app>

在浏览器地址栏中输入路径,

在这里插入图片描述

查看控制台的输出

在这里插入图片描述

多次刷新页面之后,查看控制台的输出

在这里插入图片描述

然后停止服务器之后,查看控制台的输出

在这里插入图片描述

HTTP协议

1.什么是协议

协议是由其他人或其他组织制定的一套规范、一套标准

2.什么是HTTP协议
  • W3C指定的一种超文本传输协议
  • HTTP协议不但支持传送普通文本,同样支持传送声音、视频、图片等
  • HTTP协议包括请求协议和响应协议
    • 请求协议:浏览器向WEB服务器发送请求的时候需要遵循的一套标准
    • 响应协议:WEB服务器向浏览器发送数据的时候需要遵循的一套标准
3.HTTP请求协议

HTTP的请求协议包括4部分:请求行、请求头、空白行、请求体

GET /servlet05/getServlet?username=jack123&userpwd=100 HTTP/1.1								请求行
Accept: 																					请求头
text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive
Host: localhost:8080
Referer: http://localhost:8080/servlet05/index.html
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="102", "Google Chrome";v="102"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
																							空白行
																							请求体
  • 请求行:请求方法 + URL + 版本号

    • 方法说明
      GET获取资源
      POST传输文件
      PUT传输文件
      HEAD获得报文首部
      DELETE删除文件
      OPTIONS询问支持的方法
      TRACE追踪路径
      CONNECT要求用隧道协议链接代理
      LINK建立和资源之间的联系
      UNLINE断开连接关系
    • URL:协议 + 域名 + 端口号 +[路径&key = value]
    • 版本号:HTTP版本号
  • 请求头:请求头由若干个键值对的结构组成的,每个键值对独占一行,使用冒号分割键与值,遇到空行表示header部分结束。

  • 空白行:用来区分“请求头”和“请求体”

  • 请求体:向服务器发送的具体数据

4.HTTP的响应协议

HTTP的响应协议包括4部分:状态行、响应头、空白行、响应体

HTTP/1.1 200 ok										状态行
Content-Type: text/html;charset=UTF-8				响应头
Content-Length: 128
Date: Tue, 28 Jun 2022 08:46:04 GMT
Keep-Alive: timeout=20
Connection: keep-alive
													空白行
<!doctype html>										响应体
<html>
     <head>
         <title>from get servlet</title>
     </head>
     <body>
         <h1>from get servlet</h1>
     </body>
</html>
  • 状态行:版本号 + 状态码 + 状态的描述信息
    • 版本号:HTTP协议版本号
    • 状态码:HTTP协议中规定的响应状态号,不同的响应结果对应不同的号码
      • 状态号说明
        200请求响应成功,正常结束
        404访问的资源不存在,通常是因为路径写错
        405前端发送的请求和后端请求的处理方式不一致
        500服务器的程序出现异常
    • 状态的描述信息:ok表示正常结束,not found表示资源找不到
  • 响应头:类似于请求消息中的请求头,其格式和请求头信息格式一样
  • 空白行:用来区分“请求头”和“请求体”
  • 响应体:一个html文档,浏览器可以直接识别这个html文件
5.HTTP和HTTPS

HTTPS使用安全套接字层(SSL)进行信息传递,简单来说它是HTTP的安全版

两者的区别

  • https协议需要得到ca申请书,一般免费证书很少,需要交费
  • http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议
  • http和https使用的是完全不同的连接方式用的端口号也不一样,前者是80,后者是443
  • http的连接很简单,是无状态的。HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全
6.GET和POST的区别与选择以及两者的安全性

GET和POST的区别与选择以及两者的安全性

Servlet注解

在Servlet中,web.xml扮演的角色十分重要,它可以将所有的Servlet的配置集中进行管理,但是项目中Servlet数量较多时,web.xml的配置会变得十分的冗长,此时,注解就是一种更好的选择
注解不需要依赖配置文件,它可以直接在类中使用,其配置只对当前类有效

import jakarta.servlet.*;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;

import java.io.IOException;
@WebServlet({"/servlet"})
public class Servlet01 extends HttpServlet {
    public Servlet01(){
        System.out.println("Servlet01构造器被执行了");
    }
    @Override
    public void init() throws ServletException {
        System.out.println("init()方法被执行了");
    }
    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        System.out.println("service()方法被执行了");
    }
    @Override
    public void destroy() {
        System.out.println("destroy()方法被执行了");
    }
}
Servlet注解中属性
  • name:用来指定Servlet的名字,等同于 <servlet-name>
  • urlPatterns:用来指定Servlet的映射路径,可以指定多个路径,需要使用{},等同于<utl-pattern>
  • loadOnStartUp:用来指定服务器启动阶段是否加载该Servlet,等同于<locd-on-startup>
  • value:当注解的属性名是value,使用注解的时候,value属性名可以省略
  • 以上的属性名是可以省略的,不是必须全写的

转发和重定向

在一个web应用中实现资源的跳转,有两种方式:转发和重定向

转发和重定向区别

代码上

//转发
request.getRequestDispatcher("路径").forward(request,response);
//重定向
response.sendRedirect("项目名/路径");

形式上

  • 转发是一次请求,请求结束之后,浏览器地址栏上的路径没有发生变化
  • 重定向是两次请求,重定向之后,浏览器地址栏上的路径发生变化
  • 转发是由WEB服务器来控制的,重定向是由浏览器完成的
  • 转发只能跳转到该服务器当中的资源,重定向可以跳转到任何资源
转发和重定向的选择
  • 如果在上一个Servlet当中向request域当中绑定数据,希望从下一个Servlet当中把request域当中的数据取出来,使用转发机制
  • 其余情况均可使用重定向

Session

session机制实际上是一个规范,不同的语言对这种会话机制都有实现,session对象最主要的作用是保存会话状态,一个会话包含多次请求

Session保存会话状态

Session为什么要保存会话状态?

HTTP协议是一种无状态协议,这种无状态使得在用户发送请求接受之后,浏览器和服务器之间的连接断开,这种无状态协议,可以减轻服务器的压力。但是用户关闭浏览器的这个动作,服务器是不知道,所以需要使用Session保存会话状态

Session实现原理

1.session对象是存储在服务器端的
2. 一个session对象对应一个会话,一个会话中包含多次请求
3. HttpSession session = request.getSession();从服务器中获取当前的session对象,没有则新建
4. 在web服务器中有一个session列表,存储这sessionid和session对象,用户第一次发送请求的时候,服务器创建一个新的session对象和sessionid,web服务器会将sessionid发送给浏览器,然后保存在浏览器的缓存中。用户第二次发送请求的时候,自动将浏览器缓存中的sessionid发送给服务器,服务器从session列表中查找对应的session对象
5.关闭浏览器之后,浏览器中保存的sessionid消失,会话结束
6.浏览器关闭的时候,服务器无法检测到浏览器关闭了,session的销毁主要依靠session超时机制
7.session对象销毁:超时销毁、手动销毁session.setMaxInactiveInterval(5);//5秒后自动销毁session.invalidate(); //立即销毁

Cookie

Cookie,有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息

Cookie和Session
  • 因为http是无状态协议,cookie和session机制其实都是为了保存会话的状态
  • cookie是将会话的状态保存在浏览器客户端上。
  • session是将会话的状态保存在服务器端上。
Cookie有效时间
  • cookie.setMaxAge(60*60);设置cookie在一小时之后失效
  • 没有设置cookie的有效时间:默认保存在浏览器的运行内存中,浏览器关闭则cookie消失
  • 设置cookie的有效时间大于0,该cookie被存储到硬盘文件当中
  • 设置cookie的有效时间等于0,该cookie被删除
  • 设置cookie的有效时间小于0,该cookie不会被存储,和不设置同一个效果
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值