如何更新session的数据,我通过下面一种覆盖session数据的方式达到更新session数据。
一、更新之前的数据
更新之前的数据如下
mysql> select * from seller;
+----+-------------------+----------------------+-------------------+
| id | shop_name | seller_account | password |
+----+-------------------+----------------------+-------------------+
| 9 | NULL | qwerty | 123456 |
+----+-------------------+----------------------+-------------------+
本人用的引擎模板是thymeleaf,通过session.seller,打印在页面上,从下面图的打印结果可知商品名称是空值。用jsp的话,也可以用对应的语法调试(好像是<% out.print( session.seller); %>),会用jsp的开发人员应该知道怎么用。下面代码是在前台输入,用来测试打印结果是什么。
<span th:text="${session.seller}"></span>
二、更新之后数据
更新之后的数据如下
mysql> select * from seller;
+----+-------------------+----------------------+-------------------+
| id | shop_name | seller_account | password |
+----+-------------------+----------------------+-------------------+
| 9 | 50年老火股 | qwerty | 123456 |
+----+-------------------+----------------------+-------------------+
从打印结果可知店铺名称更新值了,session的数据成功更新。
三、源代码
@Controller
@SessionAttributes(value = { "seller" })
@RequestMapping("seller")
public class SellerController {
@Autowired(required = false)
private HttpSession sellerSession;
@PutMapping("/home")
//@SessionAttribute Seller seller 可以从SessionAttributes获取session数据,但是该session的seller其中属性没更新
public String updateShopName(@RequestParam String shopName, @SessionAttribute Seller seller) {
sellerService.updateShopName(shopName, id()); //模拟数据库更新店铺名称
seller.setShopName(shopName); //修改@SessionAttributes中的seller的店铺名称
sellerSession.setAttribute("seller", seller); //覆盖@SessionAttributes中的seller,完成更新数据
return "seller/home";
}
}
大家可以通过上面的方法改变你们自己的方法,欢迎评论和指正!