新闻资讯

新闻资讯 行业动态

练习:Cookie和Session相关试题

编辑:006     时间:2020-03-14
一、简答题
(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
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

回复列表

相关推荐