05_javaweb之cookie和session

来源:互联网 发布:淘宝top20w关键词 编辑:程序博客网 时间:2024/06/13 04:20
一、Cookie
1.Cookie:是客户端技术,基于会话技术,将每个用户产生的数据以Cookie的形式写给用户各自的浏览器,当用
户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据
2.response提供了addCookie方法,可以在响应增加一个Cookie信息
3.request提供了getCookies方法,可以获得请求中的所有Cookie信息
4.Cookie的构造方法:public Cookie(Strng name,String value),Cookie没有无参数的构造方法,创建时需要指定
初始的名字和值
5.setValue与getValue方法:设置和获取Cookie值
6.getName方法:获取Cookie名字的方法,Cookie名字在创建的时候就不能改变了,所以没有Set方法
7.setMaxAge与getMaxAge方法:设置Cookie的存活时间。如果没有设置,cookie存放在浏览器内存中,随着浏览器的
关闭而清除
8.setPath与getPath方法:设置浏览器在访问哪个路径和其子路径时带着当前的Cookie信息过来,如果没有设置,会
默认的发送Cookie的Servlet所在的路径作为Path
9.setDomain与getDomain方法:设置浏览器在访问哪个域名时,带着这个Cookie信息,默认值是当前发送cookie信息
的网站域名;现代的浏览器,只要cookie设置过domain信息,则浏览器拒绝接受此cookie。
10.删除一个Cookie:发送一个同名,同Path,和同Domain(Domain值一般不设置)的cookie,设置MaxAge的值为0,使
浏览器接受这个cookie信息后,去覆盖原来的Cookie信息,覆盖后新的Cookie信息立即超时,被删除。
二、Jsp入门(后面做具体介绍)
1.jsp:jsp是sun提供的动态web资源开发技术,特点在于编写一个jsp页面,就像在写一个html页面一样,不一样的是
jsp可以嵌入java代码,如果说servlet是在java代码中嵌入html内容,则可以说jsp是在html中嵌入java代码,
从而可以非常方便的组织html页面的输出
2.jsp在第一次被访问到时,会被服务器中的jsp翻译引擎翻译为Servlet,最终由这个翻译过来的servlet进行输出
3.jsp语法:
1).jsp模板元素:jsp页面中的html内容称之为jsp模板元素,在翻译过来的Servlet中,直接被out输出到浏
览器
2).jsp脚本表达式:<%= java表达式%> 在翻译过来的Servlet中,直接计算表达式的值后输出到了浏览器上
3).jsp脚本片段:<% 若干java语句 %> 在翻译过来的Servlet中,直接被复制粘贴到了相应位置上执行;多
个脚本片段之间可以互相访问,某一个脚本判断可以是不完整的java代码,但是,所有的脚本片段
组合在一起必须是完整的java语句
4).jsp声明:<%! java代码%>:写在jsp声明中的内容,在翻译过来的Servlet中会被放置到和Service方法同
级的位置,成为一个类的成员
5).jsp注释:<%-- 注释的内容 --%>:被jsp注释注释的内容,会在翻译为Servlet的过程中被遗弃;
//:被java注释注释的内容,在翻译时正常翻译,但是java源码中被注释了,在编译为class文件
时被丢弃
<!-- -->:被html注释注释的内容,将会被当做模板元素原封不动的发给浏览器,浏览器收到数据
后认识html注释,其中的内容不予显示
三、Session
1.Session是一个域对象
1).生命周期:当第一次调用到request.getSession()方法时,创建Session,当超过30分钟(可以自定义时间
值)session都没有人使用,则服务器认为session已经超时,此时,销毁session。如果直接的调用
session.invalidate()方法也可以销毁session;当服务器非正常关闭时,session也会随之销毁,
如果session是正常关闭,则存活着的session会在服务器关闭的时候,以文件的形式存在硬盘中,
这个过程称为钝化,服务器在正常启动时,会将钝化在文件中的session恢复到内存中,这个过程叫
做session的活化
2).作用范围:整个会话
3).作用:保存会话相关的数据,在整个会话过程中共享数据
2.Session原理:session是基于一个特殊的Cookie工作的,名字叫做JSESSIONID,当服务器为浏览器创建session时,
会发送JSESSIONID cookie,命令浏览器保存它对应的session的id,从此浏览器再来访问服务器时,会带着这
个cookie,服务器可以分析这个cookie,从而找到浏览器对应的session为其服务。
原理应用:可以利用session的原理,自己发送同名,同path的JSESSIONID cookie,并设置MaxAge,从而使浏
览器将此Cookie以文件的形式保存在浏览器的临时文件夹中,从而使同一台计算机内的浏览器即使关
闭多次,仍然可以使用到之前的Session
3.浏览器禁用Cookie的情况下如何使用session
如果浏览器禁用了cookie,则服务器创建了session后,发送的JSESSIONID cookie浏览器会拒绝接受,这样浏
览器就不能保存JSESSIONID信息,session就无法工作。此时的解决方案,在所有的超链接后面都加上一个参数,
参数中包含JSESSIONID。这样当点击超链接时,服务器就可以解析到JSESSIONID信息,从而找到对应的Session
为浏览器服务;
使用下面的方法可以实现超链接的改写,返回值就是传入的地址加上JSESSIONID后的地址,这个
过程叫做URL的重写过程,在URL重写之前,必须先获取到session。如果浏览器没有禁止cookie,这两个方法不会
被执行,也就不会进行URL重写操作;
response.encodeURL("");---对于普通的地址使用这个方法进行URL重写
response.encodeRedirectURL("");---对于用来做重定向操作的地址,必须使用此方法进行URL重写
4.getSession()方法运行原理:
首先检查浏览器有没有传递JSESSIONID cookie,如果有,则拿出其中的值作为session id找到对应session为浏
览器服务;如果没有,则分析浏览器访问时URL中有没有JSESSIONID这个特殊的参数,如果有,获取其值作为session
id找到对应的session为浏览器服务;如果找不到,则创建新的session,并把session的id以JSESSIONID cookie
的形式发送给浏览器保存
5.session的应用:实现用户登录注销功能、防止表单重复提交数据
原创粉丝点击