Java Web简述

什么是JavaWeb?

Web:全球广域网,也称万维网www,能够通过浏览器访问的网站

JavaWeb:是用Java技术来解决相关web互联网的技术栈

JavaWeb技术栈

B/S架构:Browser/Server浏览器/服务器架构模式,它的特点是,客户端只需要浏览器,应用程序的逻辑和数据都存在服务器端。浏览器只需要请求服务器,获取web资源,服务器把web资源发送给浏览器即可

好处:易于维护升级;服务器端升级后,客户端无需任何部署就可以使用到新的版本

  • 静态资源
  • 动态资源
  • 数据库
  • HTTP协议
  • Web服务器

HTTP

超文本传输协议,规定了浏览器和服务器之间数据传输的规则

HTTP协议特点:

  1. 基于TCP协议:面向连接,安全
  2. 基于请求-响应模型的:一次请求对应一次响应
  3. HTTP协议是无状态的协议:对于事务处理能力没有记忆能力。每次请求-响应都是独立的。

优点:速度快

缺点:多次请求间不能共享数据。java中使用会话技术(Cokkie、Session)来解决这个问题

HTTP-请求数据格式

请求数据分为三部分

  1. 请求行:请求数据的第一行。其中get表示请求方式,/表示请求资源路径,HTTP/1.1表示协议版本
  2. 请求头:第二行开始,格式为key:value形式
  3. 请求体: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请求区别:

  1. GET请求 请求参数在请求行中,没有请求体;POST请求参数在请求体中
  2. GET请求参数有大小限制,POST没有

HTTP-响应数据格式

响应数据分为三部分:

  1. 响应行:响应数据的第一行。其中HTTP/1.1表示协议版本,200表示响应状态码,OK表示状态码描述
  2. 响应头:第二行开始,格式为key:value形式
  3. 响应体:最后一部分。存放响应数据

常见响应头:

常见响应状态码:

Servlet urlPattern

一个Servlet可以配置多个访问路径

Response

使用response对象来设置响应数据

设置响应数据功能介绍

设置响应状态码

setStatus(int sc)

设置响应头键值对

setHeader(String name,String value)

设置响应体

获取字符输出流PrintWriter getWriter()

获取字节输出流ServleOutputStream getOutputStream()

重定向

一种资源跳转方式

  1. 设置响应状态码302
  2. 设置响应头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基本使用

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页面