《JavaEE》第五周day3学习笔记-Cookie、Session

一、会话技术


浏览器第一次发送请求至服务器,会话建立,直到任意一方断开为止;一次会话中包含多次请求和响应,可以通过会话技术在多次请求间共享数据。

  • 会话技术(客户端):Cookie
  • 会话技术(服务端):Session

二、Cookie

(一)概念


Cookie,有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。

(二)使用方式


1.创建Cookie对象,绑定数据
new Cookie(String name, String value)

2.发送Cookie对象
response.addCookie(Cookie cookie)

3.获取Cookie,拿到数据
Cookie[] request.getCookies()

        //获取及遍历Cookie信息
        Cookie[] cookies = request.getCookies();
        if(cookies!=null){
            for(Cookie cookie:cookies){
                String name = cookie.getName();
                String value = cookie.getValue();
                System.out.println(name+":"+value);
            }
        }

(三)实现原理


基于请求头cookie响应头set-cookie实现
在这里插入图片描述

(四)Cookie的特点


1.可以创建多个Cookie对象,使用response调用多次addCookie(Cookie cookie)方法发送。

2.默认情况下,当浏览器关闭后,Cookie数据即被销毁;可通过setMaxAge(int seconds)指定Cookies的持久化存储时间。

  • 正数:将Cookie数据写入硬盘的文件中,并指定存活时间,到期自动失效。
  • 负数:默认时间
  • 零:删除Cookie数据

3.tomcat8之前,Cookie不能直接存储中文,需要使用URL编码;tomcat8之后,Cookie支持中文,但特殊字符仍不支持,建议使用URL编码。

注意:Cookie Version 0中,某些特殊的字符,例如:空格,方括号,圆括号,等于号,逗号,双引号,斜杠号,问号,@符号,冒号,分号都不能作为Cookie的内容。

4.默认情况下,多个WEB项目中的Cookie不能共享,setPath(String path)可以设置Cookie的获取范围,如果需要共享,则将path设置为"/"。
注意:setDomain(".baidu.com"),那么tieba.baidu.com和news.baidu.com可以共享cookie

5.Cookie存储于客户端浏览器,单个Cookie的大小有限制(4kb),同个域名下的Cookie的数量有限制(20个),Cookie通常用来存储量少不敏感数据,通常实现服务器对客户端的身份识别。
jsp侧:

 Cookie[] cookies = request.getCookies();
    if(cookies!=null&&cookies.length>0){
        for(Cookie cookie:cookies){
            String name = cookie.getName();
            if(name.equals("username")){
                response.sendRedirect("/home.jsp");
            }
        }
    }

servlet侧:

            if(remember!=null){
                //设置cookie
                Cookie cookie = new Cookie("username",username);
                cookie.setMaxAge(60*60*24);
                resp.addCookie(cookie);
            }

三、Session

(一)概念


Session,在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。

(二)使用方式


1.获取HttpSession对象:
HttpSession session = request.getSession();

2.使用HttpSession对象:
Object getAttribute(String name)
void setAttribute(String name, Object value)
void removeAttribute(String name)

(三)实现原理


Session的实现是依赖于Cookie的。

(四)Cookie的特点


1.默认情况下,当客户端关闭后,服务器不关闭,两次获取的session不是同一个,如果需要相同,可以创建key为JSESSIONID,value为session.getId()的Cookie,设置最大存活时间。

2.当服务器关闭,或session调用invalidate()方法时,session被销毁。

3.session默认失效时间为30分钟,可以通过配置文件进行修改。

<session-config>
	        <session-timeout>30</session-timeout>
</session-config>

4.session可以存储多次请求的数据,存储在服务器侧,存储类型及大小不受限制,相对Cookie安全,通常实现客户端登录的验证码。

四、JSP入门

(一)概念


Java Server Pages:Java服务器页面,是一个特殊的页面,其中既可定义java代码,又可定义html代码,本质上是一个Servlet。
JSP共有9个内置对象,常用对象:request、response、out(字符输出流)

(二)创建语法


  1. <% 代码 %>:定义的java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么。
  2. <%! 代码 %>:定义的java代码,在jsp转换后的java类的成员位置,能定义成员变量和方法,相当于在方法外类中写的东西。
  3. <%= 代码 %>:定义的java代码,会输出到页面上。输出语句中可以定义什么,该脚本中就可以定义什么。
发布了31 篇原创文章 · 获赞 0 · 访问量 807

猜你喜欢

转载自blog.csdn.net/u010761121/article/details/103760631
今日推荐