本文共 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 步:创建一个同名并且内容为空的 cookieCookie c = new Cookie("username","");
第 2 步:调用方法,参数为 0
c.setMaxAge(0);
response.addCookie(c);
session:在服务器端管理用户状态;详解:
浏览器访问服务器时,服务器会创建一个session对象(该对象有一个唯一的id, 一般称 为 sessionId,自动生成)。服务器在缺省情况下,会将 sessionId 以 cookie 机制发送给浏览器。当 浏览器再次访问服务器时,会将 sessionId 发送给服务器。服务器依据 sessionId 就可以 找到对应的 session 对象。通过这种方式,就可以管理用户的状态。
浏览器向服务器发请求,访问某一个 Servlet 戒 JSP
服务器先查看包含亍请求的 Cookie 信息中(消息头是 cookie)是否有 sessionId(第一次访问时是没有的)2) 浏览器第一次访问,服务器会创建一个 Session 对象,SomeServlet 和该 Session 对象乊间
存在引用关系(即 Servlet 可以访问该 Session 对象了)
3) SomeServlet 以 Cookie 的方式(消息头为 set-cookie)将 SessionId 响应给浏览器
4) 浏览器将 SessionId 保存到内存中
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()手动销毁。