Cookie对象、及JSP内置对象2

本文详细介绍了Cookie的定义、功能、常见方法及实例,演示了如何实现Cookie的过程。接着深入探讨了session对象,包括其定义、工作机制、与Cookie的区别,以及常用方法和模拟登录的示例。此外,还讲解了application对象的生命周期、使用范围和方法,通过实例展示了获取项目路径和统计访问人数。最后,对比了application、session和request对象的区别。
摘要由CSDN通过智能技术生成

Cookie对象、及JSP内置对象2

Cookie

cookie不是内置对象。使用时,需要先new。

定义

Cookie是由服务端生成,发送到客户端保存。当客户端第一次请求时,服务端会生成一个Cookie,里面包含客户端想要的信息,发送到客户端。客户端在本地将Cookie保存下来。在Cookie没有失效的情况下,客户端再次发出相同的请求时,直接在本地查找Cookie,获得信息,不需要经过服务器端,提高了效率。

功能

类似于本地缓存的作用。可以保存密码等信息。可以提高访问服务器的效率,但是安全性较差。

常见方法

Cookie内包含一个name变量、value变量。
public Cookie(String name , String value);		//构造函数
String getName();			//返回属性名
String getValue();			//返回value值
void setMaxAge(int expiry);			//设置最大的有效期,单位为秒

服务器端生成Cookie

Cookie cookie = new Cookie("name","zhangsan");		//声明一个Cookie类对象cookie,name=zhangsan
response.addCookie(cookie);  //将cookie加到response对象中

服务端发送Cookie到客户端:页面跳转(重定向、转发均可)
客户端获取Cookie

request.getCookies();

注意:

  1. 客户端不能获取某一个单独的Cookie对象,只能获取全部的对象。
  2. 服务器增加Cookie对象: response对象,客户端获取Cookie对象:request对象。
  3. Cookie的值最好只用英文、数字;尽量不要用中文、特殊符号,不然要转换编码。

示例1:实现Cookie的过程

在根目录下,新建一个Cookie_Demo文件夹,在该文件夹下,新建response_addCookie.jsp 和 result.jsp 文件。

response_addCookie.jsp代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <body>
    	<%	//服务端生成Cookie
    		Cookie cookie1 = new Cookie("name","zhangsan");
    		Cookie cookie2 = new Cookie("pwd","123456");
    		
    		//response对象增加Cookie对象
    		response.addCookie(cookie1);
    		response.addCookie(cookie2);
    		
    		//发送Cookie,页面跳转到客户端(重定向、转发都可以)
    		response.sendRedirect("result.jsp");
    	 %>
  </body>
</html>
result.jsp代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <body>
   	<%
   		//客户端获取全部的Cookie
    		Cookie [] cookies =request.getCookies();
    		for(Cookie cookie : cookies){
    			out.println(cookie.getName()+"	"+cookie.getValue()+"<br>");
    		}
   	 %>
  </body>
</html>
测试

运行response_addCookie.jsp页面,显示如下:在这里插入图片描述

可以发现除了自己设置的两个Cookie对象,还有一个name=JSESSIONID的Cookie。
为什么有这个Cookie?
原因见下文的 session对象的工作机制。

如何在浏览器中,查看Cookie
  1. 在谷歌浏览器中运行response_addCookie.jsp页面
  2. F12,进入开发者模式
  3. 点击Application,点击Cookies,点击当前网页,显示如下:在这里插入图片描述

示例2:自动保存用户名信息

在Cookie_Demo文件夹下,新建login.jsp 和 check.jsp 文件。login.jsp 和 result.jsp 作为客户端,check.jsp作为服务器端。

login.jsp代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <body>		
   <%!		//声明全局变量
   	String uname ="";
   	String pwd = "";
   	boolean flag = false ;	//flag:标记Cookie是否有效
    %>
    <%		//提取出uname的value值
    	Cookie [] cookies = request.getCookies();
    	for(Cookie cookie : cookies){
    		if(cookie.getName().equals("name")){
    			uname=cookie.getValue();
    			flag=true;
    		}
    		if(cookie.getName().equals("pwd")){
    			pwd=cookie.getValue();
    		}
    	}
    	if(flag){
    		out.print("Cookie : " + uname + "&l
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值