JavaWeb-基础篇
Java Web简述
什么是JavaWeb?
Web:全球广域网,也称万维网www,能够通过浏览器访问的网站
JavaWeb:是用Java技术来解决相关web互联网的技术栈
JavaWeb技术栈
B/S架构:Browser/Server浏览器/服务器架构模式,它的特点是,客户端只需要浏览器,应用程序的逻辑和数据都存在服务器端。浏览器只需要请求服务器,获取web资源,服务器把web资源发送给浏览器即可
好处:易于维护升级;服务器端升级后,客户端无需任何部署就可以使用到新的版本
- 静态资源
- 动态资源
- 数据库
- HTTP协议
- Web服务器
HTTP
超文本传输协议,规定了浏览器和服务器之间数据传输的规则
HTTP协议特点:
- 基于TCP协议:面向连接,安全
- 基于请求-响应模型的:一次请求对应一次响应
- HTTP协议是无状态的协议:对于事务处理能力没有记忆能力。每次请求-响应都是独立的。
优点:速度快
缺点:多次请求间不能共享数据。java中使用会话技术(Cokkie、Session)来解决这个问题
HTTP-请求数据格式
请求数据分为三部分
- 请求行:请求数据的第一行。其中get表示请求方式,/表示请求资源路径,HTTP/1.1表示协议版本
- 请求头:第二行开始,格式为key:value形式
- 请求体:POST请求(特有)的最后一部分,存放请求参数
GET/HTTP/1.1
Host:www.baidu.com
Connection:keep-alive
Cache-Control:max-age=0 Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 Chrome/91.0.4472.106
常见请求头:
- Host
- User-Agent
- Chrome/79
- Accept
- Accept-Language
- Accept-Encoding
GET请求和POST请求区别:
- GET请求 请求参数在请求行中,没有请求体;POST请求参数在请求体中
- GET请求参数有大小限制,POST没有
HTTP-响应数据格式
响应数据分为三部分:
- 响应行:响应数据的第一行。其中HTTP/1.1表示协议版本,200表示响应状态码,OK表示状态码描述
- 响应头:第二行开始,格式为key:value形式
- 响应体:最后一部分。存放响应数据
常见响应头:
常见响应状态码:
Servlet urlPattern
一个Servlet可以配置多个访问路径
Response
使用response对象来设置响应数据
设置响应数据功能介绍
设置响应状态码
setStatus(int sc)
设置响应头键值对
setHeader(String name,String value)
设置响应体
获取字符输出流PrintWriter getWriter()
获取字节输出流ServleOutputStream getOutputStream()
重定向
一种资源跳转方式
- 设置响应状态码302
- 设置响应头Location
实现方式:
resp.setStatus(302);
resp.setHeader("Location","资源B的路径“);
简化方式完成重定向:
resp.sendRedirect("资源B的路径")
重定向特点:
- 浏览器地址栏路径发生变化
- 可以重定向到任意位置的资源(服务器内部,外部均可)
- 两次请求,不能在多个资源使用request共享数据
请求转发特点:
- 浏览器地址栏路径不发生变化
- 只能转发到当前服务器的内部资源
- 一次请求,可以在转发的资源间使用request共享数据
路径问题
明确路径给谁使用
- 浏览器使用:需要加虚拟目录
- 服务端使用:不需要加虚拟路径
动态获取虚拟路径
String contextPath = request.getContextPath()
resp.sendRedirect(contextPath+"资源B的路径")
响应字符数据
通过response对象获取字符输出流
PrintWriter writer = resp.getWriter();
writer.writer("aaa");
会话跟踪技术概述
Cookie
客户端会话技术,将数据保存到客户端,以后每次请求都携带Cookie数据进行访问。
Cookie基本使用
1.创建Cookie对象,设置数据
Cookie cookie = new Cookie("key","value");
2.发送Cookie到客户端,使用response对象
response.addCookie(cookie);
3.获取客户端携带的所有Cookie,使用request对象
Cookie[] cookies = request.getCookies();
4.遍历数组,获取每一个Cookie对象:for
5.使用Cookie对象方法获取数据
cookie.getName();
cookie.getValue();
Cookie原理
Cookie的实现是基于HTTP协议的
Cookie使用细节
cookie存活时间
默认情况下,cookie存储在浏览器内存中,当浏览器关闭,内存释放,则cookie被销毁。
setMaxAge(int seconds)
设置cookie存活时间
正数:将cookie写入浏览器所在电脑的硬盘,持久化存储,到时间自动删除
负数:默认值,cookie在当前浏览器内存中,当浏览器关闭,则cookie被销毁
零:删除对于cookie
cookie存储中文
cookie不能直接存储中文
如需
value = URLEncode.encode(value,"utf-8");
value = URLDecoder.decode(value,"utf-8");
Maven
maven是专门用于管理和构建Java项目的工具,它的主要功能有:
- 提供了一套标准化的项目结构
- 提供了一套标准化的构建流程
- 提供了一套依赖管理机制
AJAX
异步的JavaScript和XML
作用:
与服务器进行数据交换:通过AJAX可以给服务器发送请求,并获取服务器响应的数据
使用AJAX和服务器进行通信,就可以使用HTML+AJAX来替换JSP页面