练习:Cookie和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 {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//1.创建Cookie
Cookie c = new Cookie("age","18");
//2.发送Cookie
response.addCookie(c);
}
@Override
protected 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 {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//3.获取Cookie
Cookie[] cs = request.getCookies();
//获取数据,遍历Cookies
if(cs!= null){
for (Cookie c : cs) {
String name = c.getName();
String value = c.getValue();
System.out.println(name+":"+value);
}
}
}
@Override
protected 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 {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//1.获取Session
HttpSession session = request.getSession();
//2.存储数据
session.setAttribute("age", 18);
}
@Override
protected 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 {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获取Session
HttpSession session = request.getSession();
//获得数据
String age = (String) session.getAttribute("age");
System.out.println(age);
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
}
————————————————
版权声明:本文为CSDN博主「郭乾亮1998.」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43691058/article/details/104065527
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。