浅谈Spring学习之request,session与globalSession作用域

浅谈Spring学习之request,session与globalSession作用域

1. 介绍

在 Spring 中,我们可以通过 request、session 和 globalSession 三种作用域来存储数据。这些作用域的范围从小到大逐级升高,对应的生命周期也逐级递增,具体的介绍如下:

  • request:处理一次请求的过程中有效,即发送一次请求到服务器和接收服务器响应的这段时间。
  • session:处理一次用户登录过程的有效期间。
  • globalSession(基于 Portlet 环境):处理一次用户登录过程的有效期间,在多个 portlet 应用间共享。

2. request 作用域

request 作用域的数据在请求结束后就会销毁,可以用于传递数据给同一个请求处理过程中的其他方法,在 Spring 中使用 request 作用域需要获取对应的 HttpServletRequest 对象,示例代码如下:

@RequestMapping("/test")
public String test(HttpServletRequest request) {
    request.setAttribute("name", "jack");
    return "test";
}

@RequestMapping("/getResult")
public void getResult(HttpServletRequest request, HttpServletResponse response) throws IOException {
    String name = (String) request.getAttribute("name");
    response.getWriter().println("name: " + name);
}

在以上代码中,test 方法向 request 中存储了一个 "name" 属性,getResult 方法从 request 中获取了这个属性并将其输出。

3. session 作用域

session 作用域的数据在用户退出登录或 session 超时后销毁,可以存储用户的登录信息、用户个性化设置等信息,在 Spring 中使用 session 作用域需要获取对应的 HttpSession 对象,示例代码如下:

@RequestMapping("/login")
public String login(HttpSession session) {
    session.setAttribute("username", "jack");
    return "login";
}

@RequestMapping("/getUserInfo")
public void getUserInfo(HttpSession session, HttpServletResponse response) throws IOException {
    String username = (String) session.getAttribute("username");
    response.getWriter().println("username: " + username);
}

在以上代码中,login 方法向 session 中存储了一个 "username" 属性,getUserInfo 方法从 session 中获取了这个属性并将其输出。

需要注意的是,当用户在其他地方登录时,原本存储在 session 中的数据就会丢失,所以我们一般会在每次访问时都重新验证用户的身份。

4. globalSession 作用域

globalSession 作用域与 session 作用域类似,是一个基于 Portlet 环境的全局会话,它可以在多个 portlet 应用间共享数据。在 Spring 中使用 globalSession 作用域需要获取 PortletSession 对象,示例代码如下:

@ActionMapping(params = "action=getUser")
public void getUser(PortletSession session, ActionResponse response) {
    session.setAttribute("username", "jack", PortletSession.APPLICATION_SCOPE);
    response.setRenderParameter("jspPage", "/userInfo.jsp");
}

@RenderMapping(params = "jspPage=userInfo.jsp")
public ModelAndView getUserInfo(PortletSession session) {
    String username = (String) session.getAttribute("username", PortletSession.APPLICATION_SCOPE);
    ModelAndView modelAndView = new ModelAndView("userInfo");
    modelAndView.addObject("username", username);
    return modelAndView;
}

在以上代码中,getUser 方法向 globalSession 中存储了一个 "username" 属性,getUserInfo 方法从 globalSession 中获取了这个属性并将其放到 ModelAndView 对象中返回,最终通过 "userInfo.jsp" 页面展示出来。

5. 总结

在 Spring 中,我们可以通过 request、session 和 globalSession 三种作用域来存储数据,它们的生命周期和作用范围有所不同。在实际应用中,我们可以根据不同的需要选择不同的作用域来存储数据,从而实现数据的传递、共享和保存。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈Spring学习之request,session与globalSession作用域 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • MyBatis高级映射ResultMap解决属性问题

    针对“MyBatis高级映射ResultMap解决属性问题”这个话题,我可以提供以下完整攻略: 1. ResultMap的基本概念 在MyBatis中,可以使用ResultMap来映射查询结果集中的列与实体属性的对应关系。ResultMap可以指定列名与属性名的对应关系,同时也可指定列的数据类型与属性的数据类型的对应关系。使用ResultMap可更加灵活地控…

    Java 2023年5月20日
    00
  • Java使用JSONObject操作json实例解析

    下面我将为你详细讲解Java使用JSONObject操作json实例解析的完整攻略。 什么是JSONObject 在Java中操作json数据需要用到第三方库,其中一个流行的库是JSON-java。而JSONObject就是JSON-java库中的一个类,用于操作Json格式的数据。 导入JSON-java库 在使用JSON-java库前,需要先将其导入到项…

    Java 2023年5月26日
    00
  • FCKeditor使用方法(FCKeditor_2.6.3)详细使用说明

    FCKeditor 2.6.3 使用说明 安装设置 下载并解压 FCKeditor 2.6.3 的压缩文件到网站的某个目录下。 在需要使用 FCKeditor 的网页中引入以下代码: html<script type=”text/javascript” src=”fckeditor/fckeditor.js”></script> 如果…

    Java 2023年6月15日
    00
  • IntelliJ IDEA打开多个Maven的module且相互调用代码的方法

    IntelliJ IDEA是一款功能强大的Java开发工具,在开发过程中经常需要打开多个Maven的module且相互调用代码,下面将介绍具体操作步骤: 创建Maven module 首先,我们需要创建多个Maven module。 打开IntelliJ IDEA,点击File -> New -> Module,选择Maven,点击Next。 在…

    Java 2023年5月19日
    00
  • Java WebService 简单实例(附实例代码)

    Java WebService 是一种基于 Web 的远程调用技术,允许不同的应用程序通过互联网相互通信以完成特定的业务功能。本文将介绍如何快速入门 Java WebService,并提供一个简单的实例程序。 准备工作 在开始编写 WebService 之前,需要先准备好以下环境和工具: JDK:Java 开发环境 Eclipse:Java 开发工具 Tom…

    Java 2023年5月23日
    00
  • SpringMVC ModelAndView的用法使用详解

    SpringMVC ModelAndView的用法使用详解 在 SpringMVC 中,ModelAndView 是一个常用的类,用于封装控制器处理请求后的返回结果。它可以同时包含模型数据和视图信息,方便控制器将处理结果返回给客户端。本文将详细讲解 SpringMVC ModelAndView 的用法,包括如何创建 ModelAndView 对象、如何设置模…

    Java 2023年5月18日
    00
  • IDEA+Maven创建Spring项目的实现步骤

    创建Maven项目 使用IDEA创建Maven项目,步骤如下: 点击IDEA的File菜单,选择New,然后选择Project; 在弹出的New Project窗口中,选择Maven; 在下一步中,我们需要输入项目的信息,包括 GroupId、ArtifactId、Version、Project name,这些信息都可以任意填写; 最后,点击Finish按钮…

    Java 2023年5月20日
    00
  • javaweb之web入门基础

    JavaWeb 之 Web 入门基础 简介 Java Web 是一种通过 Java 开发的应用程序,可通过互联网或局域网访问,具有可靠、安全和跨平台的特点,在互联网应用开发中具有广泛的应用。JavaWeb 主要分为三层:表现层、业务层、持久化层。其中,表现层主要负责用户交互和界面展示。 HTML 基础 HTML (Hypertext Markup Langu…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部