JavaWeb
javaweb简介
- web:全球广域网,也称万维网,能够通过浏览器访问的网站
- javaweb:是用java积水来解决相关web互联网领域的技术栈
javaweb技术栈
- B/S架构:Browser/Server,浏览器/服务器架构模式,它的特点是,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器,获取web资源,服务器把web资源发送给浏览器即可
- 好处:易于维护升级:服务端升级后,客户端无需任何部署就可以使用到新的版本
- 静态资源:HTML,CSS,JavaScript,图片等,负责页面展现
- 动态资源:Servlet,JSP等,负责逻辑处理
- 数据库:负责存储数据
- HTTP:负责浏览器和服务器之间数据传输规则
- 浏览器发送一个请求到服务端请求相关的资源,资源分为动态资源和静态资源,处理好这些资源后,对数据库进行访问,访问后拿到这些数据到页面,页面再将这些静态页面响应给浏览器,浏览器再进行解析展示出来
HTTP
- 特点
- 基于TCP协议:面向连接,安全
- 基于请求-响应模型的:一次请求对应一次响应
- HTTP协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的
- 缺点:多次请求间不能共享数据。那么解决方式:java中使用会话技术(Cookie,Session)来解决这个问题
- 有点:速度快
- HTTP-请求数据格式
- 请求数据分为3部分:
- 请求行:请求数据的第一行。其中GET表示请求方式,/表示请求资源路劲。HTTP/1.1表示协议版本
- 请求头:第二行开始,格式为key:value形式
- 请求体:post请求的最后一部分,存放请求参数
- GET请求和post请求区别:
- GET请求在请求参数的请求行中,没有请求体。POST(也就是最下面那行)POST请求请求参数在请求体中,也就是存放的位置不一样
- GET请求请求参数大小有限制,POST没有
- 常见的HTTP请求头:
- Host:表示请求的主机名
- User-Agent:浏览器版本,例如Chrome浏览器的标识类Mozilla/5.0 ... Chrome/79,IE浏览器的标识类Mozilla/5.0(Windows NT ...)like Gecko;
- Accept:表示浏览器能接收的资源类型,如text/*,image/ *或者 */ *(这里星都是没有空格的)表示所有;
- Accept-Language:表示浏览器偏好的语言,服务器可以据此返回不同语言的网页;
- Accept-Encoding:表示浏览器可以支持的压缩类型,例如gzip,deflate等
- HTTP-响应数据格式
- 响应数据分为3部分:
- 响应行:响应数据的第一行。其中HTTP/1.1表示协议版本,200表示响应状态码,ok表示状态描述
- 响应头:第二行开始,格式为key:value形式
- 响应体:最后一部分。存放响应数据
- 常见的HTTP响应头:
Content-Type: | 表示响应内容的类型,例如text/html.image/jpeg; |
Content-length: | 表示该响应内容的长度(字节数) |
Content-Encoding: | 表示该响应压缩算法例如gzip |
Cache-Control: | 指示客户端如何缓存,例如max-age=300表示可以最多缓存300秒 |
- 状态码分类
1xx | 响应中-临时状态码,表示请求已经接受,告诉客户端应该给继续请求或者如果它已经完成则忽略它 |
2xx | 成功-表示请求已经被成功接收,处理已完成 |
3xx | 重定向-重定向其他地方:它让客户端再发起一个请求以完成整体处理 |
4xx | 客户端错误-处理发生错误,责任在客户端,如:客户端的请求一个不存在的资源,客户端未被授权,禁止访问等 |
5xx | 服务端错误-处理发生错误,责任在服务端如:服务端抛出异常,路由器出错,HTTP版本不支持等 |
状态码大全 | https://cloud.tencent.com/developer/chapter/13553 |
- 常见的响应状态码
状态码 | 英文描述 | 解释 |
200 | ok | 客户端请求成功 |
302 | Found | 指示所请求的资源已移动到由location响应头给定URL,浏览器会自动重新访问到这个页面 |
304 | NotModified | 告诉客户端,你请求的资源至上次取后,服务端并未更改,你之间用你本地缓存,隐式重定向 |
400 | BadReques | 客户端请求有语法错误,不能被服务器所理解 |
403 | Forbidden | 服务器收到请求,但是拒绝提供服务,比如:没有权限访问相关资源 |
404 | Not Found | 请求资源不存在,一般是URL输入有误,或者网站资源被删除了 |
428 | Precondition Required | 服务器请求有条件的情趣,告诉客户端要想访问该资源,必须携带特定的请求头 |
429 | TooMany Requests | 太多请求,服务器不愿意处理请求,因为它的头部字段太大,请求可以在减少请求头域的大小后重新提交 |
431 | Request Header FieldsTooLarge | 请求头太大,服务器不愿意处理请求,因为它的头部字段太大。请求可以在减少请求头域的大小后重新提交 |
405 | Method Not Allowed | 请求方式有误,比如应该用GET请求方式的资源,用了POST |
500 | Internal Server Error | 服务器发生不可预期的错误。服务器出异常了,看日志去查找 |
503 | Serviece Unavailable | 服务器尚未准备好处理请求,服务器刚刚启动,还未初始化好 |
511 | Network Authentication Required | 客户端需要进行身份验证才能获取网络访问权限 |
Tomcat
Tomcat简介
- 概念:Tomcat是Apache软件基金会一个核心项目,是一个开源免费的轻量级web服务器,支持SErvlet/JSP少量JavaEE规范
- JavaEE:Java Enterprise Edition,Java企业版。指Java企业级开发的技术规范总和,包含13项技术规范:JDBC,JNDI,EJB,RMI,JSP,Servlet,XML,JMS,Java IDL,JTS,JavaMail,JAF
- 官网:https://tomcat.apache.org/
Tomcat安装
- 下载:官网:https://tomcat.apache.org/
- 安装:绿色版,进行解压
- 卸载:删除目录即可
- 启动:双击:bin\startup.bat 然后将:conf/logging.properties
改成GBK解决控制台中文乱码问题 - 关闭:1直接x强制关闭,2bin\shutdown.bat直接关闭,3ctrl+c直接关闭
- 文件解释:bin:可执行文件存放目录,conf:配置文件存放目录,lib:tomcat依赖的jar包,logs:日志文件,temp:临时文件,webapps:应用发布目录,work:工作目录
Tomcat基本使用
- 配置:
- 修改启动带端口号:conf/server.xml
注意:HTTP协议默认端口号为80.如果将Tomcat端口号改为80,则将来访问Tomcat时。将不用输入端口号
- 启动时可能出现的问题
- 端口号冲突:找到对应程序,将其关闭掉
- 启动窗口一闪而过:检查JAVA_HOME环境变量是否正确配置
Tomcat-部署项目
- Tomcat部署项目
- 将项目放置到webpps目录下,即部署完成
- 一般jajvaweb项目会被打成war包,然后将war包放到webapps目录下,Tomcat会自动解压缩war文件
- IDEA中创建Maven Web项目
- IDEA中使用Tomcat-集成本地Tomcat