微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JavaWeb-day03-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);

原文地址:https://www.jb51.cc/wenti/3281830.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐