文档章节

jsp 入门 cookie session

芥末小弟
 芥末小弟
发布于 2017/03/01 09:53
字数 1335
阅读 3
收藏 0

Java Server Page ==> 服务器端的动态页面资源.用来做显示的功能.
JSP构成 ==> HTML 脚本代码 标签构成.
JSP 原理 ==> 实际上就是 servlet.
JSP 运行过程 ==>  我们写一个jsp ==> .java ==> .class ==> 运行

JSP中的脚本代码
        <%    %>  ==> 可以在jsp中书写java代码.在"<%%>"脚本中的代码会在jsp的service方法中出现.
        (不常用)<%!   %> ==> 可以在jsp中书写java代码. 在该脚本中 的代码会在jsp翻译成的java的 类中出现.(用来定义成员变量,成员方法)(这种脚本很少使用)
        <%=   %> ==> 在jsp中输出 内容.在该脚本中书写的代码 会放到 out.print();方法中  .
        <%-- --%>==> jsp中的注释. 被注释的内容压根都不参与 编译到java文件这一步,更不用说运行.
        <!-- --> ==> 跟上面有什么区别.被<!-- --> 注释掉的内容是给浏览器看的,属于html注释. 而jsp注释 会使注释掉的内容 不参与运行.属于服务器端的.

 

例子:
        商品购买列表:
    <br>
    <%
        //1 取出List集合
        List<String> products = (List) request.getAttribute("list");
        //2 遍历
        for (String product : products) {
    %>
    <a><%=product%></a><br>
    <%
        }
        //3 显示
    %>
    编译成java 文件
        out.write("商品购买列表:");
        out.write("<br>");
        //1 取出List集合
        List<String> products = (List) request.getAttribute("list");
        //2 遍历
        for (String product : products) {
        out.write("<a>");
        out.print(product);
        out.write("</a><br>");
    }

 

    HTTP协议,每次访问都是基于 请求-响应的. 而每次请求响应都是 无状态的. 也就是不会保留之前的 信息.就好比给联通客服打电话.如果是说一句话就挂一次电话,那每次开始说话之前先要把之前聊到哪交代一下.
    我们今天要学的两门技术(Cookie和session )就是用来保存 聊天状态的.
    其中: cookie是在浏览器这一段保存信息的机制.
    session 是在服务器端保存信息的机制.
cookie   ==>  小甜点 ,这是一个在浏览器保存信息的技术.
    详情: 1.浏览器请求服务器
          2.服务器响应浏览器(在响应的时候,服务器交代浏览器帮我记住一些事情)
          3.浏览器再次请求服务器(这时候就会带上刚才服务器交代让我记住的事情)
    对于cookie的操作
            设置:
            Cookie cookie = new Cookie("key","value"); 创建一个cookie
            cookie.setMaxAge();   设置cookie的有效时间
            cookie.setPath(uri);  设置cookie的路径
            cookie.setDomain(".baidu.com");设置cookie的域(了解)
            response.addCookie(cookie); 把cookie添加到响应中,这样才能发送给浏览器.可以添加多个cookie. (IE6.0一个网站只能记30个cookie,ie最多记录300个cookie.(但是发展到现在版本.数量提升了,具体没试过.Chrom3000个cookie))
            浏览器发过来,取出cookie:
            request.getCookies();   
    cookie的详情:
        服务器使用 set-Cookie响应头 让浏览器记住一个数据(键值对)  响应头: Set-Cookie: name=tom
        浏览器用Cookie请求头,告诉服务器一个键值对.                请求头:Cookie: name=tom
    例子:
        1.显示上次访问时间
        2.记录浏览历史.
    Cookie细节
        1.记多久
            使用cookie.setMaxAge(int) ==> 该方法设置cookie有效时间
                填写方法:
                    1.填写正数 --> 数字相当于秒 ==> 60 ==> 浏览器记住1分钟
                    2.填写0 --> 数字还是相当于秒 ==> 0 ==> 表示立即失效
                    3.填写-1 --> 这个数字表示只是临时记住 ==> 浏览器一旦关闭,那么cookie失效 ==> 浏览器一直不关闭==> 一直有效
            通过上面的设置.需要删除一个cookie怎么办?
                    重新发送相同的cookie.设置cookie的有效时间为0.那么就相当于删除该cookie.   
                    思考:如果我们不设置MaxAge,那么cookie默认有效时间是多长? ==> 默认有效时间是当浏览器关闭cookie删除也就是 相当于-1;
        2.什么时候给我
                研究什么时候发送cookie 实际上就是对cookie路径的研究.
                访问http://localhost/day11-cookie/EServlet?name=HASEE这个路径时添加的cookie路径是==>/day11-cookie
                路径默认会使用访问资源的当前路径作为cookie路径.
http://localhost/day11-cookie/ABC/BCD/AServlet ==> http://localhost/day11-cookie/ABC/BCD
                路径在什么时候有效(会发送这个cookie呢?)?
                        浏览器记录了如下cookie
                             a  /day11-cookie   ==>  凡是/day11-cookie 路径下的所有子路径全都发送cookie
                             b /day11-cookie/ABC
                             c /day11-cookie/BCD
                             d /
                        有以下路径,在访问那些路径是会发送该cookie
http://localhost/day11-cookie/ABC/BCD/AServlet     ==> 会发送a,b cookie
http://localhost/day11-cookie/BCD/BServlet ==> ac
http://localhost/day10/AServlet ==> d
                在我们操作cookie时,除了默认赋予路径外,我们可不可以自己来设置cookie的路径呢?
                    使用cookie.setPath方法可以设置.
        3.cookie的域问题(了解)
                比如 baidu这个域上有多个主机,在这多个主机之间想共享一个cookie,那么这个cookie该如何设置?
                    music.baidu.com /day01
                    zhidao.baidu.com /day02
                    map.baidu.com / day03
                    cookie该如何设置呢? ==>  域 ".baidu.com"  ==> 这么设置那么 以上三个地址都可以跟这个主机匹配.
                                        ==>  路径 "/"   ==> 不管什么Context路径都会发送
        4.cookie保存中文
             因为传输中不支持中文.所以我们要先对中文进行编码
                编码:URLEncoder.encode(str,charset);
            浏览器还给我们时,我们再解码回来即可
                解码:URLDecoder.decode(str,charset);

© 著作权归作者所有

共有 人打赏支持
上一篇: c语言内存原理
下一篇: git 查看git 状态
芥末小弟
粉丝 0
博文 202
码字总数 120715
作品 0
昌平
私信 提问
response.encodeURL的用法

Java Servlet API 中引用 Session 机制来追踪客户的状态。Servlet API 中定义了 javax.servlet.http.HttpSession 接口,Servlet 容器必须实现这个接口。当一个 Session 开始时,Servlet 容器...

阿秀a
2010/10/17
0
0
Java Servlet工作原理问答

导读 本文来自stackoverflow的问答,讨论了Java Servlet的工作机制,如何进行实例化、共享变量和多线程处理。 问题:Servlet是如何工作的?Servlet 如何实例化、共享变量、并进行多线程处理?...

LCZ777
2015/11/05
0
0
超详细的Java面试题总结之JavaWeb基础知识总结

Servlet总结: 在Java Web程序中,Servlet主要负责接收用户请求HttpServletRequest,在doGet(),doPost()中做相应的处理,并将回应HttpServletResponse反馈给用户。Servlet可以设置初始化参数,...

Java互联网架构师
08/29
0
0
Servlet 工作原理解析

该文深入的介绍了 J2EE 中使用最广泛的 Servlet 技术运行原理,不管对于初学者还是高手来说都非常值得一看。 从 Servlet 容器说起 要介绍 Servlet 必须要先把 Servlet 容器说清楚,Servlet 与...

红薯
2011/02/25
8.1K
10
JavaWeb基础知识点之Servlet

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/w1lgy/article/details/79169527 一、servlet的概述 servlet是采用java编写的运行在服务器上的程序,用于接受...

我巴巴
01/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

makefile 常用函数

Linux 环境下的程序员如果不会使用GNU make来构建和管理自己的工程,应该不能算是一个合格的专业程序员,至少不能称得上是 Unix程序员。今天我们来学习下makefile的常用函数。 《GNU make》h...

科陆李明
18分钟前
3
0
Android 报错 Could not find com.android.tools.build:aapt2:3.2.1-4818971.

报错信息: Could not find com.android.tools.build:aapt2:3.2.1-4818971.Searched in the following locations: file:/C:/Users/96110/AppData/Local/Android/Sdk/extras/m2reposito......

lanyu96
31分钟前
1
0
我的Linux系统九阴真经

我的Linux系统九阴真经 在今天,互联网的迅猛发展,科技技术也日新月异,各种编程技术也如雨后春笋一样,冒出尖来了。各种创业公司也百花齐放百家争鸣,特别是针对服务行业,新型互联网服务行...

linuxCool
今天
21
0
Python程序员需要知道的30个技巧

1 直接交换两个数字位置 1x, y = 10, 202print(x, y)3x, y = y, x4print(x, y)5#1 (10, 20)6#2 (20, 10) 2 比较运算符的链接 1n = 102result = 1 < n < 203print(result)4# True5result = 1 ......

糖宝lsh
今天
12
0
[LintCode] Linked List Cycle(带环链表)

描述 给定一个链表,判断它是否有环。 样例 给出 -21->10->4->5, tail connects to node index 1,返回 true。 这里解释下,题目的意思,在英文原题中,tail connects to node index 1 表示的...

honeymose
今天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部