Javaweb学习笔记之HttpServletResponse(一):修改服务器发送给浏览器的响应信息

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_29331365/article/details/90174929
package com.demo.c_response;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/*
	HTTP 响应:
		HTTP/1.1 200 OK                		-- 响应行
		Server: Apache-Coyote/1.1         	-- 响应头(key-vaule)
		Content-Length: 24 
		Date: Fri, 30 Jan 2015 01:54:57 GMT
		                                   	-- 一个空行
		this is hello servlet!!!         	-- 实体内容

	响应行:协议/版本 状态码 状态描述
		协议版本:
			http1.0:当前客户端与服务器端建立连接之后,只能发送一次请求,一次请求之后连接关闭;
			http1.1:当前客户端与服务器端建立连接之后,可以在一次连接中发送多次请求。(现在基本上都是用 1.1)
		状态码:服务器处理请求的结果(状态)
			常见的状态:
			200:表示请求处理完成,并完美返回;
			302:表示请求需要进一步细化;
			404:表示客户访问的资源找不到;
			500:表示服务器的资源发送错误;(服务器内部错误)
	
	常见的响应头:
		Location: http://www.it315.org/index.jsp   			-- 表示重定向的地址,该头和302的状态码一起使用。
		Server:apache tomcat                 				-- 表示服务器的类型
		Content-Encoding: gzip                 				-- 表示服务器发送给浏览器的数据压缩类型
		Content-Length: 80                    				-- 表示服务器发送给浏览器的数据长度
		Content-Language: zh-cn               				-- 表示服务器支持的语言
		Content-Type: text/html; charset=GB2312   			-- 表示服务器发送给浏览器的数据类型及内容编码
		Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT  		-- 表示服务器资源的最后修改时间
		Refresh: 1;url=http://www.it315.org     			-- 表示定时刷新
		Content-Disposition: attachment; filename=aaa.zip 	-- 表示告诉浏览器以下载方式打开资源(下载文件时用到)
		Transfer-Encoding: chunked							-- 传输编码(chunked:表示分块编码)
		Set-Cookie:SS=Q0=5Lb_nQ; path=/search   			-- 表示服务器发送给浏览器的cookie信息(会话管理用到)
		Connection: close/Keep-Alive           				-- 表示服务器和浏览器的连接状态。close:关闭连接 keep-alive:保存连接
		Expires: -1                           				-- (此行和下面两行)表示通知浏览器不进行缓存
		Cache-Control: no-cache
		Pragma: no-cache

	HttpServletResponse 对象修改响应信息:
		响应行:
			response.setStatus():设置状态码;
			response.sendError():
		响应头:
			response.setHeader("name", "value"):设置响应头
		实体内容:
			response.getWriter().write():发送字符实体内容
			response.getOutputStream().write():发送字节实体内容
 */

@SuppressWarnings("serial")
@WebServlet("/ResponseDemo1")
public class ResponseDemo1 extends HttpServlet {

	/*
	 * 服务器响应过程,我们能操作的只有第三步,设置响应信息:
	 * 1、tomcat 服务器把请求信息封装到 HttpServletRequest 对象,把响应信息封装到 HttpServletResponse 对象;
	 * 2、tomcat 服务器调用 doGet() 方法,传入 request 和 response 对象;
	 */
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		/*
		 * 3、通过 response 对象改变响应信息
		 */
		/*
		 *  3、1 响应行
		 */
//		response.setStatus(404); // 修改状态码
//		response.sendError(404); // 发送404状态码 + 404的错误页面芫
		
		/*
		 *  3、2 响应头
		 */
		response.setHeader("server", "JBoss"); // 修改响应头
		
		/*
		 *  3、3 实体内容(就是浏览器页面看得到的内容)
		 */
//		response.getWriter().write("hello char");					// 发送字符实体内容
		response.getOutputStream().write("hello byte".getBytes());	// 发送字节实体内容
		
		/*
		 * 4、tomcat 服务器把 response 对象的内容转换成响应格式内容,在发送给浏览器解析
		 */
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

猜你喜欢

转载自blog.csdn.net/qq_29331365/article/details/90174929