目录

Request & Response

# Request & Response

# Request

请求数据分为三部分

  1. 请求行
  2. 请求头
  3. 请求体

![[Pasted image 20220610145409.png]]

# 请求流和请求参数

用户发送表单往往以POST形式发送,但偶尔会以GET形式携参访问。 我们有两种获取参数的方式:

  1. req.getParameter("参数名") - 常见于POST
  2. req.getQueryString() - 常见于GET

除了以上两种获取请求参数方式,有时我们还会用到请求流获取。 req.getReader(),该函数返回的是BufferedReader类型的数据,数据在发送方发送时会以UTF-8形式进行URL编码,因此会生成类似%E5%D3%B8%C9...样式的数据。接收方收到这些数据后需要以同样的形式进行解码,例如UTF-8解码。

# URL编码
  1. 将字符串按照编码方式转为二进制
  2. 每个字节转为2个16进制数并在前面加上%

# 请求转发

有时,我们以功能划分网页时,可能需要跳转到其他网页去实现其他功能,请求转发是个很好的选择,它会将请求打包后发送到其他uri进行访问。

req.getRequestDispatcher("/demo2").forward(req,resp);

![[Pasted image 20220610162336.png]]

# Response

响应数据也分为三类:

  1. 响应行 [HTTP/1.1 200 OK]
  2. 响应头 [Content-Type: text/html]
  3. 响应体 [<body>Hello</body>]
# 重定向

Redirect:一种资源跳转方式 有时网页A无法处理的内容可以让请求跳转至网页B进行处理。 与转发不同,转发不会跳转URL,重定向会。 ![[Pasted image 20220610163604.png]]

# 字符流输出

有时,我们希望输出一些内容在网页时,可以通过获取到HttpServletResponse对象的PrintWriter实现。 HttpServletResponse对象为用户提供了一个getWriter()方法,该方法能获取到PrintWriter。通过resp.getWriter().println()方法就能实现输出内容在网页上。

# 字节流输出

但字符流通常只用于一些简单内容而已,更常用的是字节流。我们可以将图片、文件通过JAVA IO读取后,再用循环将内容输出在网页上,常见的功能就是输出特定html在网页上。 如果这种功能手写属实有点麻烦,因此我们建议使用外部库commons-io,该库提供了copy方法足以输出任何形式的内容在网页上。

FileInputStream fis = new FileInputStream("C:\\Users\\LAM\\Downloads\\jquery.js");  
ServletOutputStream sos = resp.getOutputStream();  
IOUtils.copy(fis,sos);
1
2
3
最近更新
01
基本知识
07-18
02
卷积神经网络识别图像
07-18
03
损失函数
07-18
更多文章>