今天在我的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域中的更多相关文章

  1. SpringMVC从Session域中获取值

    SpringMVC从Session域中获取值 SpringMVC环境自行搭建 第一步:前端页面 第二步.后台代码 第三步.响应视图 第四步.在当前处理器所在的类设置@SessionAttributes ...

  2. 利用POI工具读取word文档并将数据存储到sqlserver数据库中

    今天实现了利用POI工具读取word文档,并将数据存储到sql数据库中,代码如下: package word; import java.io.File; import java.io.FileInpu ...

  3. 查询数据库中的表格---通过构造方法将数据存入到List集合中---遍历进行输出

    package cn.jy.demo; import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.Res ...

  4. Azure Tips 第一期: Azure 中的安全监视工具,数据存储, 动态数据屏蔽以及资源部署

    # 1 Azure 中的安全监视工具 微软 Azure 云提供以下监控工具,可用于观察操作和检测异常行为. Azure 安全中心 Azure 安全中心是一个统一的基础结构安全管理系统,可以增强数据中心 ...

  5. K3中添加的一条新数据,其在数据库中的位置

    最近研究将K3系统与生产管理系统结合起来,减少工作量,但如何确定其各自后台数据库的构成,其对应数据各自位于那张表内,总结了一下: 1.从百度搜索,查看表结构,然后找到目标表    另:K3数据库中单独 ...

  6. [视频]物联网&集成系统中的物联交互、数据存储、效果展示形成快速解决方案。附:ServerSuperIO 3.6.2 版本发布。

    ServerSuperIO v3.6.2版本更新内容: 设备驱动与实时库对接的Tag配置与OPC Client读取数据的配置统一用一个配置文件. 设备驱动继承DeviceDynamic接口的子类支持存 ...

  7. Excel中判断一个表中的某一列的数据在另一列中是否存在

      A B C D 1 10   3 有 2 6   e 无 3 3   6 有 判断c列的值在A列中是否存在(假定C列为需要判断列,A列为目标列) 在D1中输入以下公式,然后下拉公式即可 =IF(C ...

  8. 通过ArcGIS将数据存储到SQL Server2012中

    一.软件安装: ARCGIS 10.3安装 SQLserver2012安装 ARCGIS 10.3 安装(注意ARCGIS10.3并不用安装配置ARCSDE). https://wenku.baidu ...

  9. 聊聊GIS中的坐标系|再版 识别各种数据的坐标系及代码中的坐标系

    本篇讲讲在GIS桌面软件和实际数据中,以及各路GIS有关API的编程中,如何寻找坐标系信息.惯例: 本文约2000字,建议阅读时间10分钟. 作者:博客园/B站/知乎/csdn/小专栏 @秋意正寒 版 ...

随机推荐

  1. [(ngModel)]的实现原理

    讨论[(ngModel)]之前,先讲下属性绑定和事件绑定.   在属性绑定中,值从模型中流动到视图上的目标属性.[],通过把属性名放在方括号中来标记出目标属性.这是从模型到视图的单向数据绑定.   在 ...

  2. 安装XAMPP遇到的问题及解决方法

    1.XAMPP无法启动Apache Xampp的获得和安装都十分简单,你只要到以下网址: http://www.apachefriends.org/zh_cn/xampp.html 下载xampp即可 ...

  3. python学习笔记(列表、元组、购物车实例)

    一.列表 列表和字典是最常用的两种数据类型 1. 需求:怎么存放班级80多人的姓名,如何实现? names = ["Zhangyang","Guyun",&qu ...

  4. 9.2.1 .net framework下的MVC 控件的封装(上)

    在写.net core下mvc控件的编写之前,我先说一下.net framework下我们MVC控件的做法. MVC下控件的写法,主要有如下三种,最后一种是泛型的写法,mvc提供的控件都是基本控件. ...

  5. Resharper让我们的asp.net开发效率提高三分之一

    ReSharper是一个JetBrains公司出品的著名的代码生成工具,其能帮助Microsoft Visual Studio成为一个更佳的IDE.它包括一系列丰富的能大大增加C#和Visual Ba ...

  6. 从Java String实例来理解ANSI、Unicode、BMP、UTF等编码概念

    转(http://www.codeceo.com/article/java-string-ansi-unicode-bmp-utf.html#0-tsina-1-10971-397232819ff9a ...

  7. office 2010 word每次启动都需要配置

    解决方式: 进入cmd,运行以下命令即可,如果提示已存在,选择Y覆盖就行了 reg add HKCU\Software\Microsoft\Office\14.0\Word\Options /v No ...

  8. sqlite索引的原理

    引言 这篇文章,里面讲到对于一个41G大小.包含百万条记录的数据库进行查询操作,如果利用了索引,可以把操作耗时从37s降到0.2s. 那么什么是索引呢?利用索引可以加快数据库查询操作的原理是什么呢? ...

  9. ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1, osid 5166'

    凌晨收到同事电话,反馈应用程序访问Oracle数据库时报错,当时现场现象确认: 1. 应用程序访问不了数据库,使用SQL Developer测试发现访问不了数据库.报ORA-12570 TNS:pac ...

  10. SQL Server 2014新特性:其他

    AlwaysOn 增强功能 SQL Server 2014 包含针对 AlwaysOn 故障转移群集实例和 AlwaysOn 可用性组的以下增强功能: “添加 Azure 副本向导”简化了用于 Alw ...