比较好的网站公司,wordpress 十万,app简易开发平台,pvc建筑模板生产厂家Cookie 实现免登陆和Session
01、 需求说明 完成用户登录功能 登录成功后跳到成功页面,显示用户名 登录失败可以跳回登录页面 登录成功后后续操作均能显示当前登录的用户名 02、完成代码
DologinServlet.java
Override
protected void service(HttpServletRequest req, Http…Cookie 实现免登陆和Session
01、 需求说明 完成用户登录功能 登录成功后跳到成功页面,显示用户名 登录失败可以跳回登录页面 登录成功后后续操作均能显示当前登录的用户名 02、完成代码
DologinServlet.java
Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//解决中文乱码req.setCharaterEncoding(utf-8);//[1]接受页面前台的页面的数据String uname req.getParameter(uname);String pwd req.getParameter(pwd);String ch req.getParameter(ch);//[2]数据的处理--连接数据库作比较返回结果boolean flagfalse;if(是下他.equals(uname)123.equals(pwd)){flagtrue;}//[3]根据返回的结果给用户做出响应if(flag){/**********Session实现欢迎xx登录***********///[A]获得session对象HttpSession session req.getSession();//[B]把对应的值保存到session中session.setAttribute(uname,uname);/**********使用Cookie记住密码的操作***********///[1]申请卡片 填写卡片的信息//把uname 中文的字符串进行UTF-8格式的编码Cookie cookienew Cookie(u,URLEncoder.encode(uname, utf-8));Cookie cookie2new Cookie(p,pwd);//[2]规定卡片的使用规则//指定卡片的使用范围 --/ 在当前服务器内都有效 /servlet04--只在当前项目中有效cookie.setPath(/);cookie2.setPath(/);//设置Cookie的有效的时间if(yes.equals(ch)){//勾选了记住我操作//设置cookie 有效的时间cookie.setMaxAge(60*60*24*10);cookie2.setMaxAge(60*60*24*10);}else{cookie.setMaxAge(0);cookie2.setMaxAge(0);}//[3]把卡片交给到用户手中resp.addCookie(cookie);resp.addCookie(cookie2);//登录成功resp.sendRedirect(/servlet04/success.jsp);}else{//登录失败req.setAttribute(msg,用户名和密码不匹配);req.getRequestDispatcher(/login.jsp).forward(req,resp);}
}Login.jsp
body%String uname;String pwd;String ch;//获得所有本地Cookie 内容Cookie[] cookies request.getCookies();if(cookies!null){for(Cookie c :cookies){if(u.equals(c.getName())){// c--代表的就是用户名对应的Cookie对象uname URLDecoder.decode(c.getValue(),utf-8);chchecked;}if(p.equals(c.getName())){// c--代表的就是密码对应的Cookie对象pwd c.getValue();}}}%h3登录页面/h3form actionDoLoginp用户名:input typetext iduname nameuname value%uname%//pp密码:input typetext namepwd value%pwd%//ppinput typecheckbox namech valueyes %ch% /记住密码/ppinput typesubmit value登录//p/form
/bodysuccess.jsp登录成功界面
% page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitle$Title$/titlebase href %request.getContextPath() / %
/head
bodyh3成功页面h3输出的值%String uname (String)session.getAttribute(uname);out.print(uname);%hr/a href update.jsp update.jsp/ahr/JsessionID%session.getId() %/body
/htmlupdate.jsp
% page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitleupdate.jsp/titlebase href %request.getContextPath() / %
/head
bodyh3成功页面h3输出的值%String uname (String)session.getAttribute(uname);out.print(uname);%hr/a href delete.jsp delete.jsp/ahr/JsessionID%session.getId() %/body
/htmldelete.jsp
% page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitledelete.jsp/titlebase href %request.getContextPath() / %
/head
bodyh3成功页面h3输出的值%String uname (String)session.getAttribute(uname);out.print(uname);%hr/JsessionID%session.getId() %/body
/html03、理解示意图 cookie session 04、Session 的失效时机 [1]Session.invalidate() [2]超过最大非活动间隔时间 [3]关闭浏览器(该方式没有立刻结束session) session失效的方式
[1]手动注销sesison session.invalidate(); [2]超过session 活动的有效时间 Session 最大活动时间是30分钟我们可以更改这个默认的时间 A、更改TomCat中web.xml中的配置 影响的是所有项目中的所有session session-configsession-timeout30/session-timeout/session-configB、更改自己项目的web.xml 影响的是当前项目的所有session session-configsession-timeout40/session-timeout/session-configC、更改当前项目的当前session 失效的时间 session.setMaxInactiveInterval(10); [3]关闭浏览器 这种红方式只是把浏览器中保存到cookie 中的Jsession 给清除了 保存到服务器中的session并没有真正的消失
05、Session和Cookie的区别 cookie数据存放在客户端session数据放在服务器上sessionid可以通过cookie保存在客户端也可以使用URL重写方式 cookie不是很安全可以加密别人可以分析存放在本地的COOKIE并进行COOKIE欺骗考虑到安全应当使用session session会在一定时间内保存在服务器上。当访问增多会比较占用你服务器的性能考虑到减轻服务器性能方面应当使用COOKIE 单个cookie在客户端的限制是3K就是说一个站点在客户端存放的COOKIE不能3K。 Cookie的数据都以字符串的形式保存。Session中可以保存对象信息。 典型使用 Cookie记住我 最近浏览商品 网页皮肤 session登录信息 购物车也可以使用Cookie