一.Web知识概述
JavaWeb:将编写好的java代码,发布到互联网,可以让所有用户访问到...
1.软件架构
-
网络中有很多的计算机,它们直接的信息交流,我们称之为:交互
-
在互联网交互的过程的有两个非常典型的交互方式——B/S 交互模型(架构)和 C/S 交互模型(架构)
C/S架构
Client/Server 客户端/服务器
访问服务器资源必须安装客户端软件
例如: QQ,绝地求生,LOL
特点:客户端存储大量数据,人物原型,地图npc
优点:用户体验好,
缺点:开发(客户端,服务器),部署和维护繁琐
B/S架构
Browser/Server 浏览器/服务器
访问服务器资源不需要专门安装客户端软件,而是直接通过浏览器访问服务器资源.
例如: 天猫、京东、知乎网站
b/s 架构也是一种特殊的c/s架构(安装浏览器)
特点:优点:开发,部署,更新简单
缺点:用户体验稍差
2.web服务器作用
-
开发者通过web服务器可以把本地==资源==发布到互联网
-
用户就可以通过浏览器访问这些资源
资源的分类:
资源:计算机中数据文件
静态资源:
对于同一个页面,不同用户看到的内容是一样的。
-
例如:体育新闻、网站门户等,常见后缀:
*.html、*.js、*.css
动态资源
-
用对于同一个页面,不同用户看到的内容可能不一样。
-
例如:购物车、我的订单等,常见后缀:
*.jsp、*.aspx、*.php
-
3.常见的web服务器
* Tomcat: Apache组织开源免费的web服务器,支持JavaEE规范(Servlet/Jsp).
* Jetty:Apache组织开源免费的小型web服务器,支持JavaEE规范.
* JBoss: RedHat红帽公司的开源免费的web服务器,支持JavaEE规范.
* Glass Fish:Sun公司开源免费的web服务器,支持JavaEE规范.
---------------------------------------------------------------------
* WebLogic: Oracle公司收费的web服务器,支持JavaEE规范.
* WebSphere:IBM公司收费的web服务器,支持JavaEE规范.
JavaEE规范
在Java中所有的服务器厂商都要实现一组Oracle公司规定的接口,这些接口是称为JavaEE规范。不同厂商的JavaWeb服务器都实现了这些接口,在JavaEE中一共有13种规范。实现的规范越多,功能越强。
二.Tomcat服务器
1.Tomcat的使用
1、下载
Tomcat 官网下载地址:https://tomcat.apache.org/download-80.cgi
2.安装:
绿色免安装版本,解压即用:(不要有中文路径)
解压到非中文路径,就可以使用了。
3.目录结构
4.启动和关闭
注意:尽量不要强制关闭(即点击窗口的关闭按钮);在tomcat黑窗口内部ctrl+c
二次,表示正常关闭
5.启动报错问题
java环境变量:即打开黑窗口一闪而过
解决:
配置好Java环境变量
JAVA_HOME
Path
8080端口被占用
现象:启动时报错
解决方法一:找到占用的端口号的对应进程,杀死进程
cmd命令:
netstat -ano | findstr "8080"
进入到任务管理器,找到结束任务即可
解决方法二:修改tomcat端口号
进入Tomcat安装目录/conf/server.xml 文件修改 :如果是其他软件占用了 8080,你直接修改这一个就行。
另外:如果你想启动多个tomcat的话,需要修改三个端口号:
注意端口号:
端口号:个人指定范围:1024~65535之间,只要不与其他软件冲入即可
遇到的问题总结:
1. 黑窗口一闪而过:
* 原因: 没有正确配置JAVA_HOME环境变量
* 解决方案:正确配置JAVA_HOME环境变量2. 启动报错:
1. :找到占用的端口号,并且找到对应的进程,杀死该进程
* netstat -ano
2. :修改自身的端口号
* conf/server.xml
* <Connector port="8888" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8445" />
* 一般会将tomcat的默认端口号修改为80。80端口号是http协议的默认端口号。
* 好处:在访问时,就不用输入端口号
---
在web阶段我们使用的就是tomcat默认端口:8080
6.发布项目三种方式:
(1)webapps 部署
直接放置在 webapps 目录下
(2)server.xml部署
在tomcat/conf/server.xml中找到<Host>标签,添加<Context>标签
缺点
1.配置文件修改完毕后,需要重启后生效...
2.server.xml是tomcat的核心配置文件,如果稍有不慎操作失误,整个tomcat启动失败
(3)独立xml部署
在tomcat/conf/Catalina/localhost 目录下创建一个xml文件,添加<Context>标签
文件名就是虚拟路径
* 部署项目的方式:
1. 直接将项目放到webapps目录下即可。
* /hello:项目的访问路径-->虚拟目录
* 简化部署:将项目打成一个war包,再将war包放置到webapps目录下。
* war包会自动解压缩2. 配置conf/server.xml文件
在<Host>标签体中配置
<Context docBase="D:\hello" path="/hehe" />
* docBase:项目存放的路径
* path:虚拟目录3. 在conf\Catalina\localhost创建任意名称的xml文件。在文件中编写
<Context docBase="D:\hello" />
* 虚拟目录:xml文件的名称
三.Web项目结构
1. 前端项目
|-- myapp(项目名称)
|-- css 目录
|-- js 目录
|-- html目录
|-- img 目录
|-- index.html
2. web项目
|-- myapp(项目名称)
|-- 静态资源(html、css、js、img)
|-- WEB-INF 目录(浏览器无法直接访问内部的资源)
|-- classes 目录(java的字节码文件)
|-- lib 目录(当前项目所需要的第三方jar包)
|-- web.xml 文件 (当前项目核心配置文件,servlet3.0可以省略)
|-- index.html or index.jsp
1.配置tomcat
点击,确定是否配置成功
2.创建web项目:
3发布web项目:
4.页面资源热更新
注意:
## IDEA与tomcat的相关配置
1. IDEA会为每一个tomcat部署的项目单独建立一份配置文件
* 查看控制台的log:Using CATALINA_BASE: "C:\Users\fqy\.IntelliJIdea2018.1\system\tomcat\day"2. 工作空间项目 和 tomcat部署的web项目
* tomcat真正访问的是“tomcat部署的web项目”,"tomcat部署的web项目"对应着"工作空间项目" 的web目录下的所有资源
* WEB-INF目录下的资源不能被浏览器直接访问。
3. 断点调试:使用"小虫子"启动 dubug 启动
四.Http协议
1.Http协议概述
超文本传输协议(Hyper Text Transfer Protocol)是互联网上应用最为广泛的一种网络协议。
传输协议:在客户端和服务器端通信时,规范了传输数据的格式
1.谷歌--F12
2.firefox--F12--基本效果差不多
2.Http请求
(1)get方式
(2)post方式
3.Http请求消息格式:
请求行:
格式
请求方式 请求路径 协议/版本号
* 例如
POST /day/static/login.html HTTP/1.1
GET /day/static/login.html?username=jack&password=123 HTTP/1.1
* 请求方式区别
get
1.请求参数在地址栏显示(请求行)
2.请求参数大小有限制
3.数据不太安全
post
1.请求参数不在地址栏显示(请求体)
2.请求参数大小没有限制
3.数据相对安全
请求头:
格式
请求头名称:请求头的值
* 例如
Host: localhost:8080
常见的请求头:
1. Host: localhost:8080 访问服务器的地址(域名+端口)
2. Connection: keep-alive 长连接(http1.1协议)
3. Cache-Control: max-age=0 设置缓存数据的存活时间,单位秒
4. Upgrade-Insecure-Requests:1 客户端支持https加密协议
---------------------------------------
5. Referer: http://baidu.com 上一次请求的地址
百度推广....
防盗链....
6. User-Agent: 客户端系统和浏览器版本
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) Chrome/63.0 Safari/537.36
浏览器兼容性
判断
谷歌方式一
IE方式二
火狐方式三
请求体:
* 格式
参数名=参数值&参数名=参数值...
* 例如
username=jack&password=123
* 注意:
get方式没有请求体,post方式才有
4.Http响应:
1.浏览器查看Http响应协议
2.http响应消息格式
响应行
* 格式
协议/版本号 状态码
* 例如
tomcat8:HTTP/1.1 200
tomcat7:HTTP/1.1 200 OK
* 常见状态码
--------------- 用户可以正常访问页面
200 :表示成功
302 :重定向
304 :从缓存中读取数据
--------------- 用户无法正常访问页面
404:请求资源未找到(not found)
405:请求的方法未找到
500:服务器内部错误(java代码写错了.....)
响应头:
* 格式
响应头名称:响应头的值
* 例如
Last-Modified: Mon, 13 Apr 2020 06:11:24 GMT
常见响应头:
1. Location:通常与状态码302一起使用,实现重定向操作
Location:http://www.baidu.com
2. Content-Type:服务器告诉客户端,返回响应体的数据类型和编码方式
Content-Type:text/html;charset=utf-8
3. Content-Disposition:服务器告诉客户端,以什么样方式打开响应体
* in-line(默认):浏览器直接打开相应内容,展示给用户
* attachment;filename=文件名:浏览器以附件的方式保存文件 【文件下载】
4. Refresh:在指定间隔时间后,跳转到某个页面
Refresh:5;http://www.baidu.com
5. Last-Modified:通常与状态码304一起使用,实现缓存机制
Last-Modified: Mon, 13 Apr 2020 06:11:24 GMT
响应体-正文
* 服务器返回的数据,由浏览器解析后展示给用户
用户看到页面所有的内容,都是在响应体中返回的
总结:
学习资源: