浏览器Cookie和Session和ServletContent对象

本文介绍了Java Web中的三种关键作用域对象——Cookie用于本地存储小文本信息,Session保存与会话关联的数据,而ServletContext则作为全局应用对象。通过实例展示了如何设置和读取这些对象,以及它们在Web开发中的应用场景。
摘要由CSDN通过智能技术生成

Cookie:

  • 浏览器保存在本地的文本数据(数据保存在本地)
  • 常用于保存登录状态,用户资料等小文本
  • 具有时效性,内容伴随请求发送给tomcat
  • cookie默认有效期为当前浏览器窗口,浏览器被关闭cookie消失
Cookie cookie=new Cookie("user","admin");
		//设置最大有效期为7天
cookie.setMaxAge(60*60*24*7);

例子:

设置cookie

UlikemeLoginServlet.java

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("用户登录成功");
		Cookie cookie=new Cookie("user","admin");
		//设置最大有效期为7天
		cookie.setMaxAge(60*60*24*7);
		response.addCookie(cookie); //保存cookie
		response.getWriter().println("login success");
	}

读取cookie:

 UlikemeIndexServlet.java

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		//获取所有cookie信息
		Cookie cs[]= request.getCookies();
		String user=null;
		for(Cookie c:cs) {
			System.out.println(c.getName()+"--"+c.getValue());
			if (c.getName().equals("user")) {
				user=c.getValue();
				break;
			}
		}
		
		if(user==null) {
			response.getWriter().println("user not login");
		}else {
			response.getWriter().println("user has login,user:"+user);
		}
		
		
	}

浏览器输入:http://localhost:9999/servlet-advance/cookies/index

控制台显示


Session:

  • 保存与浏览器窗口对应的数据(数据保存在服务器端)
  • 数据存储在tomcat内存中,有时效性,默认为30min
  • Session通过浏览器Cookie的sessionId值提取用户数据

SessionLoginServlet.java

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("用户登录成功");
		//获取到用户会话Session对象
		HttpSession session= request.getSession();
		String sessionId=session.getId();
		System.out.println(sessionId);
		session.setAttribute("name", "jack");
		request.getRequestDispatcher("/session/index").forward(request, response);
	}

SessionIndexServlet.jsp

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		HttpSession session=request.getSession();
		String sessionId=session.getId();
		System.out.println(sessionId);
		String name=(String) session.getAttribute("name");
		response.setContentType("text/html;charset=utf-8");
		response.getWriter().println("这是首页,当前用户是:"+name);
	}

ServletContent对象:

SerevletContextInitServlet .java

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		 ServletContext context= request.getServletContext();
		 context.setAttribute("copyright", "@ 2021 ulikeme.com ");
		 context.setAttribute("title", " hello my web ");
		 response.getWriter().println("init success");
	}

ServletContextDefaultServlet.java

protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		ServletContext context = (ServletContext) request.getServletContext();
		String copyright = (String) context.getAttribute("copyright");
		String title = (String) context.getAttribute("title");
		response.setContentType("text/html;charset=utf-8");
		response.getWriter().println("<h1>"+copyright+"</h1>"+ title);
	}

java web 三大作用域对象

  • HttpServletRequest:请求对象
  • HttpSession:用户会话对象
  • ServletContext:web应用全局对象

(作用域和生命周期依次递增)

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值