HttpServletResponse和HttpServletRequest:
服务器接收到请求后,会针对每一次请求分别创建一个代表请求的ServletRequest对象和一个
代表响应的ServletResponse对象。request:我们用来获取客户端提交过来的信息,response我们用于返回响应客户端的信息。
HttpServletResponse:
1、响应行
setStatus(int sc):该方法,用于设置响应状态码。
2、响应头
sendRedirect(String,location) 请求重定向。
setHeader("String","String") 设置响应头信息。
3、响应正文:
response.getWriter().write()
response.getOutPutStream().write()
常见应用:
1、 解决乱码、
以字符流输出乱码解决方法 :
第一种:
response.setCharactorEncoding("utf-8"):告诉服务器使用的字符编码
response.setHeader("content-type","text/html,charset=utf-8") 告诉客户端使用的编码。
第二种
response.setContentType("text/html","charset=utf-8");同时告诉客户端和浏览器使用的编码。
以字节流输出的乱码解决方案:
response.setContentType("text/html","charset=utf-8")
response.getInputStream().write("中文乱码问题".getBytes())
getBytes()默认使用客户端的字符 码 。
2、 文件下载:
response.setHeader("content-dispositon","attachment;filename="+filename);告诉客户端要下载文件。
response.setHeader("content-type","image/jpeg") 输出的类型
3 、刷新
response.setHeader("refresh","1") 表示一秒种刷新一次
4、跳转
response.setHeader(""refresh","3;url=location") 三秒钟后跳转到,相应的location。
5、重定向(可以跳到任意站点,他相当于客户端重新访问一个地址。)
1、 response.setStatus(302) 响应行:告诉服务器端需要重定向。
response.setHeader("location","/day10_requestandresponse/ServletDemo4")
2、response.sendRedirect("location")
如果你想要访问百度
response.sendRedirect("www.baidu.com")
HttpServletRequest
请求行:
1、getMeathd() 请求的方式
2、getRequestURL 请求的完整URL
3、getContentPath /工程名
4、getRequestURI() /工程名/url-pattern
5、getQueryString;请求参数部分
请求消息头:
1、getHeader("String") 根据头信息,得到头名称。
2、getHeaderNames() 所有的头信息。
3、getHeaders(String name) 根据相同的头名称得到一个头信息的枚举
请求正文:
1、getParameter("String name") 根据表单中的name,得到具体的值。
2、getParameterValues("String name") 获取复选框,选中值的一个集合。
3、getParameterNames() 所有表单name的一个枚举。
4、getParameterMap 关于表单里面的name value的一个集合Map<String,String[]>
5、request域有关的问题。
setAttribute(String name,Object obj);
getAttribute("name")
removeAttribute("name")
与请求转发,相关的方法:(中间对象:sun.rmi.server.Dispatcher)
转发:
getRequestDispatcher(location).forward(request,response)
请求包含:
getRequestDispatcher(location).include(request,response).
请求编码相关问题:
post:
request.setCharacterEncoding("utf-8")
GET;
String str = request.getParameter("name");
new String(str.getBytes("iso-8850-1"),"utf-8")