这篇博客介绍下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>
结果
从最后一张结果我们可以看到第一次登陆之后,用户名的值就存在客户端中,再次登录时,用户名已有记录。