response 对象

介绍

对象主要将 JSP 容器处理后的结果传回到客户端。可以通过response变量设置HTTP的状态和向客户端发送数据,如Cookie、HTTP文件头信息等。

部分响应头描述:

响应头描述
Allow告诉浏览器,服务器支持的 request 方法(GET,POST等等)
Connection命令浏览器是否要使用持久的HTTP连接。close值 命令浏览器不使用持久HTTP连接,而keep-alive 意味着使用持久化连接。
Content-Encoding指定传输时页面的编码规则
Content-Language表述文档所使用的语言,比如en, en-us,,ru等等
Content-Type表明文档使用的MIME类型
Refresh指明浏览器每隔多久请求更新一次页面。
Set-Cookie指明当前页面对应的cookie
Expires指明啥时候过期并从缓存中移除
Content-Length表明响应的字节数。只有在浏览器使用持久化 (keep-alive) HTTP 连接时才有用

基础结构

response 对象是接口 javax.servlet.http.HttpServletResponse 的对象。

  • javax.servlet.ServletResponse 接口
    • javax.servlet.http.HttpServletResponse 接口

ServletResponse 只有一个 HttpServletResponse 一个子接口。因为现在浏览器都基于 http协议,如果由新的只需添加新的子接口。

作用

用来接收客户端发送而来的请求信息,例如:设置头信息,设置Cookie,进行跳转(重定向/客户端跳转)

主要方法

  • 添加 Cookie
    • void addCookie(Cookie cookie)
  • 添加头信息
    • void addHeader(java.lang.String name, java.lang.String value)
  • 跳转
    • void sendRedirect(java.lang.String location) throws java.io.IOException
  • 设置响应的 MIME 类型
    • void setContentType(java.lang.String type)
  • 设置响应编码
    • void setCharacterEncoding(java.lang.String charset)

setCharacterEncodingsetContentType 区别

  • setCharacterEncoding 只是设置字符的编码方式
  • setContentType 除了可以设置字符的编码方式还能设置文档内容的类型

主要几种用法

设置头信息

头信息是指能够随着客户端一起提交到服务器,而后又能够从服务器相应给客户端的一些信息,叫做头信息,头信息的内容有很多,最有用的就是设置定时刷新界面或者进行定时的跳转。

response 对象可以设置头信息的内容,通过 request 对象取得都头信息内容。

通过 request 获取

	<%
		Enumeration e = request.getHeaderNames();
	
		while(e.hasMoreElements()){
		String s = (String)e.nextElement();
			%>
			 <h3>name=<%=s %>--->value=<%=request.getHeader(s) %></h3>
			<% 
		}
	%>

通过以上代码获取内容示例如下:

name=host--->value=localhost:8080
name=connection--->value=keep-alive
name=cache-control--->value=max-age=0
name=upgrade-insecure-requests--->value=1
name=user-agent--->value=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36 Edg/81.0.416.72
name=accept--->value=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
name=sec-fetch-site--->value=none
name=sec-fetch-mode--->value=navigate
name=sec-fetch-user--->value=?1
name=sec-fetch-dest--->value=document
name=accept-encoding--->value=gzip, deflate, br
name=accept-language--->value=zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6

第二次获取的时候,我们可以发现会多一个 cookie,内容是JSESSIONID,实际上这个ID就是第一次访问服务器的时候,服务器自动设置上的,所以第二次访问的时候可以显示,这个ID实际上是服务器区分不同的客户端用的。

那么如何设置头信息呢。

范例:页面定时刷新

	<%!
	//定义全局变量
		int count = 0;
	%>
	<%
		response.addHeader("refresh", "3");//设置头信息(3秒刷新一次)
	%>
	<h1><%=count++ %></h1>

设置 Cookie

表示的是服务器保存在客户端的一组数据,所以这种数据是不安全的数据。

Cookie本身是一个类,有其常用的操作方法:

  • 构造方法
    • Cookie(java.lang.String name, java.lang.String value)
  • 取得Cookie的名称
    • public java.lang.String getName()
  • 取得Cookie的值
    • public java.lang.String getValue()
  • 设置Cookie最大保存时间
    • public void setMaxAge(int expiry)
    • 单位秒
  • 设置Cookie的值
    • public void setValue(java.lang.String newValue)

那么怎么把 Cookie 添加到客户端?使用 response 对象完成。

void addCookie(Cookie cookie)

那么如何取得 Cookie?使用 request 获取

Cookie cookie[] = request.getCookies();//取得客户端上面所有的Cookie

跳转

跳转分两种,一种是转发,一种是重定向

  • 转发(服务端跳转):地址栏不会变化,使用jsp:forward进行跳转
  • 重定向(客户端跳转):地址栏会变化,表单提交,a标签,设置头信息自动跳转

response 可以使用 sendRedirect() 完成

	<%
		response.sendRedirect("Demo01.jsp");
	%>

此种形式的跳转也是属于重定向的范畴。

两种跳转区别

  • 转发
    • 跳转之后,地址栏不会发生变化
    • 只要执行到跳转的代码,会立刻无条件跳转
  • 重定向
    • 跳转之后,地址栏会发生变化
    • 是将整个页面执行完成之后,再进行跳转的
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值