springmvc使用ajax进行数据交互时,session失效问题(@ResponseBody与session能否同时使用?)

今天做博客demo的时候遇到了这样的问题:当我用ajax进行资源请求时,需要顺便将账户信息存入session。但是后来发现有@Responsebody标签时,直接用HttpSession存数据时,根本没有效果。代码如下:

    @ResponseBody
    @RequestMapping("/checkInfo")
    public Blogger dealWithLogin(@RequestBody Blogger blogger,HttpSession httpSession){
        if(blogger.getBloggerMail() != null) {
            blogger = bloggerServices.checkInfo(blogger);
            if(!blogger.equals("")){
                httpSession.setAttribute("blogger",blogger);
            }
        }
        return blogger;
    }

在jsp页面中取值取不到。那么是不是我的写法有问题呢(不考虑标签问题),我做了一个简单的测试

@Controller
@RequestMapping("/test")
public class TestController {
   @RequestMapping("/m1")
    public String m1(HttpSession httpSession){
        httpSession.setAttribute("sessionTest","session ........");
       return "test";
    }
}

跳转页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
${sessionScope.sessionTest}
</body>
</html>

得到结果

发现可以得到结果,那么这个测试程序与我之前所写的程序有何区别呢?

当然是返回值类型不一样了,前者通过@ResponseBody标签指定返回的是json类型,而后者直接跳转页面。

那么是不是意味着,有@ResponseBody标签,就不能使用session了呢?

后来查阅发现,还是要使用spingmvc自带的组件,@SessionAttributes。代码如下:

package com.ph.controller;import javax.servlet.http.HttpSession;
@SessionAttributes(value = {"blogger"})
@RequestMapping("/blogger")
@Controller
public class BloggerController {
    @Autowired
    private BloggerServices bloggerServices;

    @ResponseBody
    @RequestMapping("/checkInfo")
    public Blogger dealWithLogin(@RequestBody Blogger blogger, Model model,HttpSession httpSession){
        if(blogger.getBloggerMail() != null) {
            blogger = bloggerServices.checkInfo(blogger);
            if(!blogger.equals("")){
                model.addAttribute("blogger",blogger);
            }
        }
        return blogger;
    }

}
public Blogger dealWithLogin(@RequestBody Blogger blogger, Model model,HttpSession httpSession)中的HttpSession httpSession务必要加上,不然会报错。
@SessionAttributes(value = {"blogger"})    含义:model添加一个名为blogger的变量时,也会在session中加一个。

注:记录一下解决方案,原理日后探究,有错误还请大佬们指正,感谢。
 
 

原文地址:https://www.cnblogs.com/phdeblog/p/10560812.html

时间: 2024-11-06 01:19:53

springmvc使用ajax进行数据交互时,session失效问题(@ResponseBody与session能否同时使用?)的相关文章

ASP.Net WebAPI与Ajax进行跨域数据交互时Cookies数据的传递

前言 最近公司项目进行架构调整,由原来的三层架构改进升级到微服务架构(准确的说是服务化,还没完全做到微的程度,颗粒度没那么细),遵循RESTFull规范,使前后端完全分离,实现大前端思想.由于是初次尝试,中途也遇到了不少问题.今天就来讨论一下其中之一的问题,WebAPI与前端Ajax 进行跨域数据交互时,由于都在不同的二级域名下(一级域名相同),导致Cookies数据无法获取. 最开始通过头部(Header)将Cookies传输到其WebAPI,也能解决问题. 下面讲述另外一种解决方案. 解决过

ASP.Net中关于WebAPI与Ajax进行跨域数据交互时Cookies数据的传递

本文主要介绍了ASP.Net WebAPI与Ajax进行跨域数据交互时Cookies数据传递的相关知识.具有很好的参考价值.下面跟着小编一起来看下吧 前言 最近公司项目进行架构调整,由原来的三层架构改进升级到微服务架构(准确的说是服务化,还没完全做到微的程度,颗粒度没那么细),遵循RESTFull规范,使前后端完全分离,实现大前端思想.由于是初次尝试,中途也遇到了不少问题.今天就来讨论一下其中之一的问题,WebAPI与前端Ajax 进行跨域数据交互时,由于都在不同的二级域名下(一级域名相同),导

springMVC学习(11)-json数据交互和RESTful支持

一.json数据交互: json数据格式在接口调用中.html页面中较常用,json格式比较简单,解析还比较方便. 比如:webservice接口,传输json数据. springMVC进行json交互 1)环境准备: 加载json转换的jar包: springmvc中使用jackson的包进行json转换(@requestBody和@responseBody使用下边的包进行json转) jackson-core-asl-1.9.11.jar jackson-mapper-asl-1.9.11.

laytpl模板——怎么使用ajax与数据交互

第一次在项目中用laytpl模板,下面是一些使用过程中的探索,希望对小伙伴们有所帮助. 注:第一次使用这个模板的小伙伴建议先去看看官网 laytpl <script type="text/html" id="productList-shop-main1"> //模板内容都要存放在<script>标签里 {{# for (var i = 0; i < d.obj.length; i++){ }} //模板里面的for循环跟js一样的写法,

问题:mui框架用ajax渲染数据后banner插件失效?

解决方案: 因为banner图是动态创建的,在插件开始初始化时,文档流中没用图片,故没有创建相应宽度,通过调整js加载顺序,问题还是没有解决.最后找到swiper插件 api 有属性是可以根据内容变动,自动初始化插件的,添加observer:true后问题解决! 示例: var mySwiper = new Swiper ('.swiper-container', { pagination: '.swiper-pagination', autoplay: 5000, loop: true, ob

springMVC接受ajax提交表单,json数据的两种方式

作为一个初入互联网行业的小鑫鑫,在使用springMVC时发现一个好耍的东西,决定记下来,免得哪天忘了,哈哈 第一种 序列化表单,将表单数据序列化为json对象字符串 $("#submit").click(function (){ var form=$("form").serializeArray(); $.ajax({ url:"${pageContext.request.contextPath}/teacher/updateTeacher",

springmvc学习笔记(18)-json数据交互

springmvc学习笔记(18)-json数据交互 springmvc学习笔记18-json数据交互 springmvc进行json交互 环境准备 添加json转换的依赖 配置json转换器 json交互测试 输入json串输出是json串 输入keyvalue输出是json串 本文主要介绍如何在springmvc中进行json数据的交互,先是环境准备和配置,然后分别展示了"输入json串,输出是json串"和"输入key/value,输出是json串"两种情况下

jquery ajax请求方式与提示用户正在处理请稍等,等待数据返回时loading的显示

1.jquery ajax请求方式与提示用户正在处理请稍等 为了提高用户体验度,我们通常会给出 “正在处理,请稍等!”诸如此类的提示.我们可通过设置$.ajax()下的参数beforeSend()来实现 初次使用$.ajax() ,我没有去区分过ajax的异步请求和同步请求的不同,刚开始使用同步请求,以至后来出现许多问题,特别在体验度方面.异步和同步:同步意味着执行完一段程序才能执行下一段,它属于阻塞模式,其表现在网页上的现象是——浏览器会锁定页面(即所谓的页面假死状态),用户不能操作其它的,必

数据交互和表单操作

今天是上班的第42天,对于一个程序媛来说,不管之前你学了多少年的知识,真正的时间,都应该是从上班开始算起的,因为上班才是敲代码的开始,木有实践,一切的理论对于程序媛来说都是扯淡~ 好啦!今天学到了很多的东西,必须在这儿记录一下! 当实现和后台的数据交互时,如果后台返回给我们的是一个数组,里面的值就像这样子,然后前台就不能在JS中像常规那样在构建里面中调后台的参数,看下面的详解吧~ 常规的时候后台返回的数据是这样的: 然后我们在前台js构建页面的时候是这样子写的: 但是如果后台今天不这样给你反了呢