概述
HttpServletResponse
HTTP响应报文
- response由响应行,响应头,响应体组成
response响应行
:格式:协议/版本 状态码
状态码 | 状态描述 | 说明 |
---|---|---|
200 | OK | |
302 | Move temporarily | 重定向,请求的资源临时从不同的 URI响应请求。 |
304 | Not Modified | 从缓存中读取数据,不从服务器重新获取数据 |
403 | Forbidden | |
404 | Not Found | |
500 | Internal Server Error | 服务器内部错误。通常程序抛异常 |
2. response响应头
:通常也是key=value形式
响应头key | 响应头value |
---|---|
location | 指定响应的路径,需要与状态码302配合使用,完成跳转,实现重定向。 |
content-Type | 响应正文的类型(MIME类型)例如:text/html;charset=UTF-8 |
content-disposition | 通过浏览器以附件形式解析正文,例如:attachment;filename=xx.zip |
refresh | 页面刷新,例如:3;url=www.itcast.cn //三秒刷新页面到www.itcast.cn |
3. response响应体
:也就是服务器发给浏览器的资源
HttpServletResponse对象作用
HttpServletResponse对象常用API
- 响应行
方法 | 说明 |
---|---|
setStatus(int code) | 向浏览器发送状态码 |
2. 响应头
方法 | 说明 |
---|---|
setHeader(String name,String value) | 设置响应头信息 |
3. 响应体
方法 | 说明 |
---|---|
ServletOutputStream getOutputStream() | 用于向浏览器输出二进制数据。【字节流–文件下载】 |
java.io.PrintWriter getWriter() | 用于向浏览器输出字符数据。【字符流–给浏览器响应数据】 |
代码示例
//1.响应头---定时刷新 RefreshServlet.java
response.setHeader("refresh","3;htt://www.baidu.com");
//2.设置输出语句以文本形式解析
//可以简化下面写法
response.setHeader("content-type","text/plain");
//简化如下
response.setContentType("text/plain");
response.getWriter().println("<html>");
response.getWriter().println("<body>");
response.getWriter().println("<h1>);
response.getWriter().println("hello content");
response.getWriter().println(</h1>");
response.getWriter().println("</body>");
response.getWriter().println("</html>");
//3解决中文乱码问题
response.setHeader("content-type","text/html;charset=utf-8");
//简化书写如下
response.setContentType("text/html;charSet=utf-8");
//4解决重定向
response.setStatus(302);
response.setHeader("location",url);
//简化书写如下
response.sendRedirect(url)
重定向和重转发的区别
区别点 | 转发 | 重定向 |
---|---|---|
实现原理 | 服务器内部 | 浏览器执行 |
请求次数 | 一次 | 两次 |
浏览器地址栏 | 不发生变化 | 变为第二次请求地址 |
能否共享request域 | 能共享 | 不能共享 |
作用 | 共享request域对象 | 完成跳转 |
写法 | request.getRequestDispatcher(url).forward(request,response) | response.sendRedirect(url) |
文件下载
- 创建一个页面,展示所有要被下载的文件的链接;
- 链接要下载的文件名称,发送给服务器的servlet,让servlet进行处理;
- 服务器加载文件资源;
- 提示浏览器,以下载的方式,获取服务器资源;
- 使用IO的方式,将文件数据输出到浏览器(response.getOutputStream());
//网页文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件下载</title>
</head>
<body>
<a href="/download?filename=1.jpg">1.jpg</a><br>
<a href="/download?filename=2.txt">2.txt</a><br>
<a href="/download?filename=3.zip">3.zip</a><br>
<a href="/download?filename=Sublime.exe">Sublime.exe</a><br>
</body>
</html>
//servlet文档
@webServlet(name="DownloadServlet",urlPatterns="download")
public class DownloadServlet extends HttpServlet {
protected void doGet(HttpServletRequest request,HttpServletRespnse response){
//获取要下载的文件名
String filename = request.getParameters("filename");
//获取Context域下的文件路径
String path = request.getServletContext().getRealPath("/WEB-INF/"+filename);
//获取文件扩展名
String mimeType = request.getServletContext().getmimeType(filename);
//告诉浏览器以附件的形式来展示文件
//response.setHeader("content-type",mimeType);
//简化形式
response.setHeader(mimeType);
//告诉浏览器以附件的形式来展示文件
response.setHeader("Content-Disposition","attachment;filename="+filename);
//开启IO流下载
File file = new File(path);
if(file.exist())
{
//输入
FileInputStream in = new FileInputStream(file);
//输出
ServletOutputStream out = response.getOutputStream();
int len= -1;
byte[] buf = new byte[1024];
while((len = in.read(buf))!=-1){
out.write(buf,0,len);
}
//input是服务器资源必选关闭
in.close();
//output是浏览器资源,并且是响应对象的方法 响应一次就自动结束,所以不用关。
}
}
protected void doPost(HttpServletRequest request,HttpServletRespnse response){
doGet(request,response);
}
}
最后
以上就是忧心皮皮虾为你收集整理的response的基本使用的全部内容,希望文章能够帮你解决response的基本使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复