博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java/session/cookie/jsp(一)
阅读量:4289 次
发布时间:2019-05-27

本文共 3198 字,大约阅读时间需要 10 分钟。

 因为我要测试java的图片压缩,需要用这三个类,默认这三个类在eclipse是导不进来,直接报错的。

import com.sun.image.codec.jpeg.JPEGCodec;

import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

解决办法:

Eclipse默认把这些受访问限制的API设成了ERROR。只要把Windows-Preferences-Java-Complicer-Errors/Warnings里面的Deprecated and restricted API中的Forbidden references(access rules)选为Warning就可以编译通过。

********状态管理:

 cookie:在客户端管理用户状态;

浏览器在访问服务器时,服务器将一些数据以 set-cookie 消息头的形式发送给浏览器。浏览器会将这些数据保存起来。当浏览器再次访问服务器时,会将这些数据以 cookie 消 息头的形式发送给服务器。通过这种方式,可以管理用户的状态。

//添加cookie

String  username-=URLEncoder.encoding(“我是”,“utf-8”);//吧中文作utf8编码

Cookie cookie=new Cookie(“username”,username);

Cookie pwdcookie=new Cookie(“pwd”,”123456”);

response.addCookie(cookie);

response.addCookie(pwdcookie);

 

//获取Cookie:

Cookie[]  cookies=request.getCookies();

Cookie cookie=Cookies[i];

cookie.getName();

cookie.getValue();

cookie.setMaxAge(int seconds);seconds > 0

浏览器会将 cookie 以文件的方式保存在硬盘上。在超过指定的时间以后,会删除该文件。

seconds < 0

默认值,浏览器会将 cookie 保存在内存里面。叧有当浏览器关闭乊后,才会删除。

seconds = 0

立即删除该 Cookie

**设置cookie,

**删除 name 为"username"的 cookie 步骤

第 1 步:创建一个同名并且内容为空的 cookie

Cookie c = new Cookie("username","");

第 2 步:调用方法,参数为 0

c.setMaxAge(0);

response.addCookie(c);

 

session:在服务器端管理用户状态;详解:

  1. 浏览器访问服务器时,服务器会创建一个session对象(该对象有一个唯一的id, 一般称 为 sessionId,自动生成)。服务器在缺省情况下,会将 sessionId 以 cookie 机制发送给浏览器。当 浏览器再次访问服务器时,会将 sessionId 发送给服务器。服务器依据 sessionId 就可以 找到对应的 session 对象。通过这种方式,就可以管理用户的状态。

  2. 浏览器向服务器发请求,访问某一个 Servlet 戒 JSP

    服务器先查看包含亍请求的 Cookie 信息中(消息头是 cookie)是否有 sessionId(第一次访问时是没有的)

  3. 2)  浏览器第一次访问,服务器会创建一个 Session 对象,SomeServlet 和该 Session 对象乊间

    存在引用关系(即 Servlet 可以访问该 Session 对象了)

  4. 3)  SomeServlet 以 Cookie 的方式(消息头为 set-cookie)将 SessionId 响应给浏览器

  5. 4)  浏览器将 SessionId 保存到内存中

  6. 5)  当浏览器再次访问服务器时,请求中的 Cookie 信息中包含 sessionId,

    SomeServlet 会根据 sessionId 找到对应的 Session 对象

//添加session

HttpSeesion session=request.getSession();

session.setAttribute(“user”,”username”);设置session

session.getAttribute(“user”);//获取session中的值

**服务器会将超过指定时间的 session 对象删除(在指定的时间内,该 session 对象没有使用)。单位秒

方式一:

session.setMaxInactiveInterval(int seconds);

方式二:

服务器有一个缺省的超时限制,可以通过相应的配置文件来重新设置。

比如可以修改 tomcat 的 web.xml(tomcat_home/conf 下面),这样对所有应用都起作用。单位分钟

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

</session-config>另外,也可以叧修改某个应用的 web.xml。

方法三:

调用 session.invalidate();方法将立即删除 Session 对象。

 

会话:打开浏览器,访问web资源,可以访问多次,到关闭浏览器的过程,叫一次会话。

cookie:服务器响应的时候会吧set-cookie:xx发给浏览器;下一次浏览器向服务器请求的时候会携带cookie:xx
servlet中可以获取cookie;
cookie是客户端的技术,cookie是针对当前浏览器的,换一个浏览器不一定起作用。
cookie默认是会话cookie,浏览器关闭,cookie就删除;如果要把cookie保存到硬盘上,就要设置setMaxAge();
setMaxAge(0)就是永久删除,但是有一个前提条件,删除之前,必须设置和之前设置过的有效路径。
setPath(uri)设置有效路径,不设置就是默认路径(跟servt的路径有关系);同一个有效路径下的可以相同的cookie。
setDomain(.sina.com)设置有效域名;XX.sina.com的都可以携带同一个cookie;
浏览器允许存放300个cookie,每个站点允许20cookie;每个cookie的大小4kB;

session:存储在服务器端,服务器可以为每一个用户浏览器创建一个独有的session对象,每个session对象都有一个sessionID;

不同的电脑不同的浏览器都是不他那个的session;session是通过cookie返回给浏览器,下一次浏览器请求的时候带着cookie,
服务器端根据cookie中的sessionId找到session中存储的数据;’

session的追踪,在地址后面拼上jsessionid=sessionid;xxjsessionid=sessionid(id可以通过session.getId()获取)

session的销毁:如果是非正常关闭服务器,会在项目的目录下创建一个session的序列化.ser文件吧session保存起来,等到服务器重启的时候再把baocun de session文件反序列化到内存中;

session可以设置有效时间,默认是30分钟;在tomcat的web.xml中<session-config>设置。
调用session.invalidate()手动销毁。

你可能感兴趣的文章
翻转二叉树
查看>>
逆序链表
查看>>
epoll 使用详解
查看>>
stl 中 set容器用法
查看>>
有序数组求交集
查看>>
文字常量区与栈
查看>>
非阻塞connect 编写方法
查看>>
epoll 边沿触发
查看>>
String类 默认生成的函数
查看>>
Linux 软连接与硬链接
查看>>
视音频数据处理入门:H.264视频码流解析
查看>>
视音频数据处理入门:AAC音频码流解析
查看>>
视音频数据处理入门:UDP-RTP协议解析
查看>>
视音频数据处理入门:FLV封装格式解析
查看>>
最简单的基于FFMPEG的封装格式转换器(无编解码)
查看>>
base64 编码原理
查看>>
单链表是否有环的问题
查看>>
判断两个链表是否相交并找出交点
查看>>
归并排序
查看>>
STL常见问题
查看>>