文档章节

9.18CookieAndSessionAndJsp

大白啊
 大白啊
发布于 2016/09/18 21:55
字数 1962
阅读 1
收藏 0

Cookie的细节

       setPath:

            设置cookie的有效访问路径,有效访问路径指的是cookie的有效路径保存在哪里,那么浏览器在有效路径下访问服务器时就会带着cookie的信息,否则不带

        SetMaxAge(int expiry)

            设置cookie的有效时间:

                正整数 : 表示cookie数据保存浏览器的缓存目录(硬盘中),数值表示保存的时间

                负整数 : 表示cookie数据保存浏览器的内存中。浏览器关闭后cookie就消失了

                0(删除cookie)  :表示删除同名的cookie数据

    Cookie的数据类型只能保存字符串类型的,可以保存多个cookie(而且非中文) 但是浏览器一般只允许存放300个cookie ,每个站点最多存放20个cookie,每个浏览器最多存放20个cookie,

HttpSession:用于保存会话数据

        1)创建或得到session对象

                                    HttpSession getSession() 

                                    HttpSession getSession(boolean create) 

                            2)设置session对象

                                     void setMaxInactiveInterval(int interval)  : 设置session的有效时间

                                     void invalidate()     : 销毁session对象

                                     java.lang.String getId()  : 得到session编号

                            3)保存会话数据到session对象

                                     void setAttribute(java.lang.String name, java.lang.Object value)  : 保存数据

                                     java.lang.Object getAttribute(java.lang.String name)  : 获取数据

                                     void removeAttribute(java.lang.String name) : 清除数据

结论:通过JSESSION的cookie值在服务器找session对象!!!!!

    

 Sesson细节
            1)java.lang.String getId()  : 得到session编号
            2)两个getSession方法:
                    getSession(true) / getSession()  : 创建或得到session对象。没有匹配的session编号,自动创                                                建新的session对象。
                    getSession(false):              得到session对象。没有匹配的session编号,返回null
            3)void setMaxInactiveInterval(int interval)  : 设置session的有效时间
                        session对象销毁时间:
                            3.1 默认情况30分服务器自动回收
                            3.2 修改session回收时间
                            3.3 全局修改session有效时间
                            
<!-- 修改session全局有效时间:分钟 -->
    <session-config>
        <session-timeout>1</session-timeout>
    </session-config>

                            3.4.手动销毁session对象
                                void invalidate()     : 销毁session对象
            4)如何避免浏览器的JSESSIONID的cookie随着浏览器关闭而丢失的问题
                    
/**
         * 手动发送一个硬盘保存的cookie给浏览器
         */
        Cookie c = new Cookie("JSESSIONID",session.getId());
        c.setMaxAge(60*60);
        response.addCookie(c);

        总结:
                1)会话管理: 浏览器和服务器会话过程中的产生的会话数据的管理。

                2)Cookie技术:
                        new Cookie("name","value")
                        response.addCookie(coookie)
                        request.getCookies()
                3)Session技术
                        request.getSession();
                        
                        setAttrbute("name","会话数据");
                        getAttribute("会话数据")

 

总结:

       会话管理:  管理浏览器和服务器之间的会话过程中产生的会话数据

       cookie技术 : 会话数据保存在服务端:

            Cookie的核心方法:

                 是在服务器创建的对象:

                    Cookie cookie = new Cookie("name","value");

                 把cookie 发送给浏览器端(通过响应头:set-cookie)

                      用 reponse.addCookie(cookie)发送给浏览器,浏览器自动保存

                      保存后,浏览器会带着cookie的信息访问服务器(通过:Cookie请求头),服务器得到cookie信息

                        服务器接收Cookie    Cookie[] cookie = request.getCookie();

        局限: 只能保存一些字符串,无法保存中文,数据容量有限制,不能超过4KB。

        Session技术:会话数据保存在服务器端的。(服务器内存)

                Session核心方法:创建Session 或者 得到

                       HttpSession hs = resquest.getSession();

                       resquest.getSession(false); //只有得到的功能

                     会话数据保存在Session对象中

                        Session.setAttribute("name",Object);            //保存数据

                        Session.getAttribute("name");                        //得到数据

        注意:

                  //设置Session有效时间

                    session.setintactivelnterval(时间);    //过期时间

                  //手动销毁Session对象

                    Session.invalidate   // 手动销毁Session对    象       

JSP:

    jsp的执行过程:jsp文件>翻译成java文件>编译成Class字节码文件>构造对象>调用方法 存放于Tomcat的WORK目录

       <%= 变量或者表达式 %>  用于向浏览器输出变量或者表达式计算的一个结果

       <% java 代码 %>   java脚本  执行java代码

       <%! 变量或者方法 %>  java声明   声明jsp的成员变量和成员方法

        <%!-- jsp注释 --%>        用于注释  不会翻译到java的源文件 也不会执行

Jsp的三大指令:

       include指令:在当前页面包含其他的页面 

           语法:<%@ include file= "被包含的jsp名"%>

            原理:就是把被包含的页面的内容翻译到包含页面中,合并成翻译成一个Java源文件,在编译运行!!这种包含就成静态的包含或者源码包含。

            注意:如果使用静态包含,被包含页面中不需要出现全局的html标签。如html head  body等

      page指令: 告诉Tomcat服务器如何翻译

                <%@ page 
                    language="java"        告诉服务器使用什么动态语言来翻译文件
                    import="java.util.*"         告诉服务器java文件使用了什么包 , 多个包之间用,分割
                    pageEncoding="utf-8"        告诉服务器使用什么编码来翻译jsp文件(翻译成java源文件) 
                    contentType="text/html; charset=ISO-8859-1"         告诉服务器发送给浏览器数据类型和内容的编码,只需要设置PageEncoding中即可
                    errorPage="error.jsp"        jsp的错误处理页面
                    isErrorPage="false"        指定当前页面为错误处理页面    False 不是错误处理页面,不能使用exception的内置对象,如果是True的话,可以使用Exception内置对象
                    buffer="8kb"               页面缓冲区大小
                    session="true"        是否开启Session功能 False 不能用内置对象 True可以用内置对象
                    isELIgnored="false"            是否是忽略EL表达式
    %>    

JSP 九大内置对象:

       内置对象是:在JSP中,会频繁使用一些对象,例如HttpSession,ServletContent,SecletConfig,HttpServletRequest 如果每次都是用这些对象的时候,都要去创建,就显得很麻烦。

        例如 在servlet中创建Session对象的时候需要 HttpSession hs = request.getSession(true);

                   在JSP中就不需要创建 直接使用方法 例如 session.getId();

            内置对象名                    类型

                request                    HttpServletRequest

                response                  HttpServletResponse

                Config                        ServletConfig

                application                ServletContext

                Session                       HttpSession

                exception                   Throwable

                Out                               JspWriter

                page                            Object(this)

                pageContext              PageContext

Out 对象

           Out对象类型 相当于带缓存的PrintWriter

                PrintWrite:    

                        Write:直接向浏览器写出内容。

                JspWrite:

                        Write:向缓冲区写出内容

             当满足一下条件之一,缓冲区内容写出:

                        1 缓冲区满了

                        2 刷新缓冲区

                        3 关闭缓冲区

                        4 执行完jsp页面

 pageContext对象

        pageContext对象 叫Jsp的上下文对象

    可以获取其他八个对象

    本身也是一个域对象

                ServletContext   HttpServletRequest    HttpSession    PageContext   

        作用 保存数据 用于在共享数据

    作用:

        page 保存数据 默认情况下 保存page域中     pagecontext.SetAttribute();

        域范围常量

            pageContext.PAGE_SCOPE;

            pageContext.REQUEST_SCOPE;

            pageContext.SESSION_SCOPE;

            pageContext.APPLICATION_SCOPE;         

        保存数据

            默认情况中用page域

         获取数据

            默认情况中用page.Context.Attribute获取

            可以获取四个常用域中获取

                pageContext.getAttribyte();

                pageContext.setAttribute("message","it message",pageContext.REQUEST_SCOPE);

                pageContext.getAttribute("message",pageContext.REQUEST_SCOPE)

            自动在四个域中搜索数据

                    pageContext.findAttribute("name");

              顺序: page > request> session>context(applicaton)

jsp中的四个域对象

           域对象的作用:保存数据 获取数据,用于数据共享

            域对象的方法

                    setAttribute("name",object); 保存数据

                    getAttribute("name");    获取数据    

                    removeAttribute("name"); 删除数据

            域对象的作用范围:

                    page 域 范围最小 范围只能在当前的jsp页面去使用

                    request 域 只能在同一个请求中去使用       重定向不能使用 转发可以

                    Session 域  只能在同一个会话管理也就是同一个Session对象中使用(私有)

                    application   域 只能在同一个web项目在使用(全局)

Jsp的实践

                servlet 开发动态资源 是一个java类 擅长写java代码

                jsp        开发动态资源    最擅长的是通过java输出html代码

                各取所长:在一个web项目中,在涉及到的逻辑

                    1 接收参数        servlet做

                    2 处理业务逻辑   返回结果        servlet做

                    3 显示数据        jsp做

                    4 跳转到其他页面        servlet做

                    Servlet加jsp 模式

                        servlet:

                            1 接受参数

                            2 处理业务逻辑

                            3 把数据保存到域对象中

                            3  发送并且跳转到jsp页面 

                          jsp:

                             1 显示到浏览器

                       servlet的数据 > jsp页面  使用域对象 共享数据

© 著作权归作者所有

上一篇: 9.19EL表达式
下一篇: 9.17
大白啊

大白啊

粉丝 7
博文 27
码字总数 49720
作品 0
泉州
私信 提问

暂无文章

G1 垃圾收集器介绍-转

https://www.cnblogs.com/ASPNET2008/p/6496481.html

Java搬砖工程师
25分钟前
0
0
超高性能 key-value 数据库 Redis-基础数据结构

Redis的魅力 缓存大致可以分为两类:1.一种是应用内缓存,比如Map(简单的数据结构),以及EH Cache(Java第三方库);2.另一种 就是缓存组件,比如Memached,Redis;Redis(remote dictiona...

须臾之余
36分钟前
3
0
Mysql表分区的选择与实践小结

在一些系统中有时某张表会出现百万或者千万的数据量,尽管其中使用了索引,查询速度也不一定会很快。这时候可能就需要通过分库,分表,分区来解决这些性能瓶颈。 一. 选择合适的解决方法 1....

小谜弟
42分钟前
3
0
为 git 添加多个公秘钥

如果想为主机配置多个git设置,设置多个git公、秘钥,只需在生成密钥时指定密钥保持的文件即可,保证保存密钥的文件不同即可。 示例: ssh-keygen -t rsa -C "YOUR_EMAIL@YOUREMAIL.COM" -f...

niithub
43分钟前
1
0
walle-web 2.0安装流水

一、环境安装 VMware Workstation,centos7.6 64位,lnmp1.5 二、安装lnmp1.5 wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz -cO lnmp1.5.tar.gz && tar zxf lnmp1.5.tar.gz && cd lnmp1......

我心中有猛狗
44分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部