`
Adan-Chiu
  • 浏览: 22131 次
社区版块
存档分类
最新评论

Spring MVC组件开发-保存并获取属性参数

 
阅读更多

在java web学习中,我们会暂存(共享)数据到http的request对象或者session对象中,在开发控制器的时候,有时也需要保存对应的数据到这些对象中去,或者从中获取数据。而spring mvc提供了支持,主要注解有三个:@RequestAttribute、@SessionAttribute、@SessionAttributes,它们的作用如下:

  • @RequestAttribute获取http的请求(request)对象属性值,用来传递给控制器的参数。
  • @SessionAttribute在http的会话(session)对象属性值中,用来传递给控制器的参数。
  • @SessionAttributes,可以给它配置一个字符串数组,这个数组对应的是数据模型对应的键值对,然后将这些键值对保存到session中。

也许你会留意到并没有@RequestAttributs这个注解,那是因为在请求的范围中,springmvc更希望你使用它所提供的数据模型。它的数据模型本身就是在请求的生命周期中存在的。

1 注解@RequestAttribute

主要作用是从http的request对象中取出请求属性,它的范围周期在一次请求中存在

jsp:

<c:set var="title" value="葫芦娃大战变形金刚" scope="request"/>
<jsp:forward page="/book/requestAttribute"/>

 后台

@RequestMapping("/book/requestAttribute")
public String requestAttr(@RequestAttribute("title") String title){
  ........
}

 这样就可以获取请求的title属性了,对于@RequestAttribute注解的参数,默认是不能为空的,否则系统会抛出异常。和@RequestParam一样,它也有一个required配置项,只需要设置它为false,参数就可以为空了:@RequestAttribute(name="title",required=false)

2 注解@SessionAttribute和@SessionAttributs

  这两个注解和http的session会话对象有关,可以让我们在和服务器会话期间通过它读/写会话对象的属性,缓存一定数据信息。

先来设置会话属性,在控制器中可以使用注解@SessionAttributes来设置对应的键值对,不过这个注解只能对类进行标注,不能对方法或者参数标注。可以配置属性名称或者属性类型。它的作用是:当这个控制器被注解后,SpringMvc执行完控制器的逻辑后,将数据模型中对应的属性名称或者属性类型保存到http的session对象中

package com.wise.tiger.controller;

@Controller
@RequestMapping("book")
//可以配置数据模型的名称和类型,两者取或关系
@SessionAttributes(names={"id"},types={Book.class})
public class AttributeController{
   @Autowired private BookService service;

   @RequestMapping("/sessionAttributes")
   public String sessionAttrs(Integer id,Model model){
      //根据类型,session将会保存图书信息
       model.addAttribute("book",service.findById(id));
     //根据名称,session将会保存id
       model.addAttribute("id",id);
       return "show";
   }
}

 /WEB-INF/pages/show.jsp:

${sessionScope.id}

${sessionScope.book.title}

这样就可以在控制器内不使用servlet的api造成侵入的HttpSession对象来设置session的属性了,这更加有利于对测试环境的构建进行测试。既然有了设置Session的属性,那么自然就有读取session属性的要求,通过@SessionAttribute实现

jsp:

<c:set var="id" value="1" scope="session"/>
<c:redirect url="/book/sessionAttr"/>

后台controller获取session属性值:

@RequestMapping("/book/sessionAttribute")
public String sessionAttr(@SessionAttribute("id") Integer id){
  ........
}

 和@RequestParam一样,@SessionAttribute注解的参数默认是不能为空的,如果要改变这个规则。修改required配置项为false即可。

 

3 注解@CookieValue和注解@RequestHeader

从名称而言,这两个注解都很明确,就是从cookie和http请求头获取对应的请求信息,它们的用法比较简单,其大同小异:

@RequestMapping("/getHeaderAndCookie")
public  String getHeaderAndCookie(@RequestHeader(value="User-Agent",required=false,defaultValue="attribute") String userAgent,@CookieValue(value="JSESSIONID",required=true,defaultValue="jsession-id" String sessionId){
 .........
}

 

分享到:
评论

相关推荐

    Spring MVC--6.封装参数获得与传递

    在Spring MVC框架中,参数的获取与传递是Web应用程序开发中的关键部分,它涉及到控制器(Controller)如何处理HTTP请求,并将这些请求数据转化为业务逻辑所需的对象。本篇将深入探讨Spring MVC中如何封装参数,以及...

    Spring-MVC-Hibernate-CRUD-源码.rar

    - **读取(Retrieve)**:GET请求通常用于获取数据,Spring MVC的@RequestMapping注解配合@RequestParam或@PathVariable获取参数。Hibernate的Session.load()或Session.get()方法用于根据ID加载实体。 - **更新...

    第二章 Spring MVC 增改查实例

    1. **DispatcherServlet**:Spring MVC 的核心组件,负责接收请求并分发到相应的处理器。 2. **Model-View-Controller**:MVC 设计模式,将业务逻辑、数据和用户界面分离。 3. **@Controller**:用于标记处理 HTTP ...

    spring mvc 3_demo

    Spring MVC是Spring框架的一个核心...这个"Spring MVC 3_demo"项目是学习和理解Spring MVC 3中注解驱动开发的绝佳起点。通过实践这些概念,你可以更深入地了解Spring MVC如何处理Web请求,并有效地构建Web应用程序。

    一个完整的Spring MVC的CRUD操作实例

    在实际开发中,我们还需要配置Spring MVC的 DispatcherServlet、映射处理器(HandlerMapping)、视图解析器(ViewResolver)等。同时,`@RequestMapping`注解用于映射URL到控制器方法,`@PathVariable`用于从URL路径...

    Spring MVC Locale 的使用 中文 英文 等语言 切换

    在Spring MVC框架中,`Locale`是用来处理应用程序中的多语言支持的关键组件。它定义了用户的语言和地区设置,例如中文(zh_CN)或英文(en_US)。这篇博客文章将深入探讨如何在Spring MVC应用中实现语言切换功能,以...

    spring MVC uploadify

    Spring MVC 是一个强大的Java web开发框架,用于构建可维护、高性能和灵活的Web应用程序。在Spring MVC中,处理文件上传是一项常见的任务,尤其在需要用户交互上传图片或文档的场景下。`multipartResolver`是Spring ...

    Spring MVC实例

    总结,Spring MVC 是一个强大且灵活的 MVC 框架,它简化了 Web 应用的开发,通过注解驱动的编程模型提高了开发效率,同时能够方便地与其他 Spring 组件和第三方库集成。在实际开发中,理解并熟练掌握 Spring MVC 的...

    spring mvc 初始环境搭建,前后台数据的交互,文件上传

    Spring MVC的核心配置文件`spring-servlet.xml`用于定义组件扫描范围、视图解析器以及其他配置。 ```xml &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;beans xmlns="http://www.springframework.org/schema/beans...

    Spring MVC 和Hibernate精选笔记

    - Spring MVC支持表单数据自动绑定到Controller方法的参数上,简化了数据获取。 - 数据验证通过`@Validated`或`@Valid`注解实现,结合JSR-303/JSR-349 Bean Validation框架进行校验。 4. **拦截器(Interceptor)...

    Spring mvc+hibernate例子(包括登录、增删改查等简单功能)

    Spring MVC 和 Hibernate 是两种非常流行的开源框架,它们在 Java Web 开发中有着广泛的应用。Spring MVC 作为 Spring 框架的一部分,负责处理 Web 请求,提供模型-视图-控制器架构,而 Hibernate 是一个强大的对象...

    spring 注解开发说明

    本文将围绕“spring注解开发说明”这一主题展开,深入探讨基于注解驱动的配置机制,并通过示例详细说明如何利用注解简化Spring MVC控制器的开发。 #### 基于注解驱动的配置机制 在Spring框架中,基于注解的配置是...

    Spring MVC面试宝典1.pdf

    ### Spring MVC面试宝典知识点详解 #### 一、SpringMVC简介 ##### 1.1 什么是SpringMVC? SpringMVC是一个基于Java的轻量级Web应用框架,该框架遵循MVC(Model-View-Controller)设计模式,旨在简化Web层的开发。...

    Spring MVC实现文件的上传和下载

    首先,我们需要理解Spring MVC中的两个核心组件:Model、View和Controller。Controller接收用户请求,处理业务逻辑,然后将结果传递给Model,Model更新数据后,View负责展示结果。在文件上传和下载的场景中,...

    spring3 mvc系列一:架构基本配置(注解版)

    DispatcherServlet在Spring MVC中扮演着至关重要的角色,它负责调度请求并管理其他组件。 在注解版的配置中,我们不再需要传统的XML配置文件,而是利用Java配置或者基于@ComponentScan的注解来扫描和注册控制器。...

    SPRING入门

    Spring MVC 是 Spring Framework 的一部分,作为一个轻量级的 Web 开发框架,它采用了经典的 Model-View-Controller (MVC) 架构模式来组织 Web 应用程序。Spring MVC 主要目标是简化 Web 应用程序的开发过程,通过将...

    基于注解的Spring_mvc增删改DEMO源码

    在本项目中,"基于注解的Spring_mvc增删改...这将对你的Spring MVC开发技能有显著提升,并帮助你快速构建健壮的Web应用程序。记得仔细研究每个类和方法,以及它们之间的交互,这样能更好地理解Spring MVC的工作原理。

    文件上传组件-Apache-Commons-FileUpload-应用指南.pdf

    它简化了Web应用程序在服务器端接收和处理用户通过浏览器上传文件的过程。以下是对该组件的详细说明: 1. **组件获取与安装** ...在实际应用中,还可以结合其他库,如Spring MVC,进一步简化文件上传的处理流程。

    springmvc 增删改查

    8. **模型绑定**:在处理 HTTP 请求时,Spring MVC 可以自动将请求参数绑定到控制器方法的参数上,这使得我们可以轻松地获取和验证用户输入。 9. **模型视图助手(ModelAndView)**:`ModelAndView` 是一个容器,它...

Global site tag (gtag.js) - Google Analytics