cookie和session和MVC

cookie,session: 实现JavaWeb会话跟踪技术, Http 无状态的,

在同一次会话中, 不同请求之间的数据的传递

记住密码功能实现

Cookie: 特征: 创建于服务器, 保存在客户端浏览器, 以后每次请求, 把该服务器存在客户端的浏览器的cookie通过请求头带回到服务器

用户名,密码保存到cookie,

提供方法: getNname() getValue()

思路:

LoginServlet:

  1. 判断是否登录成功

  2. 登录成功之后, 判断是否勾选"记住我"

  3. 如果勾选, 把用户名,密码保存cookie,

  4. 如果没有勾选: 判断是否有用户名,密码的cookie, 如果,删除

login.jsp:

用户名,密码的表单获取cookie的值

Cookie存放中文:

tomcat7以及之前的, Cookie不能存储中文, 把中文使用url编码

UTF-8: 中(3个字节): %两位十六进制%两位十六进制%两位十六进制

String str ="中国";  //%E4%B8%AD%E5%9B%BD
//URL编码
String str1 = URLEncoder.encode(str, "UTF-8");
System.out.println(str1);
​
//URL解码
String str2 = URLDecoder.decode(str1, "UTF-8");
System.out.println(str2);

Tomcat8以及之后, Cookie支持中文, 如果有特殊符号, 不能存储, 借助url编码

<%= %> 往页面输出内容: 如果内容null, 也会在页面显示

替换<%= %>的, 使用EL表达式 : ${域中的属性名} 从全域获取数据

${域中的属性名} 全域查找:

首先从page域查找,如果找到,直接返回

如果没找到, 从request查找, 如果找到,直接返回

如果没找到, 从session查找, 如果找到,直接返回

如果没找到, 从application查找, 如果找到,直接返回

如果没找到: 直接返回null

如果el表达式的结果为null, 在页面不展示

EL支持 对象导航语言: ${对象.属性名..}

域中存了user对象

HttpSession

主要作用: 作为session域, 实现同一次会话内.数据的共享, 一次会话,包含n次请求

同一次会话: 从打开浏览器访问服务器开始, 到关闭浏览器, 表示一次会话

HttpSession的使用:

  1. 得到HttpSession对象,

request对象的getSession(), getSession(boolean)

>getSession(): 如果当前请求有session,返回当前请求session的对象, 如果没有,创建一个新的session对象
>
>getSession(boolean create): true:  与getSession() 一样,
>
>•                                               false: 如果当前请求有session,返回当前请求session的对象,如果没有, 返回null

void invalidate() 让session失效, 这个session无效, session中存储的数据都失效

void setMaxInactiveInterval(int interval) 设置session最大存活时间, 单位:秒

默认的存放时间: 30分钟, 从上一次请求到下一次请求之间超过30分钟, session删除

特征: 创建于服务器, 保存于服务器

Tomcat维护一个session池

退出:

  1. 发送一个请求到LogoutServlet

  2. 让session失效

  3. 重定向到login.jsp

验证码的实现

  1. 用户填写验证, 点击登录,发送登录请求

  2. 先判断验证码是否一致(存在session的验证码与用户输入的验证码)

  3. 如果不一致, 直接响应"验证码错误",转发到login.jsp

  4. 如果一致, 做登录操作

Session实现原理 面试题

 

服务器会为用户创建一个Session对象,并且把sessionId 以cookie的形式,保存在客户端浏览器上, 用户之后每次请求, 自动把cookie(JSESSIONID) 带回到服务器, 服务器根据sessionId匹配session池的对应的session的对象, 服务器知道当前请求是哪个会话的, 如果客户端的cookie被删除, 请求不会带JSessionId, 服务器,不知道哪个Session是这个用户的, 之前的为该用户创建的session失效了,谁也无法访问,就是个垃圾,服务器,等30分钟,删除这个session,

如果服务器把session删除, 就算客户端有jsession的Cookie, 也无法得到Session, 服务器会为你重新创建Session,并新的sessionId以Cookie的形式保存客户端

MVC

MCV: 软件架构, 把项目分为三大模块:

M: model 模型层: pojo, dao

C: controller 控制层: Servlet

V: view 视图层: jsp,html

 

javaWeb开发: javaWeb经典三层模型, java类的分层概念

接收用户请求的角色: web层

处理业务逻辑的角色: service层

与数据库通信的角色: dao层

分层目的: 技术隔离, 比如dao层使用到技术,只能在dao层存在, 不能延伸到其他其他

好处: 项目扩展, 替换某一层的技术,只需要更换这一层,其他层不需要变

注意事项:

  1. 跨层调用, 调用顺序: web--调用->service--调用->dao

  2. 只能上层调用下层, web调用service, service调用到dao, 不能下层调用上层

  3. 层与层使用接口隔离, service:提供接口, 让web使用, dao层提供接口,让service使用

更新项目, 使用javaWeb经典三层模型实现

 

实现list功能

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值