Spring MVC之cookies跟session 数据绑定
在我最早接触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 数据绑定的更多相关文章
- 理解Spring MVC Model Attribute和Session Attribute
作为一名 Java Web 应用开发者,你已经快速学习了 request(HttpServletRequest)和 session(HttpSession)作用域.在设计和构建 Java Web 应用 ...
- 【译】理解Spring MVC Model Attribute 和 Session Attribute
作为一名 Java Web 应用开发者,你已经快速学习了 request(HttpServletRequest)和 session(HttpSession)作用域.在设计和构建 Java Web 应用 ...
- spring mvc下shiro的session,request等问题
最近的一个项目使用的是spring mvc,权限框架使用的是shiro. 不过有一个问题一直困扰着我,现在的session到底是谁的session,是servlet的还是shiro的. 于是我把spr ...
- spring mvc 异常处理和session添加
在controller中进行设置 package com.stone.controller; import java.util.HashMap; import java.util.Map; impor ...
- Spring MVC 常用注解 和session界面渲染取值
@RequestParams name 修饰当前形参的属性 value 和name属性一样 也是修饰当前属性 defaultValue 给属性设置一个默认值 默认属性 required 必备属性 1. ...
- Spring Mvc session拦截器实现
Spring Mvc拦截器实现session过期跳转到登录页面 配置拦截器 <mvc:interceptors> <mvc:interceptor> <mvc:mappi ...
- 四、Spring——Spring MVC
Spring MVC 1.Spring MVC概述 Spring MVC框架围绕DispatcherServlet这个核心展开,DispatcherServlet负责截获请求并将其分配给响应的处理器处 ...
- Spring MVC深入学习
一.MVC思想 MVC思想简介: MVC并不是java所特有的设计思想,也不是Web应用所特有的思想,它是所有面向对象程序设计语言都应该遵守的规范:MVC思想将一个应用部分分成三个基本部 ...
- SpringBoot系列: Spring MVC视图方法的补充
SpringMVC 视图方法的参数, 已经在这个文章中写得非常清楚了, 链接为 https://www.cnblogs.com/morethink/p/8028664.html 这篇文章做一些补充. ...
随机推荐
- 个人收集整理的5Ucms标签
{field:cid} 当前栏目id {field:id} 当前页面id {field:content} 当前页面内容 [List:Modifytime $format=yy-mm-dd] 文章发布 ...
- [Tips] Useful link ... on going
1. CSS Bootstrap http://getbootstrap.com/ Bootstrap 中文文档 http://getbootstrap.com/2.3.2/ 最全的 Twitter ...
- access中根据一个表创建另一个
access中根据一个表创建另一个 SELECT * INTO newTableFROM zD_qlr; SELECT * into mdFROM zd IN 'E:\fz\高阳\大姚\fz\bz\b ...
- 【转】Windows的多线程编程,C/C++
在Windows的多线程编程中,创建线程的函数主要有CreateThread和_beginthread(及_beginthreadex). CreateThread 和 ExitThread 使 ...
- android开发之——获取相册图片和路径
Android开发获取相册图片的方式网上有很多种,这里说一个Android4.4后的方法,因为版本越高,一些老的api就会被弃用,新的api和老的api不兼容,导致出现很多问题. 比如:managed ...
- Swift的7大误区
Swift正在完成一个惊人的壮举,它正在改变我们在苹果设备上编程的方式,引入了很多现代范例,例如:函数式编程和相比于OC这种纯面向对象语言更丰富的类型检查. Swift语言希望通过采用安全的编程模式去 ...
- 选择排序(java版)
public class SelectSortTest { public static void selectSort(int[] source) { for (int i = 0; i < s ...
- 多线程基础 (八)NSOperation相关
额外的参考学习可以学习:http://www.cnblogs.com/YouXianMing/p/3707403.html 1.NSOperation简介 NSOperation的作用 配合使用N ...
- [LoadRunner]性能测试实践_Hessian协议脚本编写2
协议选取和运行配置请参考:http://www.cnblogs.com/whylaughing/p/5430821.html 这次直接贴代码让大家参考: import lrapi.lr; import ...
- qsort
/*** *qsort.c - quicksort algorithm; qsort() library function for sorting arrays * Copyright (c) Mic ...