当前位置: 首页 > news >正文

使用jQuery获取session中存储的list集合

在网上查找了很多关于jQuery获取session都不可得,如果大家有更好的方式,欢迎留言

这里是使用jQuery发送Ajax请求到后台获取session

jsp中没有代码

js代码

<script type="text/javascript">
//这里是一个私有方法,用来获取项目根路径,这个方法在js的最底部,有兴趣的可以查看 var basePath = getRootPath(); $(function(){
  //使页面刚加载完成就去取得session getSession(); });
function getSession(){ $.ajax({ url:basePath + "/getSession", type:"GET", async:false,//false代表只有在等待ajax执行完毕后才执行 success:function(result){
       //这里在控制台将session数据打印出来 console.log(result);
       //如果要取list中具体的数据,可以点其下的内容依次取得,具体的可以看控制台打印的内容,那个层次很清晰
/* console.log(result.data); console.log(result.data.userSession); console.log(result.data.userSession[0]); */ } }); } /** * 获取项目根路径,如: http://localhost:8083/ssm-dynamic * @returns */ function getRootPath(){ //获取当前网址,如: http://localhost:8083/ssm-dynamic/jsp/jsonList.jsp var curWwwPath=window.document.location.href; //获取主机地址之后的目录,如: ssm-dynamic/jsp/jsonList.jsp var pathName=window.document.location.pathname; var pos=curWwwPath.indexOf(pathName); //获取主机地址,如: http://localhost:8080 var localhostPaht=curWwwPath.substring(0,pos); //获取带"/"的项目名,如:/ssm-dynamic var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1); return(localhostPaht+projectName); } </script>

controller代码

存储session的代码

@RequestMapping(value="/",method=RequestMethod.GET)
    public String sayHello(HttpSession session){
        List<User> users = loginService.selectAll();
        session.setAttribute("users", users);
        return "login";
    }

获取session的代码

//指定url地址,与上述的Ajax发送请求的url要一致;指定请求方式,与上述的Ajax请求的type要一致
@RequestMapping(value="/getSession",method=RequestMethod.GET)
//加@ResponseBody是为了可以返回json数据 @ResponseBody
public Msg getSession(HttpSession session){
    //取得之前添加的session数据 List
<User> users = (List<User>) session.getAttribute("users");
    //将session的数据放在自定义的msg类中,下面会展示该类
return Msg.success().add("userSession", users); }

Msg.java

import java.util.HashMap;
import java.util.Map;

/**
 * 通用的返回类
 * @author ws
 *
 */
public class Msg {
    /**
     * 状态码
     * 100:成功
     * 200:失败
     */
    private int code;
    /**
     * 提示信息
     */
    private String msg;
    /**
     * 用户要返回给浏览器的数据
     */
    private Map<String, Object> data = new HashMap<String,Object>();
    
    public int getCode() {
        return code;
    }
    public void setCode(int code) {
        this.code = code;
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    public Map<String, Object> getData() {
        return data;
    }
    public void setData(Map<String, Object> data) {
        this.data = data;
    }
    
    /**
     * 处理成功
     * @return
     */
    public static Msg success(){
        Msg msg = new Msg();
        msg.setCode(100);
        msg.setMsg("处理成功");
        return msg;
    }
    
    /**
     * 处理失败
     * @return
     */
    public static Msg fail(){
        Msg msg = new Msg();
        msg.setCode(200);
        msg.setMsg("处理失败");
        return msg;
    }
    
    /**
     * 以键值对添加数据
     * @param key
     * @param value
     * @return
     */
    public Msg add(String key, Object value) {
        this.getData().put(key, value);
        return this;
    } 
}
View Code

这样,在浏览器控制台(一般按F12即可打开)就可以看到效果了

 

至此大功告成

大家如果有可以不适用ajax的方式即可取得session,欢迎留言,共同探讨

转载于:https://www.cnblogs.com/gode/p/8274377.html

相关文章:

  • 如何理解接口-Java系列
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • Linux下的文件I/O编程
  • 作为完美主义者(强迫症)如何将linux的eth1网卡修改为eth0网卡
  • WEB服务FTP概述
  • scrapy学习之路4(itemloder的使用)
  • 基于 Docker for MAC 的 Kubernetes 本地环境搭建与应用部署
  • MQL:5分钟双均线EA
  • 我的PMP备考之路
  • 苹果承认降价电池紧缺,如果你是iPhone6 Pus用户不用再等了
  • 经典排序算法及其 Java 实现
  • Linux三剑客--awk
  • 迭代器、生成器、面向过程编程
  • 16、bash编程之数组介绍、及bash内置字符串处理工具介绍
  • 高德地图开发汇总
  • [译] React v16.8: 含有Hooks的版本
  • 【css3】浏览器内核及其兼容性
  • 4个实用的微服务测试策略
  • 77. Combinations
  • es6(二):字符串的扩展
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • Javascript 原型链
  • Java-详解HashMap
  • JS题目及答案整理
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • MaxCompute访问TableStore(OTS) 数据
  • Sass Day-01
  • Spring-boot 启动时碰到的错误
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 包装类对象
  • 构建工具 - 收藏集 - 掘金
  • 数组大概知多少
  • 我是如何设计 Upload 上传组件的
  • 你对linux中grep命令知道多少?
  • # 飞书APP集成平台-数字化落地
  • #Linux(make工具和makefile文件以及makefile语法)
  • (ros//EnvironmentVariables)ros环境变量
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (八)Spring源码解析:Spring MVC
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (九)c52学习之旅-定时器
  • (四)图像的%2线性拉伸
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • .net core Swagger 过滤部分Api
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .Net面试题4
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • /boot 内存空间不够
  • @GlobalLock注解作用与原理解析
  • @Responsebody与@RequestBody
  • [100天算法】-每个元音包含偶数次的最长子字符串(day 53)
  • [14]内置对象
  • [Android开源]EasySharedPreferences:优雅的进行SharedPreferences数据存储操作
  • [BT]BUUCTF刷题第8天(3.26)