文章目录 一、简答题(1)什么是状态管理(2)简述什么是Cookie(3)简述Session的工作原理。(4)简述什么是Session超时,如何修改缺省的时间限制? 二、选择题三、代码阅读题(1)阅读代码,说明序号处代码的含义 四、编码题(1)使用Cookie(2)Session编码题
一、简答题 (1)什么是状态管理
状态管理是将浏览器和服务器之间的多次交互当做一个整体,并将多次交互之间涉及的数据保存下来,提供给后续的交互进行数据的管理。
(2)简述什么是CookieCookie是一种客户端会话技术,将数据保存在客户端。
(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。
①获得Cookie数组。
②获得Cookie的键。
在servlet中创建cookie,设置参数,参数名为age,值为18,并将cookie返回到浏览器。
说明:
下面的代码演示了:在Demo1中设置好Cookie并发送给浏览器,浏览器访问Demo2时会携带绑定好参数的Cookie,此时在Demo2中获得并打印Cookie。
Demo1
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);}}