学习jsp篇:jsp Cookie介绍
这篇博客介绍下Cookie,JSP中比较重要的知识点Session,Cookie,表单数据,过滤器,文件上传。而Session和Cookie一般放在一起讲,在介绍cookie之前,要先介绍下Cookie。(废话一堆。。。)
1、Cookie(客户端,不是内置对象):是由服务端生成的,再发送给客户端保存。相当于本地缓存的作用(客户端 ——> 服务端)。
2、Cookie作用:提高访问服务端的效率,但是安全性较差。
3、Cookie的产生:
a、Cookie中保存的数据形式:key,value。
b、由Javax.servlet.http.Cookie类产生。
c、常见方法:
public Cookie(String name,String value)Cookie构造器
String getName()获得key值
String getValue()获得value值
void setMaxAge(int expiry)Cookie最大有效期
response.addCookie(Cookie cookie)用于服务端产生Cookie
request。getCookie(Cookie cookie)用于客户端获得Cookie
4、生成Cookie步骤:
a、服务端准备Cookie:response.addCookie(Cookie cookie)
b、页面跳转(请求转发,重定向)
c、客户端获取Cookie:request.getCookie();
注意:a、服务端增加Cookie:request对象,客户端获取对象:response对象
b、不能直接获取某一对象,只能一次将全部Cookie对象获取到。
5、写个简单的生成Cookie的实例
在项目下的web目录下新建一个Cookie文件夹,response_add.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>cookie验证页面</title>
</head>
<body>
<%
Cookie cookie1=new Cookie("zz","1111");
Cookie cookie2=new Cookie("aa","2222");
//服务端增加cookie
response.addCookie(cookie1);
response.addCookie(cookie2);
//转发cookie给客户端
response.sendRedirect("result.jsp");
%>
</body>
</html>
result.jsp生成cookie
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
//客户端获取cookie
Cookie[] cookies=request.getCookies();
//输出cookie
for(Cookie cookie:cookies){
out.println(cookie.getName()+"=="+cookie.getValue());
}
%>
</body>
</html>
结果

6、生成Cookie的实例二(算是进阶版吧)
在web目录下新建一个文件CookieDemo
login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录</title>
</head>
<body>
<%!
String name;
%>
<%
//获得已存在客户端中cookie
boolean flag=false;
Cookie cookies[]=request.getCookies();
for(Cookie cookie:cookies){
if(cookie.getName().equals("uname")){
name=cookie.getValue();
flag=true;
}
}
if(!flag){
out.println("cookie已失效");
}else{
out.println("cookie+"+name);
}
%>
<form action="check.jsp" method="post">
用户名: <input type="text" name="uname" value="<%=(name==null?"":name)%>" ><br/>
密码: <input type="password" name="upwd" ><br/>
<input type="submit" value="登录"><br/>
</form>
</body>
</html>
check.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String name=request.getParameter("uname");
Cookie cookie=new Cookie("uname",name);//没有无参构造器
//增加cookie
cookie.setMaxAge(10);
response.addCookie(cookie);
//转发cookie
response.sendRedirect("A.jsp");//这里我感觉是往客户端发,由于我们是在电脑上操作的,客户端和服务端其实是在一个机子上的
%>
</body>
</html>
A.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body> </body>
</html>
结果



从最后一张结果我们可以看到第一次登陆之后,用户名的值就存在客户端中,再次登录时,用户名已有记录。
学习jsp篇:jsp Cookie介绍的更多相关文章
- JAVA遇见HTML——JSP篇:JSP内置对象(上)
JSP九大内置对象 JSP内置对象是Web容器创建的一组对象,不使用new关键就可以使用的内置对象. <% int[] value={60,70,80}; for(int i:value){ o ...
- Java队列学习第一篇之列介绍
Java并发之显式锁和隐式锁的区别 在面试的过程中有可能会问到:在Java并发编程中,锁有两种实现:使用隐式锁和使用显示锁分别是什么?两者的区别是什么?所谓的显式锁和隐式锁的区别也就是说说Synchr ...
- 学习jsp篇:jsp Session介绍
1.Session基本介绍 Session---会话,它是一个内置对象.会话打个比方说就是浏览网站:开始到结束,或者说购物从开始到结束. 2.Session机制 客户端在第一次请求服务端时,服务端会产 ...
- java web学习笔记-jsp篇
1.java web简介 1.1静态页面与动态页面 表现形式 所需技术 静态网页 网页内容固定,不会更新 html,css 动态网页 网页内容由程序动态显示,自动更新 html,css,DB,ja ...
- JSP学习笔记七之Cookie
首先提一下http协议的无状态性.指的是server不会记住已经给它发过请求的client. 每次收到请求都会觉得是一个新的client发过来的. (即:server不会记住给他发过请求的client ...
- javaweb回顾第七篇jsp
1:为什么会有JSP jsp全名(java server pages)中文叫做java服务器页面.在Servlet那一篇我们发现用Servlet可以生成动态页面,但是我们却在Servlet中却写了大量 ...
- Java遇见HTML——JSP篇之商品浏览记录的实现
一.项目总体介绍 使用Cookie实现商品浏览记录. 要实现这个程序采取的是Model1(Jsp+JavaBean)架构实现,具体步骤: 首先要有个数据库,商品表,操作数据库的一个类DBHelper类 ...
- JavaWeb学习笔记之JSP(一)
1. JSP: 1.1. 为什么需要 JSP ? 如果使用Servlet程序来输出只有局部内容需要动态改变的网页,但是其中的静态网页内容也需要程序员使用Java语言来进行输出,这就造成了大量代码的冗余 ...
- Spring Boot干货系列:(五)开发Web应用JSP篇
Spring Boot干货系列:(五)开发Web应用JSP篇 原创 2017-04-05 嘟嘟MD 嘟爷java超神学堂 前言 上一篇介绍了Spring Boot中使用Thymeleaf模板引擎,今天 ...
随机推荐
- Android物联网应用程序开发(智慧城市)—— 用户注册界面开发
效果: 布局代码: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns: ...
- SpringCloud创建Config模块
1.说明 本文详细介绍Spring Cloud创建Config模块的方法, 基于已经创建好的Spring Cloud父工程, 请参考SpringCloud创建项目父工程, 创建Config模块这个子工 ...
- ActiveMQ基础教程(一):认识ActiveMQ
ActiveMQ是Apache软件基金会所研发开源的消息中间件,为应用程序提供高效的.可扩展的.稳定的和安全的企业级消息通信. 现在的消息队列有不少,RabbitMQ.Kafka.RocketMQ,Z ...
- gradle学习(一)
projects和tasks 任何一个Gradle构建都是由一个或者多个project组成 每个project都有多个tasks构成 每个task都代表了构建执行过程中的一个原子性操作.例如 编译 打 ...
- 文件上传之结合phpinfo与本地文件包含利用
背景 某站点存在本地文件包含及phpinfo,可以利用其执行脚本. 原理 原理: 利用php post上传文件产生临时文件,phpinfo()读临时文件的路径和名字,本地包含漏洞生成1句话后门 1.p ...
- 《剑指offer》面试题56 - I. 数组中数字出现的次数
问题描述 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次.请写程序找出这两个只出现一次的数字.要求时间复杂度是O(n),空间复杂度是O(1). 示例 1: 输入:nums = [4,1 ...
- 《剑指offer》面试题66. 构建乘积数组
问题描述 给定一个数组 A[0,1,-,n-1],请构建一个数组 B[0,1,-,n-1],其中 B 中的元素 B[i]=A[0]×A[1]×-×A[i-1]×A[i+1]×-×A[n-1].不能使用 ...
- sql多行合并一列
with a as( select * from( select 1 userId , '天津' province union select 1 userId , '北京' union select ...
- 【刷题-LeetCode】307. Range Sum Query - Mutable
Range Sum Query - Mutable Given an integer array nums, find the sum of the elements between indices ...
- golang中的原子操作atomic包
1. 概念 原子操作 atomic 包 加锁操作涉及到内核态的上下文切换,比较耗时,代价高, 针对基本数据类型我们还可以使用原子操作来保证并发的安全, 因为原子操作是go语言提供的方法,我们在用户态就 ...