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响应字节数据
本文来自博客园,作者:Makondo,转载请注明原文链接:https://www.cnblogs.com/Makondo/p/15924353.html