今天做博客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中加一个。

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

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

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

    前言 最近公司项目进行架构调整,由原来的三层架构改进升级到微服务架构(准确的说是服务化,还没完全做到微的程度,颗粒度没那么细),遵循RESTFull规范,使前后端完全分离,实现大前端思想.由于是初次尝 ...

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

    本文主要介绍了ASP.Net WebAPI与Ajax进行跨域数据交互时Cookies数据传递的相关知识.具有很好的参考价值.下面跟着小编一起来看下吧 前言 最近公司项目进行架构调整,由原来的三层架构改 ...

  3. SpringMVC之Ajax与Controller交互

    前面学习了拦截器,通过拦截器我们可以拦截请求,做进一步处理之后再往下进行,这里我们使用Ajax的时候会有一个问题就是会把js.css这些静态资源文件也进行了拦截,这样在jsp中就无法引入的静态资源文件 ...

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

    一.json数据交互: json数据格式在接口调用中.html页面中较常用,json格式比较简单,解析还比较方便. 比如:webservice接口,传输json数据. springMVC进行json交 ...

  5. SprimgMVC学习笔记(八)—— SpringMVC与前台json数据交互

    一.两种交互形式 可以看出,前台传过来的方式有两种,一种是传json格式的数据过来,另一种就是在url的末尾传普通的key/value串过来,针对这两种方式,在Controller类中会有不同的解析, ...

  6. $Django ajax简介 ajax简单数据交互,上传文件(form-data格式数据),Json数据格式交互

    一.ajax  1 什么是ajax:异步的JavaScript和xml,跟后台交互,都用json  2 ajax干啥用的?前后端做数据交互:  3 之前学的跟后台做交互的方式:   -第一种:在浏览器 ...

  7. AJAX进行数据交互的过程

    AJAX全称为"Asynchronous JavaScript and XML"(异步JavaScript和XML). 是指一种创建交互式网页应用的网页开发技术. 通过在后台与服务 ...

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

    第一次在项目中用laytpl模板,下面是一些使用过程中的探索,希望对小伙伴们有所帮助. 注:第一次使用这个模板的小伙伴建议先去看看官网 laytpl <script type="tex ...

  9. Vue--- Vue(Pubsub + Ajax) 数据交互

    案例知识点 兄弟组件儿的通信     使用了Pubsub    订阅与发布 ajax数据请求    获取前   获取中   获取后   获取为空    获取异常 获取成功后显示数据给到  原先定义号的 ...

随机推荐

  1. Django在admin模块中显示auto_now_add=True或auto_now=True的时间类型列

    转载自: http://www.tuicool.com/articles/ZryE7f 在Django如果model中的列定义了auto_now_add或auto_now属性,那么这种列不会在admi ...

  2. Ubuntu中文目录文件夹改为英文

    打开终端,在终端中输入命令: export LANG=en_US xdg-user-dirs-gtk-update 在弹出的窗口中询问是否将目录转化为英文路径,同意并关闭. 在终端中输入命令: exp ...

  3. 关于前端惰性加载(jquery_lazyload)的使用和原理分析

    1.前言 有时我们会有这样的需求,当网页有很多张图片的时候,我们不希望一次性就把图片加载完,而是希望当浏览器滑动到指定位置的时候再加载,这样可以节省带宽,它也能帮助减轻服务器负载.那么这种需求就需要利 ...

  4. MongoDb 物理位置应用实现

    1代码实现 官方驱动2.7版本 1.1范围查找 /// <summary> /// 半径范围查找位置信息 /// </summary> /// <param name=& ...

  5. Apache HttpComponents中的cookie匹配策略

    Apache HttpComponents中的cookie匹配策略 */--> pre.src {background-color: #292b2e; color: #b2b2b2;} pre. ...

  6. C语言不使用加号实现加法运算的几种方法

    今天看到<编码:隐匿在计算机软硬件背后的语言>的第十二章:二进制加法器.讲述了全加器,半加器的原理以及如何实现加法.实现加法时所使用的全加器,半加器中包含的所有逻辑门在C语言中都有相应的运 ...

  7. virtualbox+vagrant学习-2(command cli)-11-vagrant PowerShell命令

    PowerShell 格式: vagrant powershell [-- extra powershell args] 这将在主机上打开PowerShell提示符,进入正在运行的vagrant机器. ...

  8. zookeeper 集群安装与配置

    Zookeeper安装和配置 准备工作 安装 JDK,此步略. 下载 zookeeper wget http://archive.apache.org/dist/zookeeper/zookeeper ...

  9. Oracle 索引 详解

    转载:http://www.2cto.com/database/201110/107271.html 一.索引介绍 1.1 索引的创建语法: CREATE UNIUQE | BITMAP INDEX ...

  10. vue+vux-ui+axios+mock搭建一个简单vue框架

    1.首先感谢同事 2.之前一直在做angularjs的项目,目前vue火热,所以自己搭建了一个的vue框架,在此作为记录 vue+vux-ui这里就不介绍了,有很多博客都写的很详细了. 下面简单记录下 ...