JavaWeb-day04-MVC设计架构与会话


MVC设计结构

mvc是一种架构模型,本身并没有新功能,只是对项目的一种规范,方便后期进行维护;mvc架构将模型(M),视图(V)和控制(C)割离开

MVC架构

  • M:model模型,负责数据的处理
  • V:View视图,负责数据的展示,用户的交互
  • C:Controller:控制器,负责接收视图传递过来的据,以及模型处理完的结果返回的视图

MVC架构的作用

使得界面代码和逻辑代码彻底分离
M:service+entity+dao
V:Jsp
C:Servlet

MVC的优缺点

  • 优点:

    • 耦合性低,方便维护,利于分工协作
    • 重用性高
  • 缺点:

    • 使得项目架构变得复杂,对开发人员要求变高

MVC架构和三层架构的区别

会话

什么是会话

狭义上讲,从打开浏览器与服务器交互,到浏览器关闭的这个过程就可以称为会话。

为什么需要会话

如果没有会话,就没有办法识别谁是谁,如我在账号a上收藏了10件商品,退出后登录账号b要么账号b能看到账号a收藏的东西,要么账号a再次登录也看不到10件商品

会话跟踪技术

即每个有关联得页面之间共用一个会话

例如在一个会话中的请求如下:

  • 请求银行主页。
  • 请求登录(请求参数是用户名和密码)
  • 请求转账(请求参数与转账相关的数据)
  • 请求信誉卡还款(请求参数与还款相关的数据)

后三个页面都要是同一个账号,这种情况就是会话跟踪

常用的会话跟踪技术有隐藏表单域、URL重写、session和cookie

Session

session表示会话,每一个请求到达服务器后,服务器都会分配一个session对象,session对象包含有session空间和sessionid,默认当30分钟不对此session进行操作时则自动删除

  1. session对象的获取req.getSession();
  2. 获取sessionidsession.getId();
  3. 让会话失效session.invalidate();

cookie

cookie是服务器向客户端发送数据的一种手段,适合携带少量数据。默认当浏览器关闭时删除

  1. 获取cookie归属哪个域名cookie.getDomain();

  2. 获取cookie最大的存活时间cookie.getMaxAge();

  3. 设置cookie最大存活时间cookie.setMaxAge(n);

    • n:正数,表示存活多少秒
    • n:0,表示立即删除该cookie
    • n:负数,表示浏览器关闭时过期
  4. 设置cookie归属哪个域名cookie.setDomain();

查询字符串

在链接后面添加?key=value&key=value…
示例:localhost:8080/login.jsp?id=1&name=123

表单隐藏域

将部分数据隐藏并传出
当循环输出时不需要输出ID时就可以使用
示例:<input type="hidden">123</input>

URL重写

当cookie被禁用时可以通过此方法来完成会话
案例:resp.encodeRedirectURL("index.jsp")
原理是在地址栏后面加上;jsessionid=FBE6F779651AF09FFDC286B642D5D3CA,来保诚禁用cookie时仍然能使用cookie

如何实现7天免登录

//on为复选框是否勾选
HttpSession session = req.getSession();
if ("on".equals(check)) {
   //设置session最大生命周期
   session.setMaxInactiveInterval(60*60*24*7);

   //新建cookie
   Cookie cookie = new Cookie("JSESSIONID", session.getId());
   //设置cookie时长
   cookie.setMaxAge(60*60*24*7);
   //使这个cookie在访问网站时都被携带
   cookie.setPath("/");
   //向页面中添加这个cookie
   resp.addCookie(cookie);
}else{
   //取消七天免登录
   session.setMaxInactiveInterval(60*30);
   Cookie cookie = new Cookie("JSESSIONID", session.getId());
   cookie.setMaxAge(-1);
   cookie.setPath("/");
   resp.addCookie(cookie);
}

会议T出

会议T出即是你不能在两个地方同时登录一个账号,如QQ不能在两台手机同时登录

if(map.containsKey(name)){
    //使之前的会话失效
    map.get(name).invalidate();
    map.remove(name);
}
//将当前的session加进去
map.put(name,session);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值