招聘网站大全,外贸网站是用什么软件做的,云服务器搭建个人网站,做网站文案用哪个软件一、共同之处#xff1a; cookie和session都是用来跟踪浏览器用户身份的会话方式。
二、工作原理#xff1a; 1.Cookie的工作原理 #xff08;1#xff09;浏览器端第一次发送请求到服务器端 #xff08;2#xff09;服务器端创建Cookie#xff0c;该Cookie中包含用户的…一、共同之处 cookie和session都是用来跟踪浏览器用户身份的会话方式。
二、工作原理 1.Cookie的工作原理 1浏览器端第一次发送请求到服务器端 2服务器端创建Cookie该Cookie中包含用户的信息然后将该Cookie发送到浏览器端 3浏览器端再次访问服务器端时会携带服务器端创建的Cookie 4服务器端通过Cookie中携带的数据区分不同的用户 2.Session的工作原理 1浏览器端第一次发送请求到服务器端服务器端创建一个Session同时会创建一个特殊的Cookiename为JSESSIONID的固定值value为session对象的ID然后将该Cookie发送至浏览器端 2浏览器端发送第NN1次请求到服务器端,浏览器端访问服务器端时就会携带该name为JSESSIONID的Cookie对象 3服务器端根据name为JSESSIONID的Cookie的value(sessionId),去查询Session对象从而区分不同用户。
name为JSESSIONID的Cookie不存在关闭或更换浏览器返回1中重新去创建Session与特殊的Cookie name为JSESSIONID的Cookie存在根据value中的SessionId去寻找session对象 value为SessionId不存在**Session对象默认存活30分钟**返回1中重新去创建Session与特殊的Cookie value为SessionId存在返回session对象 三、区别
cookie数据保存在客户端session数据保存在服务端。
session 简单的说当你登陆一个网站的时候如果web服务器端使用的是session那么所有的数据都保存在服务器上客户端每次请求服务器的时候会发送当前会话sessionid服务器根据当前sessionid判断相应的用户数据标志以确定用户是否登陆或具有某种权限。由于数据是存储在服务器上面所以你不能伪造。
cookie sessionid是服务器和客户端连接时候随机分配的如果浏览器使用的是cookie那么所有数据都保存在浏览器端比如你登陆以后服务器设置了cookie用户名那么当你再次请求服务器的时候浏览器会将用户名一块发送给服务器这些变量有一定的特殊标记。服务器会解释为cookie变量所以只要不关闭浏览器那么cookie变量一直是有效的所以能够保证长时间不掉线。
如果你能够截获某个用户的cookie变量然后伪造一个数据包发送过去那么服务器还是 认为你是合法的。所以使用cookie被攻击的可能性比较大。
如果cookie设置了有效值那么cookie会保存到客户端的硬盘上下次在访问网站的时候浏览器先检查有没有cookie如果有的话读取cookie然后发送给服务器。
所以你在机器上面保存了某个论坛cookie有效期是一年如果有人入侵你的机器将你的cookie拷走放在他机器下面那么他登陆该网站的时候就是用你的身份登陆的。当然伪造的时候需要注意直接copy cookie文件到 cookie目录浏览器是不认的他有一个index.dat文件存储了 cookie文件的建立时间以及是否有修改所以你必须先要有该网站的 cookie文件并且要从保证时间上骗过浏览器
两个都可以用来存私密的东西session过期与否取决于服务器的设定。cookie过期与否可以在cookie生成的时候设置进去。
四、区别对比 (1)cookie数据存放在客户的浏览器上session数据放在服务器上 (2)cookie不是很安全别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,如果主要考虑到安全应当使用session (3)session会在一定时间内保存在服务器上。当访问增多会比较占用你服务器的性能如果主要考虑到减轻服务器性能方面应当使用COOKIE (4)单个cookie在客户端的限制是3K就是说一个站点在客户端存放的COOKIE不能3K。 (5)所以将登陆信息等重要信息存放为SESSION;其他信息如果需要保留可以放在COOKIE中
实现登录功能
package EnableUserLogin;import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpSession;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;WebServlet(/index)
public class IndexServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.setContentType(text/html; charsetutf-8);// 1. 判定当前用户是否已经登陆HttpSession session req.getSession(false);if (session null) {// 用户没有登陆, 重定向到 login.htmlresp.sendRedirect(login.html);return;}// 2. 如果已经登陆, 则从 Session 中取出访问次数数据String userName (String)session.getAttribute(username);String countString (String)session.getAttribute(loginCount);int loginCount Integer.parseInt(countString);loginCount 1;session.setAttribute(loginCount, loginCount );// 3. 展示到页面上.StringBuilder html new StringBuilder();html.append(String.format(div用户名: %s/div, userName));html.append(String.format(divloginCount: %d/div, loginCount));resp.getWriter().write(html.toString());}
}package EnableUserLogin;import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpSession;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
WebServlet(/login)
public class LoginServlet extends HttpServlet {Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.setContentType(text/html; charsetutf-8);// 1. 获取到用户提交的用户名和密码String username req.getParameter(username);String password req.getParameter(password);// 2. 判定用户名密码是否正确if (!username.equals(admin) || !password.equals(123)) {// 登陆失败resp.getWriter().write(登陆失败);return;}// 登陆成功System.out.println(登陆成功);// 设置 SessionHttpSession session req.getSession(true);session.setAttribute(username, admin);session.setAttribute(loginCount, 0);resp.sendRedirect(index);}
}
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/title
/head
bodyform actionlogin methodPOSTinput typetext nameusernameinput typepassword namepasswordinput typesubmit value提交/form
/body
/html