zoukankan      html  css  js  c++  java
  • session和cookie d9

    cookie  

      首先小甜饼的引入的原因:http是纯文本无状态的协议,这就会导致无法判断当前操作是否是同一个人执行的,也就是说买东西的时候服务器无法判断是否是一个人买的。可以将cookie理解成身份证,他是唯一标识个人的东西,我们可以通过这个东西向浏览器发出请求,并通过它得到响应。

      其次需要知道他的流程,它的产生是服务器创建的,可以是直接的Cookie cookie=new Cookie();也可以是在jsp里创建,这就需要理解了,本质是在servlet,jsp的底层就是serlvet,因为jsp在执行的过程中它会生成对应java文件。所以都是在servlet里创建的。服务器通过响应头将cookie发送给浏览器,浏览器通过请求头将Cookie发回给服务器,服务器可以根据不同cookie来识别不同用户,这就实现了区别对待。

      具体的使用

     -创建Cookie   Cookie cookie=new Cookie(name,value); 在这里需要注意的是如果直接获取cookies.name获取的是键的名字,而不会出现里面的值,需要调它的value属性。 

     -发送Cookie 服务器数据处理。response.addCookie(cookie);注意可以发送多个cookie,区别于重定向。

     -读取Cookie  request.getCookies(); 返回的是一个Cookie数组。 虽然Cookie是一个键值对结构,但是它并没有给咱们提供一个根据键获取值的方法。我们要想读取Cookie的信息,只能通过遍历数组。

    - 修改Cookie      一旦Cookie发给浏览器以后,服务器便不能直接修改Cookie,但是可以通过使用同名Cookie来替换的老Cookie方式来间接的修改,相当于更新。

    Cookie的有效时间

      Cookie的默认有效时间为一次会话,当关闭浏览器时,Cookie也就失效了,需要注意的是它不是跨浏览器使用的。

      可以通过设置他的有效时间来控制他的操作,一般默认的时间为小于0,也就是说单次会话有效,当秒数大于0时有效时间为对应的实践。具体的函数 cookie.setMaxAge(30);里面的单位是秒,一般设置成两周,也就cookie.setMaxAge(60*60*24*14),相当于持久化了。一般不在cookie里传中文,需要先编码再解码。

    Cookie的路径

      path就是在哪些网址里会携带cookie参数,默认的是项目的根目录,访问当前项目的资源就行。可以通过set Path()方法来设置Cookie的有效路径,也就是cookie.setPath(request.getContextPath()+"/hello");里面最好写绝对路径。

    package com.neuedu.cookie;
    
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    @WebServlet("/LoginServlet")
    public class LoginServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
        public LoginServlet() {
            super();
        }
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            String name=request.getParameter("name");
            String password=request.getParameter("password");
            Cookie[] cookies=request.getCookies();
            Cookie cookie=new Cookie("name", name);
            response.addCookie(cookie);
            Cookie cookie2=new Cookie("password", password);
            response.addCookie(cookie2);
            if (cookie!=null) {
                for (Cookie c:cookies) {
                    System.out.println(c.getValue()+c.getName());
                }
            }
            if ("yantao".equals(name)&&"t12345".equals(password)) {
                response.sendRedirect(request.getContextPath()+"/loginsucs.jsp");
            }
            else{
                request.getRequestDispatcher("/login.jsp").forward(request, response);
            }
        }
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    }
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <form action="${pageContext.request.contextPath}/LoginServlet" method="post">
    
        用户名<input type="text" value="${cookie.name.value}" name="name">
        密码<input type="text" value="${cookie.password.value}" name="password">
        <input type="submit" value="提交"/>
        </form>
    </body>
    </html>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        用户${cookie.name.value}登陆成功
    </body>
    </html>

    这里只实现业务层和前段交流,先从前段login.jsp输入账号密码,这时候cookie已经创建了,再服务器端获取前端数据,并判断是否是我想要的,如果是就重定向到登陆成功页面,否则返回登陆页面并实现里面的回显功能,将带到后端的值放到cookie里再带回给前台但是这样就会出现一个问题,值多了该如何处理,这就该用到session了。

      

  • 相关阅读:
    package.json作用
    github 发布项目
    kubernetes --> ConfigMap
    kubernetes1.9 手动安装
    python3 BeautifulSoup模块
    python3 requests模块
    ununtu16.04+python3+selenium+firefox环境搭建
    QQ空间动态内容,好友信息,点赞爬虫脚本
    k8s使用ceph作为后端存储挂载
    ceph存储安装配置
  • 原文地址:https://www.cnblogs.com/guomingyt/p/7906270.html
Copyright © 2011-2022 走看看