首页 > 编程语言 >Java Web 相关

Java Web 相关

时间:2024-05-06 16:04:23浏览次数:24  
标签:Web HTTP 请求 Tomcat 相关 域名 服务器 Java 浏览器

  1. 页面

    • 静态页面:

    即静态网页,是实际存在的,无需经过服务器的编译,直接加载到客户浏览器上显示出来。
    静态页面需要占一定的服务器空间,且不能自主管理发布更新的页面,如果想更新网页内容,要通过FTP软件把文件DOWN下来用网页制作软件修改(通过fso等技术例外)。
    常见的静态页面举例:.html扩展名的、.htm扩展名的。

    • 动态网页,是指跟静态网页相对的一种网页编程技术。

    页面代码虽然没有变,但是显示的内容却是可以随着时间、环境或者数据库操作的结果而发生改变的。

  2. web服务器

    • Tomcat 服务器
      目前非常流行的Tomcat服务器是Apache-Jarkarta开源项目中的一个子项目,是一个小型、轻量级的支持JSP和Servlet 技术的Web服务器,也是初学者学习开发JSP应用的首选。

    • JBoss服务器
      JBoss是一个种遵从JavaEE规范的、开放源代码的、纯Java的EJB服务器,对于J2EE有很好的支持。JBoss采用JML API实现软件模块的集成与管理,其核心服务又是提供EJB服务器,不包含Servlet和JSP的Web容器,不过它可以和Tomcat完美结合。

  3. tomcat相关
    8080是tomcat默认使用的端口号,可以在浏览器中访问http://localhost:8080来验证Tomcat是否成功启动。

    主要功能包括:

    • 启动和停止Java Servlets和JSP。
    • 处理HTTP请求和响应。
    • 管理会话和Cookie。
    • 支持SSL(安全套接字层)。
    • 提供连接池和线程池,以提高性能。

    Tomcat 目录结构:

    • bin:包含Tomcat的执行脚本,如启动、停止和管理Tomcat的脚本。
    • conf:包含Tomcat的配置文件,如server.xml和web.xml。可以在这里配置Tomcat的行为。
    • lib:包含Tomcat运行时所需的Java库文件。
    • webapps:这是您部署Web应用程序的目录。您可以将WAR文件放在这里,Tomcat会自动解压并运行它们。
    • logs:包含Tomcat的日志文件,包括访问日志、错误日志等。
    • temp:临时文件目录,Tomcat在此处存储临时文件。
    • work:Tomcat编译JSP文件的目录,如果Web应用程序使用了JSP,这里将包含编译后的文件。

    配置 Tomcat:
    Tomcat的配置文件位于conf目录中。以下是一些常见的配置文件:

    • server.xml:Tomcat的主要配置文件,包括端口设置、连接池配置、虚拟主机配置等。
    • web.xml:Web应用程序的配置文件,包括Servlet映射、过滤器配置等。
    • context.xml:Web应用程序的上下文配置文件,用于定义数据源、资源引用等。
    • catalina.properties:Tomcat的全局配置文件,包括系统属性配置等。

    Tomcat的主要用途之一是托管Java Web应用程序,这通常包括Servlet和JSP。Servlet是Java类,用于处理HTTP请求和生成HTTP响应,而JSP允许在HTML页面中嵌入Java代码。

  4. 在地址栏输入url,按下回车之后发生了什么?

    参考:https://blog.csdn.net/jiao_0509/article/details/82491299

    第一步:浏览器输入域名
    例如输入:www.csdn.net/

    第二步:浏览器查找域名的IP地址

    浏览器会把输入的域名解析成对应的IP,其过程如下:

    1.查找浏览器缓存:因为浏览器一般会缓存DNS记录一段时间,不同浏览器的时间可能不一样,一般2-30分钟不等,浏览器去查找这些缓存,如果有缓存,直接返回IP,否则下一步。

    2.查找系统缓存:浏览器缓存中找不到IP之后,浏览器会进行系统调用(windows中是gethostbyname),查找本机的hosts文件,如果找到,直接返回IP,否则下一步。

    3.查找路由器缓存:如果1,2步都查询无果,则需要借助网络,路由器一般都有自己的DNS缓存,将前面的请求发给路由器,查找ISP 服务商缓存 DNS的服务器,如果查找到IP则直接返回,没有的话继续查找。

    4.递归查询:如果以上步骤还找不到,则ISP的DNS服务器就会进行递归查询,所谓递归查询就是如果主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,
    向其他根域名服务器继续发出查询请求报文,而不是让该主机自己进行下一步查询。(本地域名服务器地址是通过DHPC协议获取地址,DHPC是负责分配IP地址的)

    5.迭代查询:本地域名服务器采用迭代查询,它先向一个根域名服务器查询。本地域名服务器向根域名服务器的查询一般都是采用迭代查询。
    所谓迭代查询就是当根域名服务器收到本地域名服务器发出的查询请求报文后,要么告诉本地域名服务器下一步应该查询哪一个域名服务器,
    然后本地域名服务器自己进行后续的查询。(而不是替代本地域名服务器进行后续查询)。

    本例子中:根域名服务器告诉本地域名服务器,下一次应查询的顶级域名服务器dns.net的IP地址。本地域名服务器向顶级域名服务器dns.net进行查询。
    顶级域名服务器dns.net告诉本地域名服务器,下一次应查询的权限域名服务器dns.csdn.net的IP地址。本地域名服务器向权限域名服务器dns.csdn.net进行查询。
    权限域名服务器dns.csdn.net告诉本地域名服务器,所查询的主机www.csdn.net的IP地址。本地域名服务器最后把结果告诉主机。

    第三步 :浏览器与目标服务器建立TCP连接

    1.主机浏览器通过DNS解析得到了目标服务器的IP地址后,与服务器建立TCP连接。

    2.TCP3次握手连接:浏览器所在的客户机向服务器发出连接请求报文(SYN标志为1);服务器接收报文后,同意建立连接,向客户机发出确认报文(SYN,ACK标志位均为1);
    客户机接收到确认报文后,再次向服务器发出报文,确认已接收到确认报文;此处客户机与服务器之间的TCP连接建立完成,开始通信。

    第四步:浏览器通过http协议发送请求

    浏览器向主机发起一个HTTP-GET方法报文请求。请求中包含访问的URL,也就是http://www.csdn.com/ ,KeepAlive,长连接,还有User-Agent用户浏览器操作系统信息,编码等。
    值得一提的是Accep-Encoding和Cookies项。Accept-Encoding一般采用gzip,压缩之后传输html文件。
    Cookies如果是首次访问,会提示服务器建立用户缓存信息,如果不是,可以利用Cookies对应键值,找到相应缓存,缓存里面存放着用户名,密码和一些用户设置项。

    第五步:某些服务会做永久重定向响应

    对于大型网站存在多个主机站点,为了负载均衡或者导入流量,提高SEO排名,往往不会直接返回请求页面,而是重定向。
    返回的状态码就不是200 OK,而是301,302以3开头的重定向码,浏览器在获取了重定向响应后,在响应报文中Location项找到重定向地址,浏览器重新第一步访问即可。

    重定向的作用:重定向是为了负载均衡或者导入流量,提高SEO排名。利用一个前端服务器接受请求,然后负载到不同的主机上,可以大大提高站点的业务并发处理能力;
    重定向也可将多个域名的访问,集中到一个站点;由于baidu.com,www.baidu.com会被搜索引擎认为是两个网站,照成每个的链接数都会减少从而降低排名,
    永久重定向会将两个地址关联起来,搜索引擎会认为是同一个网站,从而提高排名。

    第六步:浏览器跟踪重定向地址

    当浏览器知道了重定向后最终的访问地址之后,重新发送一个http请求,发送内容同上。

    第七步:服务器处理请求

    服务器接收到获取请求,然后处理并返回一个响应。

    第八步:服务器发出一个HTML响应

    返回状态码200 OK,表示服务器可以响应请求,返回报文,由于在报头中Content-type为“text/html”,浏览器以HTML形式呈现,而不是下载文件。

    第九步:释放TCP连接

    1.浏览器所在主机向服务器发出连接释放报文,然后停止发送数据;

    2.服务器接收到释放报文后发出确认报文,然后将服务器上未传送完的数据发送完;

    3.服务器数据传输完毕后,向客户机发送连接释放报文;

    4.客户机接收到报文后,发出确认,然后等待一段时间后,释放TCP连接;

    第十步:浏览器显示页面

    在浏览器没有完整接受全部HTML文档时,它就已经开始显示这个页面了,浏览器接收到返回的数据包,根据浏览器的渲染机制对相应的数据进行渲染。渲染后的数据,进行相应的页面呈现和脚步的交互。

    第十一步:浏览器发送获取嵌入在HTML中的其他内容

    比如一些样式文件,图片url,js文件url等,浏览器会通过这些url重新发送请求,请求过程依然是HTML读取类似的过程,查询域名,发送请求,重定向等。
    不过这些静态文件是可以缓存到浏览器中的,有时访问这些文件不需要通过服务器,直接从缓存中取。某些网站也会使用第三方CDN进行托管这些静态文件。

  5. HTTP与HTTPS

    HTTP(超文本传输协议,HyperText Transfer Protocol)是一种用于分布式、协作式、超媒体信息系统的应用层协议。
    基于 TCP/IP 通信协议来传递数据的(HTML 文件、图片文件、查询结果等),通常使用端口 80。

    HTTP 的请求-响应模型通常由以下几个步骤组成:

    • 建立连接:客户端与服务器之间建立连接。在传统的 HTTP 中,这是基于 TCP/IP 协议的。最近的 HTTP/2 和 HTTP/3 则使用了更先进的传输层协议,例如基于 TCP 的二进制协议(HTTP/2)或基于 UDP 的 QUIC 协议(HTTP/3)。

    • 发送请求:客户端向服务器发送请求,请求中包含要访问的资源的 URL、请求方法(GET、POST、PUT、DELETE 等)、请求头(例如,Accept、User-Agent)以及可选的请求体(对于 POST 或 PUT 请求)。

    • 处理请求:服务器接收到请求后,根据请求中的信息找到相应的资源,执行相应的处理操作。这可能涉及从数据库中检索数据、生成动态内容或者简单地返回静态文件。

    • 发送响应:服务器将处理后的结果封装在响应中,并将其发送回客户端。响应包含状态码(用于指示请求的成功或失败)、响应头(例如,Content-Type、Content-Length)以及可选的响应体(例如,HTML 页面、图像数据)。

    • 关闭连接:在完成请求-响应周期后,客户端和服务器之间的连接可以被关闭,除非使用了持久连接(如 HTTP/1.1 中的 keep-alive)。

    HTTP 方法:

    • GET:请求从服务器获取指定资源。这是最常用的方法,用于访问页面。
    • POST:请求服务器接受并处理请求体中的数据,通常用于表单提交。
    • PUT:请求服务器存储一个资源,并用请求体中的内容替换目标资源的所有内容。
    • DELETE:请求服务器删除指定的资源。
    • HEAD:与 GET 类似,但不获取资源的内容,只获取响应头信息。

    HTTP 状态码:

    • 1xx(信息性状态码):表示接收的请求正在处理。
    • 2xx(成功状态码):表示请求正常处理完毕。
    • 3xx(重定向状态码):需要后续操作才能完成这一请求。
    • 4xx(客户端错误状态码):表示请求包含语法错误或无法完成。
    • 5xx(服务器错误状态码):服务器在处理请求的过程中发生了错误。

    HTTP 版本:

    HTTP/1.1:支持持久连接,允许多个请求/响应通过同一个 TCP 连接传输,减少了建立和关闭连接的消耗。
    HTTP/2:基于二进制分帧,支持多路复用,允许同时通过单一的 HTTP/2 连接发起多重的、独立的、双向的交流。
    HTTP/3:基于 QUIC 协议,旨在减少网络延迟,提高传输速度和安全性。

    HTTP 三点注意事项:

    • HTTP 是无连接:无连接的含义是限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接,采用这种方式可以节省传输时间。

    • HTTP 是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送,客户端以及服务器指定使用适合的 MIME-type 内容类型。

    • HTTP 是无状态:HTTP 协议是无状态协议,无状态是指协议对于事务处理没有记忆能力,缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大,
      另一方面,在服务器不需要先前信息时它的应答就较快。
      =============================================================================================================================================================================
      HTTP 本身是不安全的,因为传输的数据未经加密,可能会被窃听或篡改,为了解决这个问题,引入了 HTTPS,即在 HTTP 上加入 SSL/TLS 协议,为数据传输提供了加密和身份验证。

    HTTPS(超文本传输安全协议,Hypertext Transfer Protocol Secure)是 HTTP 的安全版本,它在 HTTP 下增加了 SSL/TLS 协议,提供了数据加密、完整性校验和身份验证。HTTPS 通常使用端口 443。

    HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包,HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换资料的隐私与完整性。

    主要区别:

    加密:HTTP:数据传输过程中不加密,容易被截获和篡改;HTTPS:使用SSL/TLS协议对传输的数据进行加密,保护数据传输过程中的安全性。
    端口:HTTP:默认使用端口80。HTTPS:默认使用端口443。
    安全性:HTTP:不提供数据加密,安全性较低。HTTPS:提供数据加密和完整性校验,安全性较高。
    证书:HTTP:不需要证书。HTTPS:需要SSL证书来启用加密,并验证服务器的身份。
    性能:由于不加密数据,性能略高于HTTPS。由于需要进行加密和解密,可能会有一定的性能开销。
    搜索引擎优化(SEO):HTTP:搜索引擎可能会对没有使用HTTPS的网站进行降权。HTTPS:搜索引擎倾向于优先索引和展示使用HTTPS的网站。
    浏览器显示:HTTP:在大多数现代浏览器中,HTTP网站通常显示为"不安全"。HTTPS:浏览器会显示一个锁形图标,表示网站是安全的。
    成本:HTTP:通常免费。HTTPS:需要购买SSL证书,可能会有一定的成本。
    应用场景:HTTP:适用于不需要传输敏感信息的网站,如新闻网站、博客等。HTTPS:适用于需要传输敏感信息的网站,如网上银行、在线购物、电子邮件等。

  6. HTTP 消息结构

    HTTP 是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。

    HTTP 消息是客户端和服务器之间通信的基础,它们由一系列的文本行组成,遵循特定的格式和结构。

    HTTP消息分为两种类型:请求消息和响应消息。

    一个 HTTP 客户端是一个应用程序(Web 浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个 HTTP 的请求的目的。

    一个 HTTP 服务器 同样也是一个应用程序(通常是一个 Web 服务,如 Nginx、Apache 服务器或 IIS 服务器等),通过接收客户端的请求并向客户端发送 HTTP 响应数据。

    • 客户端请求消息:

    客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。

    • 请求行(Request Line):

      方法:如 GET、POST、PUT、DELETE等,指定要执行的操作。
      请求 URI(统一资源标识符):请求的资源路径,通常包括主机名、端口号(如果非默认)、路径和查询字符串。
      HTTP 版本:如 HTTP/1.1 或 HTTP/2。
      请求行的格式示例:GET /index.html HTTP/1.1

    • 请求头(Request Headers):

      包含了客户端环境信息、请求体的大小(如果有)、客户端支持的压缩类型等。
      常见的请求头包括Host、User-Agent、Accept、Accept-Encoding、Content-Length等。

    • 空行:

      请求头和请求体之间的分隔符,表示请求头的结束。

    • 请求体(可选):

      在某些类型的HTTP请求(如 POST 和 PUT)中,请求体包含要发送给服务器的数据。

    • 服务器响应消息:

    HTTP 响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

    • 状态行(Status Line):

      HTTP 版本:与请求消息中的版本相匹配。
      状态码:三位数,表示请求的处理结果,如 200 表示成功,404 表示未找到资源。
      状态信息:状态码的简短描述。
      状态行的格式示例:HTTP/1.1 200 OK

    • 响应头(Response Headers):

      包含了服务器环境信息、响应体的大小、服务器支持的压缩类型等。
      常见的响应头包括Content-Type、Content-Length、Server、Set-Cookie等。

    • 空行:

      响应头和响应体之间的分隔符,表示响应头的结束。

    • 响应体(可选):

      包含服务器返回的数据,如请求的网页内容、图片、JSON数据等。

    • HTTP content-type:

      Content-Type(内容类型),一般是指网页中存在的 Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,这就是经常看到一些 PHP 网页点击的结果却是下载一个文件或一张图片的原因。

      Content-Type 标头告诉客户端实际返回的内容的内容类型。

标签:Web,HTTP,请求,Tomcat,相关,域名,服务器,Java,浏览器
From: https://www.cnblogs.com/hytip/p/18175139

相关文章

  • JavaGUI - [04] BoxLayout
    题记部分  一、简介  为了简化开发,Swing引入了一个新的布局管理器:BoxLayout。BoxLayout可以在垂直和水平两个方向上摆放GUI组件,BoxLayout提供了如下一个简单的构造器:BoxLayout(Containertarget,intaxis)  指定创建基于target容器的BoxLayout布局管理器,该布局管理......
  • Spring bean 相关
    beanId:bean的唯一标识beanName:applicationContext.getBean("userService")参数传递的其实是beanName。如果设置<bean>时没有设置beanName,会将beanId转化为beanName,没有beanId会将全类名设置为beanName,即com.xx.xx.UserServiceImplbean也可以设置多个别名bean设置作用范......
  • Java Object类有那些方法,分别作用
    1.类构造器是创建Java对象的途径之一,通过new关键字调用构造器完成对象的实例化,或通过构造器对象进行相对应的初始化。在JDK的Object类源码中,系统会自动添加一个无参构造器。publicObject(){Objectobj=newObject();//构造一个Object类的对象}2.registerNatives......
  • Java面向对象编程概念
    面向对象编程(OOP)概念,如类、对象、继承、封装、多态概念:面向对象编程(Object-OrientedProgramming,简称OOP)是一种程序设计范型或编程范式。这种范式使用“对象”来设计应用程序和系统的各个部分。在面向对象编程中,万物皆对象,程序被视作一系列对象的集合,这些对象通过消息传递来交互......
  • JavaGUI - [03] LayoutManager布局管理器
    Component中有一个方法setBounds()可以设置当前容器的位置和大小,但如果我们手动为组件设置位置和大小的话,就会造成程序的不通用性。LayoutManager布局管理器可以根据运行平台来自动调整组件大小,程序员不用再手动设置组件的大小和位置,只需要为容器选择合适的布局管理器即可。 ......
  • Java中的自增自减
    在Java中,自增(++)和自减(--)是两种特殊的运算符,用于在表达式的计算过程中增加或减少变量的值。它们有两种形式:前缀形式(++variable或--variable)和后缀形式(variable++或variable--)。这两种形式在表达式中的行为有所不同。前缀形式++variable:先增加变量的值,然后返回增加后的值。--......
  • H.264学习笔记——相关概念
    基本概念frame:帧,相当于一幅图像,包含一个亮度矩阵和两个色度矩阵。field:场,一帧图像,通过隔行扫描得到奇偶两场,分别称为顶场和底场或奇场和偶场。macroblock/MB:宏块,H.264中处理(预测、变换、量化)的基本单元,大小16*16个像素。slicegroup:条带组,每一帧/场图像中,按照光栅扫面的顺序......
  • JavaScript-DOM简介
    JavaScript-DOM简介之前我们说过JavaScript有三部分组成ECMAscript,BOM,DOM,之前我们都在了解JavaScript的语法即ECMAScript,今天我们开始了解DOM(文档对象模型(DocumentobjectModel),操作网页上的元素的API)什么是DOMDOM:DocumentObjectModel,文档对象模型。DOM为文档提供了结......
  • JDBC相关
    什么是JDBC,为什么要使用JDBC?在web开发中,不可避免的地要使用数据库来存储和管理数据。为了在java语言中提供数据库访问的支持,Sun公司于1996年提供了一套访问数据的标准Java类库,即JDBC。JDBC,全称是JavaDatabaseConnectivity,它是一套统一的、基于Java语言的关系数据库编程接口......
  • Java基本数据类型
    byte:字节型,8位二进制数,有符号,取值范围:-128到127。默认值:0示例:bytemyByte=10;空间大小:1字节(byte),即8位(bit)。short:短整型,16位二进制数,有符号,取值范围:-32,768到32,767。默认值:0示例:shortmyShort=2000;空间大小:2字节(byte),即16位(bit)int:整型,32位二进制数,有符号,取值范......