response:响应
作用:
往浏览器写东西
组成部分:
响应行响应头 响应体
操作响应行
格式:
协议/版本 状态码 状态码说明
状态码:
1xx:已发送请求
2xx:已完成响应
200:正常响应
3xx:还需浏览器进一步操作
302:重定向配合响应头:location
304:读缓存
4xx:用户操作错误
404:用户操作错误.
405:访问的方法不存在
5xx:服务器错误
500:内部异常
重定向:
方式1:
response.sendRedirect("/day10/loc2");
方式2:
response.setStatus(302);
respooen.setHeader("location","/day10/loc2");
定时刷新:
方案1:设置头 refresh
respooen.setHeader("refresh","秒数;url=跳转的路径");
方案2:http的meta标签
<metahttp-equiv="refresh"content="3;url=/day10/refresh2.html">
处理响应中文乱码:
方式1:
response.setContentType("text/html;charset=utf-8");
方式2:
response.setHeader("content-type","text/html;charset=utf-8");
文件下载:
1.超链接下载
<ahref="/day10/download/day10.txt">下载 day10.txt</a>
若浏览器能解析该资源的mime类型,则打开;若不能接下则下载;
2.编码下载通过servlet完成
<ahref="/day10/download?name=day10.txt">下载 day10.txt</a>
a.设置文件的mime类型
StringmimeType=context.getMimeType(文件名)
response.setContentType(mimeType);
b.设置下载头信息 content-disposition
response.setHeader("content-disposition","attachment;filename="+文件名称);
c.提供流
response.getOutputStream();
扩展:使用commons-io工具类
对拷流:
IOUtils.copy(is,os);
request:请求
作用:获取浏览器发送过来的数据
组成部分:
请求行请求头 请求体
操作请求行
格式:
请求方式请求资源 协议/版本
常用方法:
StringgetMethod():获取请求方式
StringgetRemoteAddr():获取ip地址
StringgetContextPath() :在java中获取项目名称 (/day10)
操作请求参数
username=tom&password=123&hobby=drink&hobby=sleep
常用方法:
StringgetParameter(String key):获取一个值
String[]getParameterValues(String key):通过一个key获取多个值
Map<String,String[]>getParameterMap():获取所有的参数名称和值
请求的中文乱码:
通用的方法:
newString(参数.getBytes("iso-8859-1"),"utf-8");
针对于post请求来说:只需要将请求流的编码设置成utf-8即可
request.setCharacterEncoding("utf-8");
请求转发:
request.getRequestDispatcher("内部路径").forward(request,response);
封装对象:
Bean.setxxx()一个个封装不方便
apache提供的一个工具类BeanUtils封装数据
使用步骤:
1.导入jar包commons-beanutils-1.8.3.jar、commons-logging-1.1.1.jar
2.调用 BeanUtils.populate(Object bean,Map<> 参数);
请求转发和重定向区别:
重定向发送两次请求,请求转发一次请求
重定向地址栏发生该表,请求转发不变
重定向是从浏览器发送,请求转发是服务器内部
重定向不存在request域对象,请求转发可以使用request域对象
重定向是response的方法,请求转发是request的方法
重定向可以请求站外资源,请求转发不可以