我是靠谱客的博主 忧心皮皮虾,这篇文章主要介绍response的基本使用,现在分享给大家,希望可以做个参考。

HttpServletResponse

HTTP响应报文

  • response由响应行,响应头,响应体组成
    1. response响应行:格式:协议/版本 状态码
状态码状态描述说明
200OK
302Move temporarily重定向,请求的资源临时从不同的 URI响应请求。
304Not Modified从缓存中读取数据,不从服务器重新获取数据
403Forbidden
404Not Found
500Internal 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

  1. 响应行
方法说明
setStatus(int code)向浏览器发送状态码

2. 响应头

方法说明
setHeader(String name,String value)设置响应头信息

3. 响应体

方法说明
ServletOutputStream getOutputStream()用于向浏览器输出二进制数据。【字节流–文件下载】
java.io.PrintWriter getWriter()用于向浏览器输出字符数据。【字符流–给浏览器响应数据】

代码示例

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//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)

文件下载
  1. 创建一个页面,展示所有要被下载的文件的链接;
  2. 链接要下载的文件名称,发送给服务器的servlet,让servlet进行处理;
  3. 服务器加载文件资源;
  4. 提示浏览器,以下载的方式,获取服务器资源;
  5. 使用IO的方式,将文件数据输出到浏览器(response.getOutputStream());
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//网页文件 <!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>
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//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内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(90)

评论列表共有 0 条评论

立即
投稿
返回
顶部