九、实现会话跟踪的解决方案cookie
2017-06-26 00:00
309 查看
实现会话跟踪的解决方案cookie
使用cookie:
8):cookie的路径和域范围
cookie的路径
cookie对象.setPath(String path);
若不设置,那么使用的存放CookieServlet资源名的相对路径
LoginServlet("/cookie/login"):存放一个Cookie
ListServlet("/list");
由LoginServlet跳转到ListServlet,就不会再请求中携带Cookie
相当于此时:cookie.setPath("/cookie");
设置在整个应用中设置请求的时候都会携带Cookie:
cookie.setPath("/");
不同应用/主机之间ruhr共享一个cookie
此时,就得需要设置域
很多网站都有二级域名(配置虚拟)
一级域名:baidu.com
二级域名:music.baidu.com map.baidu.com等
需求:多个二级域名之间共享登录信息
cookie.setPath("/");
cookie.setDomain(".baidu.com");
9)cookie的缺陷:
1.中文处理麻烦
2.多人共用一台主机,信息不安全
3.一个cookie只能存储一个简单类型的数据
若要同时存储,账号,密码,邮件等等
主要原因是:cookie的value只能存储String,不能存储Object
4.cookie的数量和大小限制
一台服务器在一个客户端最多保存20个cookie
一个浏览器最多可以保存300个cookie
5.cookie的原理:把共享数据存储在浏览器中。
每次请求,再把共享数据带到服务端
最好是把数据存放于服务器。
10)程序如下:
login.html文件:
loginServlet.java文件:
listServlet.java文件:
getServlet.java文件:
使用cookie:
8):cookie的路径和域范围
cookie的路径
cookie对象.setPath(String path);
若不设置,那么使用的存放CookieServlet资源名的相对路径
LoginServlet("/cookie/login"):存放一个Cookie
ListServlet("/list");
由LoginServlet跳转到ListServlet,就不会再请求中携带Cookie
相当于此时:cookie.setPath("/cookie");
设置在整个应用中设置请求的时候都会携带Cookie:
cookie.setPath("/");
不同应用/主机之间ruhr共享一个cookie
此时,就得需要设置域
很多网站都有二级域名(配置虚拟)
一级域名:baidu.com
二级域名:music.baidu.com map.baidu.com等
需求:多个二级域名之间共享登录信息
cookie.setPath("/");
cookie.setDomain(".baidu.com");
9)cookie的缺陷:
1.中文处理麻烦
2.多人共用一台主机,信息不安全
3.一个cookie只能存储一个简单类型的数据
若要同时存储,账号,密码,邮件等等
主要原因是:cookie的value只能存储String,不能存储Object
4.cookie的数量和大小限制
一台服务器在一个客户端最多保存20个cookie
一个浏览器最多可以保存300个cookie
5.cookie的原理:把共享数据存储在浏览器中。
每次请求,再把共享数据带到服务端
最好是把数据存放于服务器。
10)程序如下:
login.html文件:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Login</title> </head> <body> <h3>登录页面</h3> <form action="/CookieTest/cookie/login" method="post"> 账号:<input type="text" name="username"/><br/> 密码:<input type="password" name="password"/><br/> <input type="submit" value="登录"/> </form> </body> </html>
loginServlet.java文件:
import java.io.IOException; import java.io.PrintWriter; import java.net.URLEncoder; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //处理登陆请求,并显示登陆界面 @WebServlet("/cookie/login") public class loginServlet extends HttpServlet{ private static final long serialVersionUID = 1L; protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); resp.setContentType("text/html;charset=utf-8"); PrintWriter out=resp.getWriter(); //1.接收账号和密码参数 String username=req.getParameter("username"); //2.调用业务方法处理请求 System.out.println("登陆判断"); //3.控制界面跳转,输出一个界面 out.print("欢迎"+username+"登录<br/>"); //---------------------------------------------- //创建cookie,并记录登记信息 Cookie c=new Cookie("currentName",URLEncoder.encode(username, "utf-8"));//加密 //设置路径 c.setPath("/"); //设置生存时间 c.setMaxAge(10); //把cookie传递给浏览器 resp.addCookie(c); //---------------------------------------------- out.print("<a href='/CookieTest/list'>收件箱</a>"); } }
listServlet.java文件:
import java.io.IOException; import java.io.PrintWriter; import java.net.URLDecoder; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //处理登陆请求,并显示登陆界面 @WebServlet("/list") public class listservlet extends HttpServlet{ private static final long serialVersionUID = 1L; protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //super.service(req, resp); //此行有毒 req.setCharacterEncoding("utf-8"); resp.setContentType("text/html;charset=utf-8"); PrintWriter out=resp.getWriter(); String username=""; //------------------------------------------- // 从请求中获取Cookie Cookie[] cs = req.getCookies(); if(cs!=null){ //获取指定名称的Cookie for (Cookie cookie : cs) { String name=cookie.getName(); if("currentName".equals(name)){ username=URLDecoder.decode(cookie.getValue(), "utf-8"); //解密 break; } } } //------------------------------------------- out.print("欢迎"+username+"登录<br/>"); for (int i = 0; i < 6; i++) { if(i==0) out.print("<a href='/CookieTest/cookie/get'>第"+i+"封邮件</a><br/>"); else if(i==1) out.print("<a href='/CookieTest/cookie/list'>第"+i+"封邮件</a><br/>"); } } }
getServlet.java文件:
import java.io.IOException; import java.io.PrintWriter; import java.net.URLDecoder; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //处理登陆请求,并显示登陆界面 @WebServlet("/cookie/get") public class getservlet extends HttpServlet{ private static final long serialVersionUID = 1L; protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); resp.setContentType("text/html;charset=utf-8"); PrintWriter out=resp.getWriter(); String username=""; //------------------------------------------- // 从请求中获取Cookie Cookie[] cs = req.getCookies(); if(cs!=null){ //获取指定名称的Cookie for (Cookie cookie : cs) { String name=cookie.getName(); if("currentName".equals(name)){ username=URLDecoder.decode(cookie.getValue(), "utf-8"); break; } } } //------------------------------------------- out.print("欢迎"+username+"登录<br/>"); out.println("雅蠛蝶</a>"); } }
相关文章推荐
- Cookie实现会话跟踪
- Cookie实现会话跟踪!
- 编程实现>ASP.NET 3.5会话控制>Cookie
- 利用Cookie或URL实现Session跟踪-----利用Session实现一次性验证码
- 会话cookie和持久化cookie实现session机制
- Session原理和会话跟踪登录实现方式分析
- URL重写实现会话跟踪
- 会话跟踪技术介绍——cookie ,url 重写, 隐藏表单域
- 会话跟踪(Cookie,Session)
- URL重写实现会话跟踪
- Session HttpSession接口中的方法 利用Cookie实现Session跟踪
- 会话cookie和持久化cookie实现session机制
- 会话cookie和持久化cookie实现session机制(转载)
- 利用Cookie实现Session跟踪
- 会话跟踪技术:会话Cookie,URL重写和HttpSession
- Cookie和Session-----会话跟踪中的两个重要技术
- session、cookie、隐藏域、url参数传递四种会话及跟踪方式
- 会话跟踪技术:会话Cookie,URL重写和HttpSession
- 会话跟踪技术之—Cookie技术
- JavaEE---Servlet会话跟踪之Cookie