首页 > 编程知识 正文

简述cookie和session,谈一谈对Cookie和Session的理解,描述一下两者间的异同

时间:2023-05-05 02:52:59 阅读:284648 作者:4394

文章目录 一、简答题(1)什么是状态管理(2)简述什么是Cookie(3)简述Session的工作原理。(4)简述什么是Session超时,如何修改缺省的时间限制? 二、选择题三、代码阅读题(1)阅读代码,说明序号处代码的含义 四、编码题(1)使用Cookie(2)Session编码题

一、简答题 (1)什么是状态管理

状态管理是将浏览器和服务器之间的多次交互当做一个整体,并将多次交互之间涉及的数据保存下来,提供给后续的交互进行数据的管理。

(2)简述什么是Cookie

Cookie是一种客户端会话技术,将数据保存在客户端。

(3)简述Session的工作原理。

①Session是依赖Cookie的,而Cookie是由请求头和响应头来实现的。②创建Session对象,并用SessionID标注:第一次获得Session时,会在内存中创建一个新的Session对象,并标注ID,存入Cookie中,并发送给浏览器。③通过SessionID匹配,下一次请求时,通过Cookie请求头中的SessionID与服务器中的对象匹配。

(4)简述什么是Session超时,如何修改缺省的时间限制?

web服务器会将空闲时间过长的Session对象删除掉,以节省服务器内存空间资源。超时时间限制一般是30分钟。
修改Session的缺省时间限制,有两种方式:①通过修改tomcat中 conf/web.xml 文件的设置②通过编程的方式来修改,通过调用Session对象的setMaxInactiveInterval方法来修改。

二、选择题

下列说法正确的是( )

A. 在Servlet中,Session对象不需要创建,直接就可以使用。B. 使用Session对象的setAttribute方法进行对象的绑定。C. Session对象不能手动删除,只能等待系统删除。D. 禁用Cookie后,Session功能将失效。

答案:B,D
A:JSP中,session可以直接使用,但是在servlet中需要创建Session。
C:关闭Session有三种方法:①服务器关闭。②session对象调用invalidate()。③session默认失效时间30分钟。
D:因为Session依赖Cookie。

三、代码阅读题 (1)阅读代码,说明序号处代码的含义 Cookie[] cookies = request.getCookies();//---------------------------1 if(cookies !=null){ for(int i=0;i<cookies.length;i++){ Cookie currCookie = cookies[i]; String name = currCookie.getName();//-----------------------2 String value = currCookie.getValue(); out.println("<h1>name:" + name + " value:" + value + "</h1>"); } }else{ out.println("<h1>no cookie</h1>"); }

①获得Cookie数组。
②获得Cookie的键。

四、编码题 (1)使用Cookie

在servlet中创建cookie,设置参数,参数名为age,值为18,并将cookie返回到浏览器。

说明:
下面的代码演示了:在Demo1中设置好Cookie并发送给浏览器,浏览器访问Demo2时会携带绑定好参数的Cookie,此时在Demo2中获得并打印Cookie。
Demo1

package test;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * 类说明: * 发送Cookie * @author qianliangguo */@WebServlet("/Demo1")public class Demo1 extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//1.创建CookieCookie c = new Cookie("age","18");//2.发送Cookieresponse.addCookie(c);}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);}}

Demo2

package test;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * 类说明: * 获得Cookie并打印 * @author qianliangguo */@WebServlet("/Demo2")public class Demo2 extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//3.获取CookieCookie[] cs = request.getCookies();//获取数据,遍历Cookiesif(cs!= null){for (Cookie c : cs) {String name = c.getName();String value = c.getValue();System.out.println(name+":"+value);}}}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);}} (2)Session编码题

为session,绑定参数age,值为18,并获得session。

说明:
下面的代码演示了:在Demo3中设置好Session并发送给浏览器,浏览器访问Demo3时会携带绑定好参数的Session,此时在Demo4中获得并打印Session。

Demo3

package test;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;/** * 类说明: * 为Session绑定参数 * @author qianliangguo */@WebServlet("/Demo3")public class Demo3 extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//1.获取SessionHttpSession session = request.getSession();//2.存储数据session.setAttribute("age", 18);}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);}}

Demo4

package test;import java.io.IOException;import java.util.Enumeration;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;/** * 类说明: * 获得Session * @author qianliangguo */@WebServlet("/Demo4")public class Demo4 extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//获取SessionHttpSession session = request.getSession();//获得数据String age = (String) session.getAttribute("age");System.out.println(age);}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);}}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。