cookie和session

cookie

定义

客户端会话技术,将数据保存到客户端,浏览器将cookie存储在用户的计算机上,并在以后的请求中将其发送回服务器。

使用

        1. 创建Cookie对象,绑定数据
            * new Cookie(String name, String value) 
        2. 发送Cookie对象
            * response.addCookie(Cookie cookie) 
        3. 获取Cookie,拿到数据
            * Cookie[]  request.getCookies()  

特点

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

默认情况下,当浏览器关闭后,Cookie数据被销毁

持久化存储:
            * setMaxAge(int seconds)
                1. 正数:将Cookie数据写到硬盘的文件中。持久化存储。并指定cookie存活时间,时间到后,cookie文件自动失效
                2. 负数:默认值
                3. 零:删除cookie信息

默认情况下cookie不能共享

         使用setPath(String path):设置cookie的获取范围。默认情况下,设置当前的虚拟目录

         setDomain(String path):如果设置一级域名相同,那么多个服务器之间cookie可以共享

         setDomain(".baidu.com"),那么tieba.baidu.com和news.baidu.com中cookie可以共享

cookie存储数据在客户端浏览器
 浏览器对于单个cookie 的大小有限制(4kb) 以及 对同一个域名下的总cookie数量也有限制(20个)

session

定义

服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中,HttpSession。session数据存储在服务器上而不是在用户计算机上。当用户第一次访问站点时,服务器会为其创建一个唯一的session ID,并将其存储在cookie中。

原理

依赖于Cookie实现。

使用

    1. 获取HttpSession对象:
        HttpSession session = request.getSession();
    2. 使用HttpSession对象:
        Object getAttribute(String name)  
        void setAttribute(String name, Object value)
        void removeAttribute(String name)  

特点

默认情况下。当客户端重启后,两次获取session不是同一个。如果需要相同,则可以创建Cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存。 ​ Cookie c = new Cookie("JSESSIONID",session.getId()); ​ c.setMaxAge(60*60); ​ response.addCookie(c);

session什么时候被销毁? 1. 服务器关闭 2. session对象调用invalidate() 。 3. session默认失效时间 30分钟

session用于存储一次会话的多次请求的数据,存在服务器端
session可以存储任意类型,任意大小的数据

session和cookie的区别

与cookie不同,session数据存储在服务器上而不是在用户计算机上。当用户第一次访问站点时,服务器会为其创建一个唯一的session ID,并将其存储在cookie中。然后,每次用户访问站点时,浏览器都会将cookie发送回服务器,并且服务器将使用该session ID来查找与该用户关联的数据。这使得服务器能够更好地保护用户数据,并提供更安全的体验。

        1. session存储数据在服务器端,Cookie在客户端
        2. session没有数据大小限制,Cookie有
        3. session数据安全,Cookie相对于不安全

JSP

概念

Java Server Pages: java服务器端页面
  可以理解为:一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码

JSP本质上就是一个Servlet

JSP的脚本

JSP定义Java代码的方式
    1. <%  代码 %>:定义的java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么。
    2. <%! 代码 %>:定义的java代码,在jsp转换后的java类的成员位置。
    3. <%= 代码 %>:定义的java代码,会输出到页面上。输出语句中可以定义什么,该脚本中就可以定义什么。

内置对象


 在jsp页面中不需要创建,直接使用的对象
一共有9个:
变量名                    真实类型                              作用
 pageContext          PageContext                     当前页面共享数据,还可以获取其他八个内置对象
request                   HttpServletRequest            一次请求访问的多个资源(转发)
session                   HttpSession                            一次会话的多个请求间
application              ServletContext                        所有用户间共享数据
response                HttpServletResponse            响应对象
page                       Object                                当前页面(Servlet)的对象  this
out                          JspWriter                            输出对象,数据输出到页面上
config                     ServletConfig                        Servlet的配置对象
exception               Throwable                                    异常对象

EL表达式

${表达式}

运算:常见运算符

        空运算符: empty

获取值:el表达式只能从域对象中获取值

        ${域名称.键名}:从指定域中获取指定键的值

        ${键名}:表示依次从最小的域中查找是否有该键对应的值,直到找到为止。

        List集合:${域名称.键名[索引]}

        Map集合:1 ${域名称.键名.key名称};2 ${域名称.键名["key名称"]}

JavaServer Pages Tag Library  JSP标准标签库

常用的JSTL标签
    1. if:相当于java代码的if语句

    2. choose:相当于java代码的switch语句   

     3. foreach:相当于java代码的for语句   

三层架构与MVC

1. 界面层(表示层):用户看的得界面。用户可以通过界面上的组件和服务器进行交互
2. 业务逻辑层:处理业务逻辑的。
3. 数据访问层:操作数据存储文件。

MVC:
    1. M:Model,模型。JavaBean
        * 完成具体的业务操作,如:查询数据库,封装对象
    2. V:View,视图。JSP
        * 展示数据
    3. C:Controller,控制器。Servlet
        * 获取用户的输入
        * 调用模型
        * 将数据交给视图进行展示

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值