JavaWeb学习——Cookie与JSP

一、Cookie简介

Cookie 指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据

Cookie 是由 Web 服务器保存在用户浏览器上的小文本文件,它包含有关用户的信息。

Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie。内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时      间是短暂的。硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的。所以,按存在时间,可分        为非持久Cookie和持久Cookie。

二、Cookie的常用方法

方法 描述
Cookie(String name, String value) 实例化对象,传入cookie的名称和值
public String getName() 获取Cookie对象的名称
public String getValue() 获取Cookie对象的值
public void setValue(String value) 设置Cookie的值
public void setMaxAge(int expiry) 设置Cookie的有效期,如果不设置,有效期为一次对话。
public int getMaxAge() 获取Cookie的有效期
public void setPath(String url) 设置Cookie的有效路径,即访问url之外的资源检测不到这个cookie
public String getPath() 获取Cookie的有效路径
public void setDomain(String pattern) 设置Cookie的有效域,多个网站可以使用一个Cookie
public Strinng getDomain() 获取Cookie的有效域

response接口也中定义了一个addCookie方法,它用于在其响应头中增加一个相应的Set-Cookie头字段。 同样,request接口中也定义了一个getCookies方法,它用于获取      客户端提交的Cookie。

三、实例(用户登录)

以Cookie来保存用户登录的用户名和密码:

 1 <!-- login.jsp-->
 2 <html>
 3   <body>
 4   <%
 5       String username="", password="";  //创建两个存储username和password的对象
 6
 7       Cookie[] cookies = request.getCookies();  //获取客户端保存的cookie数组
 8       if(cookies!=null&&cookies.length>0){  //检测cookies是否为空
 9           for(Cookie c: cookies){
10               if(c.getName().equals("username")){
11                   username = URLDecoder.decode(c.getValue(),"utf-8");  //获取cookies中的中文数据,需要使用URLDecoder类的decode方法进行中文解码
12               }
13               if(c.getName().equals("password")){
14                   password = URLDecoder.decode(c.getValue(),"utf-8");
15               }
16           }
17       }
18    %>
19     <h1>用户登录</h1>
20     <%@include file="date.jsp"%><%--include指令 --%>
21     <jsp:include page="date.jsp" flush="false" /> <%--include动作 --%>
22     <hr>
23     <form action="doLogin.jsp" name="LoginForm" method="post">
24       <table>
25         <tr>
26           <td>用户名:</td>
27           <td><input type="text" name="username" value="<%=username %>"></td>
28         </tr>
29         <tr>
30           <td>密码:</td>
31           <td><input type="password" name="password" value="<%=password %>"></td>
32         </tr>
33         <tr>
34           <td colspan="2"><input type="checkbox" name="isUseCookie" checked="checked">是否保存用户信息</td>
35         </tr>
36         <tr>
37           <td colspan="2" text-align="center"><input type="submit" value="登录"></tr>
38         </tr>
39       </table>
40     </form>
41   </body>
42 </html>
<!-- doLogin.jsp -->
<html>
  <body>
    <%
        request.setCharacterEncoding("utf-8");
        String[] isUseCookies = request.getParameterValues("isUseCookie");
        //首先判断用户是否选择保存信息
        if(isUseCookies!=null&&isUseCookies.length>0){
            //使用URLEncoder类中的encoder方法解决中文乱码问题
            String username = URLEncoder.encode(request.getParameter("username"),"utf-8");
            String password = URLEncoder.encode(request.getParameter("password"),"utf-8");

            Cookie usernameCookie = new Cookie("username",username);  //创建Cookie
            Cookie passwordCookie = new Cookie("password",password);

            usernameCookie.setMaxAge(86400);  //设置Cookie最大有效期
            passwordCookie.setMaxAge(86400);

            response.addCookie(usernameCookie);  //写入Cookie
            response.addCookie(passwordCookie);
        }else{
            Cookie[] cookies = request.getCookies();
            if(cookies!=null&&cookies.length>0){
                for(Cookie c: cookies){
                    if(c.getName().equals("username")||c.getName().equals("password")){
                        c.setMaxAge(0);  //设置cookie失效
                        response.addCookie(c);  //重新保存
                    }
                }
            }
        }   

     %>
    <h1>登陆成功</h1>
    <hr>
    <a href="users.jsp">点击查看用户信息</a>
  </body>
</html>

四、Cookie与Session对比

  Cookie Session
存储位置 在客户端保存用户信息 在服务器端保存用户信息
数据类型 保存类型是String 保存类型是Object
有效期 长期保存在客户端 随会话结束而销毁
信息安全 保存不重要信息 保存重要信息

五、Cookie的缺陷

  • Cookie会被附加在每个HTTP请求中,所以无形中增加了流量。
  • 由于在HTTP请求中的Cookie是明文传递的,所以安全性成问题。(除非用HTTPS)
  • Cookie的大小限制在4KB左右。对于复杂的存储需求来说是不够用的。

--- 每天积累一点点,吃水不忘挖井人 ---

原文地址:https://www.cnblogs.com/cardiolith/p/9438387.html

时间: 2024-11-01 17:18:30

JavaWeb学习——Cookie与JSP的相关文章

JavaWeb学习笔记六 JSP

JSP技术 JSP全称Java Server Pages,是一种动态网页开发技术.它使用JSP标签在HTML网页中插入Java代码.标签通常以<%开头以%>结束. JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分.网页开发者们通过结合HTML代码以及嵌入JSP操作和命令来编写JSP. JSP通过网页表单获取用户输入数据.访问数据库及其他数据源,然后动态地创建网页. JSP标签有多种功能,比如访问数据库.记录用户选择信息.访问JavaBeans组件等,还可

JavaWeb学习总结(十七)——JSP中的九个内置对象

一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet) ,然后按照servlet的调用方式进行调用. 由于JSP第一次访问时会翻译成servlet,所以第一次访问通常会比较慢,但第二次访问,JSP引擎如果发现JSP没有变化,就不再翻译,而是直接调用,所以程序的执行效率不会受到影响. JSP引擎在调用JSP对应的_jspServlet时,会传递或创建9

JavaWeb学习之什么JSP、JSP是如何工作的、JSP语言(各种指令和九大内置对象)、EL表达式简单使用(5)

1.什么JSP * servlet:java编写的处理动态web的技术 * 特点:Java代码中嵌套html代码 * jsp * 特点:HTMl代码中嵌套java代码 * %tomcat%/conf/web.xml --> <servlet-mapping><servlet-name>*.jsp * 目的:将页面数据处理与页面显示相分离 2.JSP是如何工作的 * 继承关系 * public final class demo_jsp extends org.apache.ja

JavaWeb学习总结(二)——JSP中的九个内置对象

一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet) ,然后按照servlet的调用方式进行调用. 由于JSP第一次访问时会翻译成servlet,所以第一次访问通常会比较慢,但第二次访问,JSP引擎如果发现JSP没有变化,就不再翻译,而是直接调用,所以程序的执行效率不会受到影响. JSP引擎在调用JSP对应的_jspServlet时,会传递或创建9

JavaWeb学习总结(十七)——JSP中的九个内置对象(转)

一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet) ,然后按照servlet的调用方式进行调用. 由于JSP第一次访问时会翻译成servlet,所以第一次访问通常会比较慢,但第二次访问,JSP引擎如果发现JSP没有变化,就不再翻译,而是直接调用,所以程序的执行效率不会受到影响. JSP引擎在调用JSP对应的_jspServlet时,会传递或创建9

javaWeb学习总结(8)- JSP中的九个内置对象(4)

一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet) ,然后按照servlet的调用方式进行调用. 由于JSP第一次访问时会翻译成servlet,所以第一次访问通常会比较慢,但第二次访问,JSP引擎如果发现JSP没有变化,就不再翻译,而是直接调用,所以程序的执行效率不会受到影响. JSP引擎在调用JSP对应的_jspServlet时,会传递或创建9

JavaWeb学习(四)-Cookie实现记住密码的功能

本文主要内容: •1.什么是Cookie •2.Cookie带来的好处 •3.Cookie的主要方法 一.什么是Cookie cookie是一种WEB服务器通过浏览器在访问者的硬盘上存储信息的手段.Cookie的目的就是为用户带来方便,为网站带来增值.虽然有着许多误传,事实上Cookie并不会造成严重的安全威胁.Cookie永远不会以任何方式执行,因此也不会带来病毒或攻击你的系统.另外,由于浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为

JavaWeb学习(三)----JSP内置对象详解

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4065790.html 联系方式:[email protected] [系列]JSP学习系列文章:(持续更新) JavaWeb学习(一)----JSP简介及入门(含Tomcat的使用) JavaWeb学习(二)----JSP脚本元素.指令元素.动作元素 JavaWeb学习(三)----JSP内置对象

【转】JavaWeb学习----JSP简介及入门(含Eclipse for Java EE及Tomcat的配置)

?[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4046862.html [前言] JSP本身是JavaWeb中的知识,但是在学习Android网络时,必然要涉及到与服务器之间的交互,所以学一下JSP以及其他JavaWeb的内容还是很有必要的,至少能明白程序在访问服务器时,整个过程的原理. 其实,在学习Android之前,Java和JavaWeb