在我最早接触web开发的中学时代,学习的asp技术对于session的概念其实很清楚

Session("username")="张三"
下次要用的时候,直接用session来取就OK了

由于http会话是无状态的,所以你不知道发来请求的是哪个客户,

所以数据需要绑定到每个用户的客户端上,最常用的技术就是 session跟cookies ,

Cookies持有本地信息(但是做服务端的一定不能通过cookies来简单验证用户权限,因为cookies会被篡改,最常见的是早期很多asp管理系统通过cookies来留存用户权限级别,然后简单地通过cookies来做业务逻辑验证,

也是可笑,那个时候我通过这个办法,用普通用户登录然后篡改cookies获得管理用户权限黑过某些个政府网站以及学校的成绩管理系统),

然后服务端(J2EE规范是JSEESIONID)这个是作为token存放在你的cookies里面的,每次在你关闭浏览器(也就是关闭所有TCP连接的时候,tomact服务器会默认这个token失效,在你下一次请求的时候会给你分配新的sessionid)

上面是截图

-------------------------------

http://www.cnblogs.com/liukemng/p/3736948.html 我是照这篇博客学习的数据绑定

下面讲springmvc的分段数据绑定,我今天早上一直没理解模型对象是在何时被框架请求进入内存调用 后来才搞清楚

@ModelAttribute("sessionaccountmodel")
public AccountModel initAccountModel(){ return new AccountModel();
}

作为bean组件,它的生命周期最长是在session失效,也就是客户端浏览器关闭TCP连接的时候。

@RequestMapping(value="/usernamebind", method = {RequestMethod.GET})
public String userNameBind( Model model, @ModelAttribute("sessionaccountmodel")AccountModel accountModel){
System.out.println(accountModel.toString()+" 1");
model.addAttribute("sessionaccountmodel", accountModel);
return "usernamebind";
} @RequestMapping(value="/usernamebind", method = {RequestMethod.POST})
public String userNameBindPost( @ModelAttribute("sessionaccountmodel") AccountModel accountModel){ //重定向到密码绑定测试
System.out.println(accountModel.toString()+" 2");
return "redirect:passwordbind";
} @RequestMapping(value="/passwordbind", method = {RequestMethod.GET})
public String passwordBind(@ModelAttribute("sessionaccountmodel") AccountModel accountModel){
System.out.println(accountModel.toString()+" 3");
if (accountModel.getUsername()==null){
return "redirect:usernamebind";
}
return "passwordbind";
} @RequestMapping(value="/passwordbind", method = {RequestMethod.POST})
public String passwordBindPost(@ModelAttribute("sessionaccountmodel") AccountModel accountModel, SessionStatus status){
System.out.println(accountModel.toString()+" 4"); if (accountModel.getUsername()==null){//防止用户从passwordbing提交密码
return "redirect:usernamebind";
}
//status.s
    
//status.setComplete();
//显示绑定结果
return "sessionmodelbindresult";
}

上面我分别打印了accountModel的toString方法返回了对象的地址,也就是说这个对象是一直存在的

在最后我注释了

  status.setComplete();

这个方法被注释后,你可以在 /passwordbing页面重新提交一次密码,然后你会看到页面并不会被跳转到/usernamebind 
原因在于一开始创建的模型在绑定在session中并没有被清空,
所以你单独提交一次密码,依然会显示你上次提交的用户名

Spring MVC之cookies跟session 数据绑定的更多相关文章

  1. 理解Spring MVC Model Attribute和Session Attribute

    作为一名 Java Web 应用开发者,你已经快速学习了 request(HttpServletRequest)和 session(HttpSession)作用域.在设计和构建 Java Web 应用 ...

  2. 【译】理解Spring MVC Model Attribute 和 Session Attribute

    作为一名 Java Web 应用开发者,你已经快速学习了 request(HttpServletRequest)和 session(HttpSession)作用域.在设计和构建 Java Web 应用 ...

  3. spring mvc下shiro的session,request等问题

    最近的一个项目使用的是spring mvc,权限框架使用的是shiro. 不过有一个问题一直困扰着我,现在的session到底是谁的session,是servlet的还是shiro的. 于是我把spr ...

  4. spring mvc 异常处理和session添加

    在controller中进行设置 package com.stone.controller; import java.util.HashMap; import java.util.Map; impor ...

  5. Spring MVC 常用注解 和session界面渲染取值

    @RequestParams name 修饰当前形参的属性 value 和name属性一样 也是修饰当前属性 defaultValue 给属性设置一个默认值 默认属性 required 必备属性 1. ...

  6. Spring Mvc session拦截器实现

    Spring Mvc拦截器实现session过期跳转到登录页面 配置拦截器 <mvc:interceptors> <mvc:interceptor> <mvc:mappi ...

  7. 四、Spring——Spring MVC

    Spring MVC 1.Spring MVC概述 Spring MVC框架围绕DispatcherServlet这个核心展开,DispatcherServlet负责截获请求并将其分配给响应的处理器处 ...

  8. Spring MVC深入学习

    一.MVC思想 MVC思想简介:        MVC并不是java所特有的设计思想,也不是Web应用所特有的思想,它是所有面向对象程序设计语言都应该遵守的规范:MVC思想将一个应用部分分成三个基本部 ...

  9. SpringBoot系列: Spring MVC视图方法的补充

    SpringMVC 视图方法的参数, 已经在这个文章中写得非常清楚了, 链接为 https://www.cnblogs.com/morethink/p/8028664.html 这篇文章做一些补充. ...

随机推荐

  1. js判断用户的浏览器设备是移动端还是pc端

    最近做的一个网站页面中需要根据用户的访问设备的不同来显示不同的页面样式,主要是判断移动设备还是电脑浏览器访问的. 下面给出js判断处理代码,以作参考. <script type="te ...

  2. SAP SD 需求类别确定

    分别按如下优先级确定 1.先从物料主数据中取MRP组对应的策略组. 在物料的MRP1视图中可以得到MRP组, 通过OPPR事务,查找策略组 根据策略组找到对应的策略 img-->生产---> ...

  3. Bit-Coin收入的一分钱

    好吧,这是我在Slush's pool上对Bit-coin收入的第一分钱. 回想起来,2013年平安夜开始到今天,将近3个月没日没夜窝在这个矿里挖矿 从最开始的集成显卡挖,买了显卡挖,加了显卡挖,使用 ...

  4. SharePoint通过stsadm备份和还原子网站(不是网站集)

    大家都知道SharePoint的stsadm命令提供了很多便捷甚至是唯一的操作方法! 这里列出的所有命令:http://www.cnblogs.com/dadongzuo/archive/2013/0 ...

  5. Spring(七)持久层

    一.Spring对DAO的支持 DAO:Data Access Object Spring提供了DAO框架,让开发人员无须耦合特定的数据库技术,就能进行应用程序的开发. Spring封闭了操作Orac ...

  6. iOS开发之保存照片到系统相册(Photo Album)

    iOS开发之保存照片到系统相册(Photo Album) 保存照片到系统相册这个功能很多社交类的APP都有的,今天我们简单讲解一下,如何将图片保存到系统相册(Photo Album). 创建UIIma ...

  7. Android调用Web服务

    现在大部分应用程序都把业务逻辑处理,数据调用等功能封装成了服务的形式,应用程序只需要调用这些web服务就好了,在这里就不赘述web服务的优点了.本文总结如何在android中调用Web服务,通过传递基 ...

  8. 由IP和掩码计算广播地址

    public static IPAddress GetBroadcast(IPAddress ipAddress, IPAddress subnetMask) { var ip = ipAddress ...

  9. hibernate查询方式

    hibernate查询方式:1.本地SQL查询 2.HQL查询 3.QBC查询 HQL查询:是面向对象的查询语言,是使用最广的一种查询方法 QBC查询:Query by Criteria是一套接口来实 ...

  10. Spring学习笔记之 Spring IOC容器(一)之 实例化容器,创建JavaBean对象,控制Bean实例化,setter方式注入,依赖属性的注入,自动装配功能实现自动属性注入

    本节主要内容:       1.实例化Spring容器示例    2.利用Spring容器创建JavaBean对象    3.如何控制Bean实例化    4.利用Spring实现bean属性sett ...