1.Cookie ----什么是Cookie? 1.Cookie翻译过来是饼干的意思 2.Cookie是服务器通知客户端保存键值对的一种技术 3.客户端有了Cookie后,每次请求都发送给服务器 4.每个Cookie的大小不能超过4kb
----如何创建Cookie Servlet 程序中的代码: protected void createCookie(HttpServletRequest req,HttpServletResponse resp)throw ServletException, IOException{ //1.创建Cookie对象 Cookie cookie= new Cookie(“key4”,“value4”); //2.通知客户端保存Cookie resp.addCookie(cookie); //1.创建Cookie对象 Cookie cookie1=new Cookie(“key2”,“value2”); //2.通知客户端保存Cookie resp.addCookie(cookie1); resp.getWrite().write(“Cookie创建成功”) } ----服务器如何获取Cookie 服务器获取客户端的Cookie只需要一行代码:req.getCookie():Cookie[] Cookie的工具类: public class CookieUtils{ /* 查找指定名称的Cookie对象 @param name @param cokies */ public static Cookie findCookie(String name,Cookie[] cookies){ if (namenull || cookie == null || cookie.lenght0){ return null; } for(Cookie cookie:cookies){ if(name.equals(cookie.getName())){ return cookie; } } return null; } }
----Servlet程序中的代码: protected void getCookie (HttpServletRequest req,HttpServletResponse resp)throw ServletException, ,IOException { Cookie[] cookies=req.getCookies(); for(Cookie cookie:cookies){ //getName方法返回Cookie的key(名) //getValue 方法返回Cookie的value值 resp.getWrite().write(“Cookie[”+cookie.getName()+"="+cookie.getValue()+"] ") } Cookie IWantCookie=CookieUtils.findCookie(“key1”,cookies); if(IWantCookie!=null){ resp.getWrite().write(“找到了需要的Cookie”); } } ----Cookie值的修改 方案一: 1.先创建一个要修改的同名(值的就是key)的Cookie对象 2.在构造器,同时赋予新的Cookie值 3.调用response.addCookie(Cookie); 方案二: 1.先查找需要修改的Cookie对象 2.调用setValue()方法F悆的Cookie值 3.调用response.addCookie()通知客户端保存修改 浏览器查看Cookie: 谷歌浏览器如何查看Cookie: ----Cookie生命控制 Cookie的声明控制指的是如何管理Cookie什么时候被销毁(删除) setMaxAge() 正数,表示在指定的秒数后过期 负数,表示浏览器乙肝,Cookie就会删除(默认值是-1) 零,表示马上删除
//设置存活一小时 protected void life3600(HttpServletRequest req,HttpServletresponse resp)throws ServletException ,IOEception{ Cookie cookie=new New(“life3600”,“life3600”); cookie.setMaxAge(60*60);//设置Cookie一小时后自动删除.无效 resp.addCookie(cookie); resp.getWrite().write(“已经创建了一个存活一小时的Cookie”) }
//删除一个Cookie protected void deleteNow(HttpServletRequest req,HttpResponse resp)throw ServletException, IOEception{ //先找到你要删除的Cookie对象 Cookie cookie=CookieUtils.findCookie(“key4”,req.getCookies()); if(cookie!=null){ //diaoyong setMaxAge(0) cookie.setMaxAge(0); //调用response,addCookie(cookie) resp.addCookie(cookie); resp.getWriter().write(“key4de Cookie已经被删除”); } } 默认的会话级别Cookie protected void defaultLife(HttpServletRequest req ,HttpServletresponse resp)throw ServletException, IOException{ Cookie cookie=new Cookie(“defaultLife”,“defaultLife”); cookie.setMaxAge(-1);//设置存活时间 resp.addCookie(cookie); } ----Cookie练习—免输入用户名登录 login,jsp页面 用户名:
密码:
LoginServlet程序: protected void doget(HttpServletRequest req ,HttpServletResponse resp)throws ServletException, IOEception{ String username=req.getParamater(“username”); String password=req.getParameter(“password”);if(“wzg168”.equals(username)&&“123456”.equals(password)) { //登陆成功 Cookie cookie=new Cookie(“username”,username); cookie.setMaxAge(606024*7);//当前Cookie一周内有效 resp.addCookie(cookie); System.out.println(“登录成功”); }else{ //登录失败 System.out.println(“登录失败”); } }
----------------------------------------------------------------------------------------------------- Session会话
什么是Session会话? 1.Session就是一个接口(HttpSession). 2.Session就是会话,他就是用来维护一个客户端和服务器之间关联的一种技术 3.每个用户端都有自己的一个session会话 4.session会话中,我们经常用来保存用户登录之后的信息
如何创建Session和获取(id号,是否为新)
如何创建和获取Session.他们的Apu是一样的
request.getSession() 第一次调用是:创建Session会话 之后调用都是:获取前面创建好的Session会话对象. IsNew():判断到底是不是刚创建出来的(新的) true表示刚创建 false表示获取之前创建
每个会话都有一个身份证号,也就是ID值.而且这个ID是唯一的 getid()得到Session的会话id值
Session域数据的存储
protected void setAttribute(HttpSercletRequest req,HttpServletResponse resp)throws ServletException, IOEception{ rep.getSession().setAttribute(“key1”,“value1”); resp.getWriter().write(“已经往Session中保存了数据”); }
protected void getAttribute(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Object attribute = req.getSession().getAttribute(“key1”); resp.getWriter().write(“从 Session 中获取出 key1 的数据是:” + attribute); }
----Session声明周期控制 public void setMaxInactiveInterval(int interval)设置 Session的超时时间(以秒为单位),超过指定时长 ,Session就会被销毁. 值为整数时,设定Session的超时时长. 负数表示不超时(极少使用)
public int getMaxInactiveinterval()获取Sessionde 超时时间 public void invalidate() 让当前Session会话马上无效.
Session 默认的超时时长是多少? Session默认的超时时间长为30分钟.
因为在Tomcat服务器的配置文件web.xml中默认有一下的配置,他表示配置了当前Tomcat服务器 下所有的Session超时配置默认时长为:30分钟. 30
如果说,你希望你的web工程,默认的Session的超时时长为其他时长.你可以在你自己的web.xml配置 文件中做以上相同配置,就可以修改你的web工程所有session的默认超时时长
20
如果你想只修改个别 Session 的超时时长。就可以使用上面的 API。 setMaxInactiveInterval(int interval)来进行单独的设置。 session.setMaxInactiveInterval(int interval)单独设置超时时长。
Session 超时的概念介绍 示例代码: protected void life3(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 先获取 Session 对象 HttpSession session = req.getSession(); // 设置当前 Session3 秒后超时 session.setMaxInactiveInterval(3); resp.getWriter().write(“当前 Session 已经设置为 3 秒后超时”); }
Session 马上被超时示例:
protected void deleteNow(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 先获取 Session 对象 HttpSession session = req.getSession(); // 让 Session 会话马上超时 session.invalidate(); resp.getWriter().write(“Session 已经设置为超时(无效)”); }
----浏览器和 Session 之间关联的技术内幕 Session 技术,底层其实是基于 Cookie 技术来实现的。
|