小言_互联网的博客

练习:Cookie和Session相关试题

374人阅读  评论(0)


一、简答题

(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);
	}
}


转载:https://blog.csdn.net/weixin_43691058/article/details/104065527
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场