Java0基础_day15_Javaweb后端_Tomcat服务器篇

本文介绍了Java Web开发的基础知识,包括B/S架构与C/S架构的对比,重点讲解了Tomcat服务器的配置和使用,包括手工配置、JDBC实战以及在IDEA中的配置。此外,文章还深入探讨了Servlet接口及其生命周期,以及ServletConfig和ServletContext接口的作用。通过对HTTP请求方法的分析,解释了GET和POST的区别。最后,文章提到了动态和静态资源、Web欢迎页面配置以及缓存机制和设计模式在开发中的应用。
摘要由CSDN通过智能技术生成

标签:B/S结构、javaweb、Tomcat、servlet规范、网络通信


1.B/S和C/S架构

众所周知,互联网通信分为C/S架构B/S架构,具体如下:

C/S架构:

  • C/S:Client/Server,即客户端/服务器架构
  • 客户端:即发起请求的一端;如我们的qq客户端打字“你好啊”并且发送到对方;
  • 服务器:接收请求的一端,如qq服务器接收到上述信息;
  • 使用场景:娱乐市场
  • 优点:客户端界面好看,减轻服务器负载,数据更安全
  • 缺点:客户端更新频繁,用户必须下载客户端,
  • 功能:服务器负责接收客户端发来的请求,称为request阶段,然后将找到的资源返回给客户端,称为response响应阶段。

B/S架构:

  • B/S:Brower/Server,即浏览器/服务器架构
  • 浏览器:即用户安装的浏览器,如chrome,firefox,edge
  • 服务器:接收浏览器请求的一端,又称为web服务器,http服务器
    • 其中Tomcat服务器较为常用,轻量级,免费
    • 实现了两个JAVAEE规范【共13个】,即servlet规范和jsp规范
  • 使用场景:企业
  • 优点:轻量级,不必经常更新,可以发送任意指令
  • 缺点:服务器负载大,速度慢
  • 功能:服务器负责接收浏览器发来的请求,称为request阶段,然后将找到的资源返回给浏览器,称为response响应阶段。
  • 关键点:网站的高并发问题
  • B/S是学习的重点,因为java后端开发程序员经常会在企业中处理brower的请求,而对于web前端html,css和javascript仅做了解即可;而其中java后端关键就是servlet规范。

2.B/S架构角色划分

  • 流程:用户在浏览器输入http://www.baidu.com:80/index.html之后,回车,此时浏览器会把该请求封装为request请求报文,经过dns解析为IP地址找到百度服务器的主机,通过80端口号与百度的web服务器建立通信,想要访问的是百度wb服务器根目录下的index.html页面,web服务器查找后返回response响应报文,即想要的资源
  • 不难发现,角色有:
  • 浏览器→负责封装、解封HTTP请求报文【request请求,response请求】
  • web服务器→根据URL寻找资源【Tomcat服务器、jetty服务器】
  • 后端人员→负责编写java小程序和配置路径与程序类名的映射关系【YOU!】
  • mysql数据库→存储资源,如员工工资表等【mysql,jdbc】
  • HTTP请求报文【request】
    • 结构:请求行【请求方式、URI、HTTP版本号】 、请求头、空白行、响应行
Get请求:
GET /wodewangzhan/getservlet?username=45&password=55555 HTTP/1.1
//请求头
Host: localhost:8080
Connection: keep-alive
sec-ch-ua: "Google Chrome";v="95", "Chromium";v="95", ";Not A Brand";v="99"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36
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
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://localhost:8080/wodewangzhan/index.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9

//请求体
POST /wodewangzhan/postservlet HTTP/1.1
//请求头
Host: localhost:8080
Connection: keep-alive
Content-Length: 34
Cache-Control: max-age=0
sec-ch-ua: "Google Chrome";v="95", "Chromium";v="95", ";Not A Brand";v="99"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
Origin: http://localhost:8080
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36
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
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: http://localhost:8080/wodewangzhan/index.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9

//请求体
username: 123456
password: 999999999

【注意】这里请求行中路径为URI,统一资源标识符,仅仅是资源的在站点的位置,他是整个URL的一部分。

  • HTTP响应报文【response】
//第一部分:状态行 版本号 状态码
HTTP/1.1 304
//状态码:200 成功;404 资源不存在,要么路径出错,要么资源并没有启动成功
//405 请求方式和处理方式不一样,post用get处理
//500 服务器后台程序出错
//4开头 浏览器册出错
//5开头 服务器侧出错
// ok正常 not found 资源找不到
//第二部分 响应头    关键是content-type,告诉浏览器我返回的是什么类型的资源
ETag: W/"865-1637892866027" 
Date: Fri, 26 Nov 2021 02:20:44 GMT
Keep-Alive: timeout=20 //响应时间,内容长度和类型;
Connection: keep-alive
//第三部分:响应体
<html>
<head>
  <title>get请求</title>
</head>
<body>
<h1>get server</h1>h1>
</body>
</html>
  • HTTP请求方法中POST和GET方法的区别?

区别1:日常使用除非在form表单的method方法中显式声明为post,否则都是默认为get方式

区别2:post对长度类型无限制,get只能传输字符串,并且有长度限制

区别3:post的请求参数信息在请求体中,get请求参数在请求行中,即明文展示

区别4:get常用于获取服务器的数据,而post常用于向服务器提交数据,如文件上传

区别5:get是安全的,post由于上传文件因此有安全风险,同时为了保密,因此表单大多数使用的是post方法

区别6:get方式支持缓存,而post方式不支持浏览器缓存,因此如果想访问变动大的数据要用post,否则用get

相同点:二者都是name1=value1&name2=value2&name3=value3...的规范,而这里的 name字段就是相当于key字段,value就是对应key的value字段

  • 互联网通信协议流程图

 资源分类:静态资源和动态资源

  • 静态资源
    • 如html,js,css样式和图片、文本、视频等资源,有固定的存放位置,内容一般不改变的资源。
  • 动态资源
    • java小程序,即servlet对象,用户想要输入自己的信息经过网站的程序才能返回某个值,因此java小程序就是动态资源,用户想要获取某些操作的结果。
  • web-inf目录:html,js,css资源不能放在这,因为受保护【有配置文件】

3.Tomcat服务器配置_手工配置_初级尝试

3.1 几个明确点:

  • Tomcat是web服务器,端口默认为8080

3.2 配置流程

第一步:下载tomcat,如下所示,在左边选择版本,我这里选择tomcat9.

Apache Tomcat® - Welcome!https://tomcat.apache.org/【注意】tomcat10中有些原本中的库名发生了改变,由javax改为了jakarta,这是因为本来是javaee规范,oracle将tomcat捐给了apache开源基金会的原因。Apache Tomcat® - Welcome!

第二步:在系统环境变量添加java_home和catalina_home的环境变量,以便在cmd的dos窗口可以进行开发。

【PS】tomcat是java写的,自然需要jvm,即需要关联jdk包,同时由于tomcat不知道catalina在哪里,故需要加入catalina_home。

第三步:第一次启动关闭tomcat,即进入tomcat安装包\bin目录,cmd进入该目录,敲击startup可以发现启动了,然后shutdown即可。

第四步:建立站点文件夹并进行静态资源访问: 

  →webapp文件夹是站点文件夹,默认是root站点,这里新建crm文件夹

 →→在crm文件夹放入静态资源,这里随便放一张图片,如4.jpg

→→→启动tomcat,注意不要关闭任何dos窗口

→→→→在浏览器输入http://localhost:8080/crm/4.jpg,回车,此时成功!

第五步:动态资源访问

【前知】需要知道的是,访问动态资源就是用户输入一段链接,t

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值