在SpringMVC中使用@SessionAttributes和@ModelAttribute将数据存储在session域中
今天在我的springMVC项目——图书管理系统中,希望在登录时将登录的Users存在session中,开始是准备在controller中使用Servlet API中的对象,可是一直无法引用,不知道为什么,难道是要导入什么特定的包吗(如果有知道的朋友,可以的话麻烦留言告诉我下,谢谢了),然后看见网上说可以用@SessionAttributes和@ModelAttribute注释来实现,具体实现如下:
UserController类:
@Controller
@SessionAttributes("userid")//①将ModelMap中属性名为"users"的属性
//放到Session属性列表中,以便这个属性可以跨请求访问
public class UserController {
@Autowired
private UserService service;
@Autowired
private BooksService booksService;
public UserService getService() {
return service;
}
public void setService(UserService service) {
this.service = service;
}
@RequestMapping(value="register")
public String register(String name,String password,Map<String, Object> params){
Users users=new Users();
users.setName(name);
users.setPassword(password);
users.setPoint(0);
users.setType(0);
users.setLevel(0);
service.save(users,params);
params.put("userName", name);
if(params.get("ErrMsg")!=null){
return "register";
}
return "reg_success";
}
@RequestMapping(value="login")
public String login(Users users,ModelMap map){
Users users2 = service.findUsers(users);
if(users2==null){
map.put("ErrMsg","输入有误,请重新输入");
return "";
}
map.put("users", users2);
map.addAttribute("userid", users2.getId());
if(users2.getType()==0){
List<Books> booksList = booksService.findAllBooks();
map.put("booksQueryList", booksList);
map.put("books", new Books());
return "visitor_first";
}else{
return "manager_first";
}
}
}
在另一个要调用userid的BookInfoController中:
@Controller
@SessionAttributes("userid")
public class BookInfoController {
@Autowired
private BookInfoService service;
@Autowired
private BooksService booksService;
@Autowired
private UserService userService;
@Autowired
private RecordsService recordsService;
@RequestMapping(value = "bookInfos")
public String bookInfoList(@RequestParam("bid") int bid, Map<String, Object> map) {
List<BookInfo> bookInfos = service.findBookInfoByBid(bid);
Books books = booksService.findBooksById(bid);
map.put("bookInfoList", bookInfos);
map.put("books", books);
return "bookInfoList";
}
@RequestMapping(value="lendBooks")
public String lendBooks(@RequestParam("id") int id,@ModelAttribute("userid")int uid,Map<String,Object> map){
service.updateBookInfo(id);
System.out.println("userId:"+uid);
BookInfo info = service.findBookInfoById(id);
Records records=new Records();
Users users = userService.findUsersById(uid);
records.setUsers(users);
records.setInfo(info);
records.setLendTime(new Date());
recordsService.addRecords(records);
map.put("Msg","借书成功");
return "saveShow";
}
}
上面这样已经试验成功,但成功之前还是走了不少弯路:
1.开始的时候,我在@SessionAttributes中保存的是持久态的(有id值)users对象,可是在@ModelAttribute中取得的users对象的id值每取一次就自增长,其他的属性都没变,我不知道是我建表有问题还是配置文件有问题,找了半天也没有找到,有知道的朋友也麻烦留言告诉我下吧。
2.在网上查询时看见一位朋友说@SessionAttributes(“userid”)中的“userid”必须要包含一个大写字母,经我试验,完全没有必要啊!
努力努力再努力!
在SpringMVC中使用@SessionAttributes和@ModelAttribute将数据存储在session域中的更多相关文章
- SpringMVC从Session域中获取值
SpringMVC从Session域中获取值 SpringMVC环境自行搭建 第一步:前端页面 第二步.后台代码 第三步.响应视图 第四步.在当前处理器所在的类设置@SessionAttributes ...
- 利用POI工具读取word文档并将数据存储到sqlserver数据库中
今天实现了利用POI工具读取word文档,并将数据存储到sql数据库中,代码如下: package word; import java.io.File; import java.io.FileInpu ...
- 查询数据库中的表格---通过构造方法将数据存入到List集合中---遍历进行输出
package cn.jy.demo; import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.Res ...
- Azure Tips 第一期: Azure 中的安全监视工具,数据存储, 动态数据屏蔽以及资源部署
# 1 Azure 中的安全监视工具 微软 Azure 云提供以下监控工具,可用于观察操作和检测异常行为. Azure 安全中心 Azure 安全中心是一个统一的基础结构安全管理系统,可以增强数据中心 ...
- K3中添加的一条新数据,其在数据库中的位置
最近研究将K3系统与生产管理系统结合起来,减少工作量,但如何确定其各自后台数据库的构成,其对应数据各自位于那张表内,总结了一下: 1.从百度搜索,查看表结构,然后找到目标表 另:K3数据库中单独 ...
- [视频]物联网&集成系统中的物联交互、数据存储、效果展示形成快速解决方案。附:ServerSuperIO 3.6.2 版本发布。
ServerSuperIO v3.6.2版本更新内容: 设备驱动与实时库对接的Tag配置与OPC Client读取数据的配置统一用一个配置文件. 设备驱动继承DeviceDynamic接口的子类支持存 ...
- Excel中判断一个表中的某一列的数据在另一列中是否存在
A B C D 1 10 3 有 2 6 e 无 3 3 6 有 判断c列的值在A列中是否存在(假定C列为需要判断列,A列为目标列) 在D1中输入以下公式,然后下拉公式即可 =IF(C ...
- 通过ArcGIS将数据存储到SQL Server2012中
一.软件安装: ARCGIS 10.3安装 SQLserver2012安装 ARCGIS 10.3 安装(注意ARCGIS10.3并不用安装配置ARCSDE). https://wenku.baidu ...
- 聊聊GIS中的坐标系|再版 识别各种数据的坐标系及代码中的坐标系
本篇讲讲在GIS桌面软件和实际数据中,以及各路GIS有关API的编程中,如何寻找坐标系信息.惯例: 本文约2000字,建议阅读时间10分钟. 作者:博客园/B站/知乎/csdn/小专栏 @秋意正寒 版 ...
随机推荐
- 浅谈Hybrid技术的设计与实现第三弹——落地篇
前言 接上文:(阅读本文前,建议阅读前两篇文章先) 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 根据之前的介绍,大家对前端与Native的交互应该有一些简单的认识了,很多 ...
- 9套Android实战经典项目资料分享给大家
通过项目学习收获更大. 1.基于Android平台实战爱短信项目 下载地址:http://pan.baidu.com/s/1hr8CEry 2.Android平台实战CRM客户关系管理(AChartE ...
- Android应用项目中BaseAdapter、SimpleAdapter和ArrayAdapter中的三种适配器
一.写在前面: 本次我们来讲解一下Android应用中三个适配器:BaseAdapter.SimpleAdapter和ArrayAdapter.其中常见的是BaseAdapter,也是个人推荐使用的适 ...
- NSURLConnection学习笔记
虽说现在都用三方库来获取网络数据,再不济也会用苹果官方的NSURLSession,但有些东西还是要先学会才有资格说不好不用,不是么? NSURLConnection发送请求是分为同步和异步两种方式的, ...
- zend studio 快捷键
复制当前行:ctrl+alt+↓ 删除当前行:Ctrl+d 行注释:Ctrl+/ 快注释(先选中要注释的代码):Ctrl+shift+/ 提示助手(方便函数等补全):alt+/ 代码格式化:Ctrl+ ...
- 网页万能排版布局插件,web视图定位布局创意技术演示页
html万能排版布局插件,是不是感觉很强大,原理其实很简单,不过功能很强大哈哈,大量节省排版布局时间啊! test.html <!doctype html> <html> &l ...
- JS巧妙思路
<script type="text/javascript"> window.onload = function () { var btn = document.get ...
- 织梦Dedecms使用Nginx的安全设置
首先需要说明的是,任何程序都是有漏洞的,我们需要做好一些必要的防范,来减少由于程序漏洞造成的损失.织梦的漏洞多,这个是很多人的想法.不过大家如果做好了织梦系统的文件夹权限什么的设置,很多漏洞也是用不上 ...
- Hbase入门教程--单节点伪分布式模式的安装与使用
Hbase入门简介 HBase是一个分布式的.面向列的开源数据库,该技术来源于 FayChang 所撰写的Google论文"Bigtable:一个结构化数据的分布式存储系统".就像 ...
- Python导出Excel为Lua/Json/Xml实例教程(三):终极需求
相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 Python导出E ...