JavaWeb专题

  大家好,我是A导,消失了一年多,终于我又回到了CSDN,最近在学SpringMVC,遇到很多JavaWeb架构的问题,所以又回去复习了一下JavaWeb的知识,正好将原来整理的一些笔记汇总成博客。希望给初学者们一些帮助
  今天这篇博文我们大致对JavaWeb有一个总体的印象,对一些基本概念进行解释(大家只需要初步有一个印象,知道这个东西是什么就行)所以本篇博客不会出现太多的代码。

1.什么是JavaWeb?

  对于这个问题,我们直接照搬百度百科:Java Web,是用Java技术来解决相关web互联网领域的技术栈。web包括:web服务端和web客户端两部分。Java在客户端的应用有Java Applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP、第三方框架等等。Java技术对Web领域的发展注入了强大的动力。
  Javaweb一般情况下指的是Web服务端的开发,对于服务端,又存在很多Java编写的框架,例如Spring,SpirngBoat,SpringMVC,Mybatis,这些框架我们在后续的博客中都会有专题讲解。

2.JavaWeb基础知识

1.Servlet

  无论大家以什么方式,或者看什么视频学习JavaWeb,基本都绕不开Servlet这个东西,我们在JavaWeb中接触到的Servelt其实就是一个Java程序,它能接收和处理前端发来的请求(Request)。它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。

            Servlet架构图

2. HTTP请求(HTTP Request)

  了解这部分的时候,我们可以打开自己的浏览器,按下F12,然后点Network,刷新页面,拿到最上面的文件,点开即可看到请求和相应的相关信息,例如
在这里插入图片描述
点开最上面的www.baidu.com可以得到
在这里插入图片描述
我们先对General,Request Headers的部分字段进行分析

通用信息(General)
Request URL: https://www.baidu.com/   //请求地址
Request Method: GET                   //请求方法,get还是post
Status Code: 200 OK                  //
Remote Address: 36.152.44.96:443    // 远程主机的IP地址和端口    
Referrer Policy: unsafe-url          //协议
请求头(Request Headers)
Accept: text/html  
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: max-age=0
Connection: keep-alive+
  1. Accept:Accept”报文头属性告诉服务端 客户端接受什么类型的响应
  2. cookie:客户端的Cookie就是通过这个报文头属性传给服务端
    例如Cookie: $Version=1; Skin=new;jsessionid=5F4771183629C9834F8382E23其中jsessionid用于判断客户端的多个请求是否隶属于一个Session
  3. Referer:表示这个请求是从哪个URL过来的
  4. Cache-Control:对缓存进行控制,一般是控制缓存的时常

  Referrer Policy介绍

3.HTTP响应(HTTPResponse)

Cache-Control: private  //缓存控制
Connection: keep-alive   //连接
Content-Encoding: gzip  
Content-Type: text/html;charset=utf-8  //文件类型,编码
Server: BWS/1.1  //服务器信息
Set-Cookie: BDSVRTM=324; path=/   //设置COOkie的信息
Set-Cookie: BD_HOME=1; path=/
Set-Cookie: H_PS_PSSID=34100_33971_34222_34279_33848_34093_34111_26350; path=/; domain=.baidu.com

我们再来看一下上述通用头中出现的请求状态码

HTTP响应状态码(Status Code)
  1. 2xx 请求成功
  2. 3xx 重定向
  3. 4xx 找不到资源
  4. 5xx 服务器错误,一般是服务器出现了故障
200 (OK): 找到了该资源,并且一切正常。

302/307:临时重定向,指出请求的文档已被临时移动到别处, 此文档的新的url在location响应头中给出
         相当于请求转发
302是请求转发
307是重定向

304 (NOT MODIFIED): 该资源在上次请求之后没有任何修改。这通常用于浏览器的缓存机制。

401 (UNAUTHORIZED): 客户端无权访问该资源。这通常会使得浏览器要求用户输入用户名和密码,以登录到服务器。

403 (FORBIDDEN): 客户端未能获得授权。这通常是在401之后输入了不正确的用户名或密码。

404 (NOT FOUND): 在指定的位置不存在所申请的资源。
HTTP响应头的属性
  1. Cache-Control:服务端通过该报文头属告诉客户端如何控制响应内容的缓存。

    常见的取值有private、public、no-cache、max-age,no-store,默认为private。

    1. private: 客户端可以缓存
    2. public: 客户端和代理服务器都可缓存(前端的同学,可以认为public和private是一样的)
    3. max-age=xxx: 缓存的内容将在 xxx 秒后失效
    4. no-cache: 需要使用对比缓存来验证缓存数据
    5. no-store: 所有内容都不会缓存
  2. Connection:连接状态管理

  3. Content-Type:文件类型,编码
    Cache-Control*默认为private,缓存时间为31536000秒(365天)也就是说,在365天内再次请求这条数据,都会直接获取缓存数据库中的数据,直接使用。

3.我们从在浏览器的地址框中输入URL地址,按下回车到页面返回,经历了哪些步骤?

过程我们大致可以用下图表示
在这里插入图片描述
图片链接
我们大致说一下流程

  1. 请求发起后,游览器首先会解析这个域名,首先它会查看本地硬盘的 hosts 文件,看看其中有没有和这个域名对应的规则,如果有的话就直接使用 hosts 文件里面的 ip 地址。
  2. 如果在本地的 hosts 文件没有能够找到对应的 ip 地址,浏览器会发出一个 DNS请求到本地DNS(域名分布系统)服务器 。本地DNS服务器一般都是你的网络接入服务器商提供,比如中国电信,中国移动。然后从DNS拿到域名对应的IP地址
  3. 客户端与服务端建立TCP链接(3次握手)
  4. 建立TCP连接之后,发起HTTP请求,请求一般分为三部分请求方法URI协议/版本,请求头(Request Header),请求正文
  5. 请求处理
    服务器端收到请求后的由web服务器(准确说应该是http服务器)处理请求,诸如Apache、Ngnix、IIS等。web服务器解析用户请求,知道了需要调度哪些资源文件,再通过相应的这些资源文件处理用户请求和参数,并调用数据库信息,最后将结果通过web服务器返回给浏览器客户端在这里插入图片描述
  6. 关闭链接(四次挥手),浏览器解析获取到的资源,并显示在页面上

结束

通过本篇,大家大致对Javaweb,servlet,HTTP请求和响应有了初步的认识,下一篇我将给大家演示如何使用idea创建一个web项目,并且对web项目的结构进行分析。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaWeb面试题通常涉及JavaEE规范和相关技术的问题。以下是一些常见的JavaWeb面试题及其答案: 1. 什么是Servlet规范? Servlet规范是JavaEE规范的一部分,主要定义了用于扩展Java作为Web服务的功能的接口和类。它规范了Servlet接口、Filter接口、Listener接口、ServletRequest接口、ServletResponse接口等。Servlet规范由servlet-api.jar和jsp-api.jar这两个Jar文件提供支持。 2. 什么是Servlet和JSP的区别? Servlet和JSP都是JavaWeb开发中的技术,用于处理Web请求和生成动态内容。主要区别在于Servlet是基于Java的类,用于处理请求和生成响应,而JSP是一种将Java代码嵌入HTML中的技术,用于生成动态网页。Servlet可以在代码中直接编写Java逻辑,而JSP则允许在HTML页面中嵌入Java代码。 3. JavaWeb中的三大组件是什么? JavaWeb中的三大组件是Servlet、Filter和Listener。Servlet用于处理Web请求和生成响应,Filter用于对请求和响应进行过滤和修改,Listener用于监听Web应用程序的生命周期事件。这三个组件共同构成了JavaWeb应用的核心。 4. 在JSP中,有哪些无需创建就可以使用的对象? 在JSP中,无需创建就可以使用的对象有: - out对象:用于向客户端输出数据。 - request对象:封装了来自客户端的请求信息。 - response对象:封装了服务器的响应信息。 - exception对象:封装了JSP程序执行过程中的异常和错误信息。 - config对象:封装了应用程序的配置信息。 - page对象:指向了当前JSP程序本身。 - session对象:用于保存会话信息。 - application对象:代表了当前应用程序的上下文,可在不同用户之间共享信息。 - pageContext对象:提供了对JSP页面所有对象以及命名空间的访问。 希望以上内容能对你的面试准备有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Java基础面试题(JavaWeb专题)](https://blog.csdn.net/qq_40695336/article/details/130597300)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [java面试题Web篇](https://blog.csdn.net/weixin_52489114/article/details/122982656)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值