Loading

JavaWeb学习--request & response

Request(请求) & Response(响应)

Request 继承体系

Tomcat对RequestFacade进行调用,所以由Tomcat来实现类,但RequestFacade继承与HttpServletRequest,所以RequestFacade实现的是HttpServletRequest中的接口

Request获取请求数据方法

请求参数通常包含多个键值对,所以Request中获取请求对象为map数组,将键值对一一对应存入.

并且对于一个键对应参数有多个值情况,也会将其在放入一个数组,也就是这个值是一个数组

同时提供三种取出方式:取全部,取单个,取数组

可以使用Servlet模板创建Servlet更高效

中文乱码问题解决方案

POST:  

 request.setCharacterEncoding("UFT-8");//设置字符输入流的编码

GET:

由于get和post获取参数方法不一样,所以底层逻辑肯定不同不能用post方式解决乱码.

get乱码原因为,tomcat进行URL解码的默认字符集为ISO-8859-1且没有改变设置的方式,所以对乱码我们需要先对ISO-8859-1先转换成字节数组,在将字节数组用utf-8解码

byte[] bytes = username.getBytes(StandardCharsets.ISO_8859_1);
username = new String(bytes, StandardCharsets.UTF_8);

 

Tomcat8.0之后已解决请求乱码问题,设置默认解码方式为utf-8

 

请求转发

请求转发特点: 

浏览器地址栏路径不发生变化 

只能转发到当前服务器的内部资源

一次请求, 可以在转发的资源间使用request共享数据 

 

 

Response

Response重定向

response提供了一种简化方式:response.sendRedirect("资源B的路径");

重定向特点: 

浏览器地址栏路径发生变化 

只能重定向到任意位置的资源(内部,外部均可)

两次请求, 不能在多个资源间使用request共享数据 

 

资源路径问题

转发不需要虚拟目录,重定向需要虚拟目录,原因是什么呢?

动态获取虚拟目录

response响应字符数据

设置响应数据类型:content-type

response.setHeader("content-type", "text/html");//设置响应头文件

response.setContentType("text/html;charset=utf-8");//设置html显示和中文显示

Response响应字节数据

 

posted @ 2022-02-22 18:08  Makondo  阅读(76)  评论(0)    收藏  举报