Request: 获取请求数据
Request 获取请求数据
请求数据分为3部分:
请求行
String getMethod():获取请求方式: GET
String getContextPath():获取虚拟目录(项目访问路径): /request-demo
StringBuffer getRequestURL(): 获取URL(统一资源定位符):http://localhost:8080/request-demo/req1
String getRequestURI():获取URI(统一资源标识符): /request-demo/req1
String getQueryString():获取请求参数(GET方式): username=zhangsan&password=123
请求头
String getHeader(String name):根据请求头名称,获取值
请求体
ServletInputStream getInputStream():获取字节输入流
BufferedReader getReader():获取字符输入流
Request 通用方式获取请求参数
请求参数获取方式:
GET 方式:String getQueryString()
POST 方式:BufferedReader getReader()
通用方式:
Map<String, String[ ]> getParameterMap():获取所有参数Map集合
String[ ] getParameterValues(String name) :根据名称获取参数值(数组)
String getParameter(String name):根据名称获取参数值(单个值)
Request 请求参数中文乱码处理
请求参数如果存在中文数据,则会乱码
解决方案:
req.setCharacterEncoding(“UTF-8");
Request 请求转发
请求转发(forward):一种在服务器内部的资源跳转方式
实现方式:req.getRequestDispatcher("资源B路径").forward(req,resp);
请求转发资源间共享数据:使用Request对象
void setAttribute(String name, Object o):存储数据到 request域中
Object getAttribute(String name):根据 key,获取值
void removeAttribute(String name):根据 key,删除该键值对
请求转发特点
浏览器地址栏路径不发生变化
只能转发到当前服务器的内部资源
一次请求,可以在转发的资源间使用request共享数据
Response
Response 设置响应数据功能介绍
响应数据分为3部分:
响应行:void setStatus(int sc) :设置响应状态码
响应头:void setHeader(String name, String value) :设置响应头键值对
响应体:
PrintWriter getWriter():获取字符输出流
ServletOutputStream getOutputStream():获取字节输出流
Response 完成重定向
重定向(Redirect):一种资源跳转方式
实现方式:
resp.setStatus(302);resp.setHeader(“location”,“资源B的路径");
或者
resp.sendRedirect("资源B的路径");
重定向特点
浏览器地址栏路径发生变化
可以重定向到任意位置的资源(服务器内部、外部均可)
两次请求,不能在多个资源使用request共享数据
Response 响应字符数据
通过Response对象获取字符输出流
PrintWriter writer = resp.getWriter();
写数据
writer.write("aaa");
Response 响应字节数据
通过Response对象获取字节输出流
ServletOutputStream outputStream = resp.getOutputStream();
写数据
outputStream.write(字节数据);