response对象、session对象

目录

response对象

简介

设置头信息

请求重定向

Cookie处理

session内置对象

简介

登录注销 


response对象

简介

request内置对象主要的功能时进行用户请求的接收,即服务器要想接收到用户所发送的信息就使用request,而服务器端对客户端的回应信息就需要通过response完成。例如:“<%= %>”也是服务器对客户端的回应,服务器对客户端的回应是一种IO流的处理。response对应的类型:javax.servlet.HttpServletResponse,该接口定义如下:

public interface HttpServletResponse
extends ServletResponse

发现该接口继承了javax.servlet.ServletResponse的父接口,显然该设计和request一样是为了日后的协议扩充使用的。

需要关注它的两个方法:

在实际开发中,response对象主要使用如下的三个操作:

  • 设置头信息

  • 请求重定向

  • Cookie操作

设置头信息

查看用户的头信息可以通过request查看:

范例:取得用户头信息

<%@ page pageEncoding="UTF-8" %>
<%@ page import="java.util.*"%>
<%
	Enumeration<String> enu = request.getHeaderNames() ;
	while(enu.hasMoreElements()){
		String headName = enu.nextElement() ;
	%>
		<h2><%= headName%>=<%= request.getHeader(headName) %> </h2>
	<%	
	}
%>

头信息里面包含主机名称、连接状态、从那个页面跳转过来的(referer)、用户语言。

HttpServletResponse接口里面使用如下方法追加头信息:public void setHeader(String name, String value),可以设置一个自动刷新的头信息,用于定时跳转。

范例:定时跳转

<%@page pageEncoding="UTF-8"%>

<%
	response.setHeader("refresh","2;url=get_header.jsp") ;
%> 
<h1>你的XX操作成功,2秒后跳转.....</h1>
<h1>浏览器未跳转请点击<a href="get_header.jsp">跳转</a></h1>

请求重定向

在response对象里面由一个跳转指令:public void sendRedirect(String location) throws IOException ;

范例:跳转

<%@page pageEncoding="UTF-8"%>

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

跳转后地址发生了改变,属于客户端跳转;

JSP两种跳转之间的区别?

  • 客户端跳转:地址会发生改变,并且不会传递request属性范围,页面代码执行完后才跳转;

         \- 跳转方法:<a>、sendRedirect、window.location();

  • 服务器端跳转:地址不会发生改变,会传递request属性范围,遇到跳转代码立即跳转;与数据库操作时需要注意关闭位置。

        \-跳转方法:<jsp:forward page="路径"/>

Cookie处理

Cookie时服务器端存放到客户端的一些数据信息,例如:“记住密码”功能就是使用了Cookie。由于Cookie是保存在客户端的,所以安全性较差。

对Cookie进行操作需要使用到:javax.servlet.http.Cookie的处理类,该类中定义如下的处理方法:

  • 构造方法:public Cookie(String name, String value);
  • 取得Cookie名字:public String getName() ;
  • 取得Cookie内容:public String getValue() ;
  • 设置保存时间:public void setMaxAge(int expiry) ;
  • 设置Cookie的保存路径:public void setPath(String uri) ;

通过response.addCookie(),保存Cookie;

范例:设置Cookie信息

<%@page pageEncoding="UTF-8"%>

<%
	Cookie c1 = new Cookie("uname", "ren");
	Cookie c2 = new Cookie("pass", "java") ;
	response.addCookie(c1) ;
	response.addCookie(c2) ;
%> 

设置Cookie操作是由服务器端完成的,客户端的所有Cookie数据都是随客户端的头信息发送给服务端的,在request对象里面有一个取得全部Cookie信息的方法: public Cookie [] getCookie() ;

客户端只能保存当前浏览器中使用的Cookie,当浏览器关闭后Cookie就会消失,要想长久保存使用保存时间。还需要注意的是Cookie是默认在当前目录下使用的,则可以通过将Cookie的设置路径放在根目录下,使得整个的站点都可以使用Cookie。

范例:设置时间与路径

<%@page pageEncoding="UTF-8"%>

<%
	Cookie c1 = new Cookie("uname", "ren");
	Cookie c2 = new Cookie("pass", "java") ;
	c1.setMaxAge(75) ;  // 30 秒
	c2.setMaxAge(57) ;
	c2.setPath(request.getContextPath()) ;
	response.addCookie(c1) ;
	response.addCookie(c2) ;	
%> 

session内置对象

简介

每一个用户连接到服务器上,每个用户都会分配一块数据的保存空间,用来描述这个用户的信息,所以session=当前操作用户。session对象对应的类型是javax.servlet.http.HttpSession接口对像,并没有父类接口,即session只是属于http的协议范畴。

服务器端通过Session ID来区分不同用户的,如果说把服务器端连接的用户是一个Map的集合,那么Session ID就是key,用户数据就是value。Session ID是由Tomcat维护的,HttpSession接口里面提供有Session ID 的操作方法:public String getId() ;

需要注意以下两点:

  • 用户只有关闭浏览器重新访问,Session ID才会被刷新。

  • 用户在Cookie操作的时候有一个JSESSION的内容,是服务器端向客户端设置Cookie保存的就是Sessiong;

面试题:Session与Cookie关系如下:

重新设置Cookie会覆盖原来的JSESSION,使得访问时间更长。

登录注销 

在实际的开发之中,session主要用于登录检测,主要的在于属性的操作:

设置属性:public void setAttribute(String name, Object value);

取得属性:public Object getAttribute(String name) ;

因为seesion属性在不管服务器端跳转还是客户端跳转都可以取得session设置的属性内容,即通过session能够取得属性表示你登录过,如果没有取得则表示没有登录过。

其中注销操作告诉服务器端该用户不在操作了,需要将服务器端该用户的Session ID清除,在HttpSession接口里面提供有一个注销的方法:public void invalidate()。

几乎所有的开发都会使用到登录注销,session属性范围一般只会保存用户名、权限。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值