在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框架中,参数的获取与传递是Web应用程序开发中的关键部分,它涉及到控制器(Controller)如何处理HTTP请求,并将这些请求数据转化为业务逻辑所需的对象。本篇将深入探讨Spring MVC中如何封装参数,以及...
- **读取(Retrieve)**:GET请求通常用于获取数据,Spring MVC的@RequestMapping注解配合@RequestParam或@PathVariable获取参数。Hibernate的Session.load()或Session.get()方法用于根据ID加载实体。 - **更新...
1. **DispatcherServlet**:Spring MVC 的核心组件,负责接收请求并分发到相应的处理器。 2. **Model-View-Controller**:MVC 设计模式,将业务逻辑、数据和用户界面分离。 3. **@Controller**:用于标记处理 HTTP ...
Spring MVC是Spring框架的一个核心...这个"Spring MVC 3_demo"项目是学习和理解Spring MVC 3中注解驱动开发的绝佳起点。通过实践这些概念,你可以更深入地了解Spring MVC如何处理Web请求,并有效地构建Web应用程序。
在实际开发中,我们还需要配置Spring MVC的 DispatcherServlet、映射处理器(HandlerMapping)、视图解析器(ViewResolver)等。同时,`@RequestMapping`注解用于映射URL到控制器方法,`@PathVariable`用于从URL路径...
在Spring MVC框架中,`Locale`是用来处理应用程序中的多语言支持的关键组件。它定义了用户的语言和地区设置,例如中文(zh_CN)或英文(en_US)。这篇博客文章将深入探讨如何在Spring MVC应用中实现语言切换功能,以...
Spring MVC 是一个强大的Java web开发框架,用于构建可维护、高性能和灵活的Web应用程序。在Spring MVC中,处理文件上传是一项常见的任务,尤其在需要用户交互上传图片或文档的场景下。`multipartResolver`是Spring ...
总结,Spring MVC 是一个强大且灵活的 MVC 框架,它简化了 Web 应用的开发,通过注解驱动的编程模型提高了开发效率,同时能够方便地与其他 Spring 组件和第三方库集成。在实际开发中,理解并熟练掌握 Spring MVC 的...
Spring MVC的核心配置文件`spring-servlet.xml`用于定义组件扫描范围、视图解析器以及其他配置。 ```xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans...
- Spring MVC支持表单数据自动绑定到Controller方法的参数上,简化了数据获取。 - 数据验证通过`@Validated`或`@Valid`注解实现,结合JSR-303/JSR-349 Bean Validation框架进行校验。 4. **拦截器(Interceptor)...
Spring MVC 和 Hibernate 是两种非常流行的开源框架,它们在 Java Web 开发中有着广泛的应用。Spring MVC 作为 Spring 框架的一部分,负责处理 Web 请求,提供模型-视图-控制器架构,而 Hibernate 是一个强大的对象...
本文将围绕“spring注解开发说明”这一主题展开,深入探讨基于注解驱动的配置机制,并通过示例详细说明如何利用注解简化Spring MVC控制器的开发。 #### 基于注解驱动的配置机制 在Spring框架中,基于注解的配置是...
### Spring MVC面试宝典知识点详解 #### 一、SpringMVC简介 ##### 1.1 什么是SpringMVC? SpringMVC是一个基于Java的轻量级Web应用框架,该框架遵循MVC(Model-View-Controller)设计模式,旨在简化Web层的开发。...
首先,我们需要理解Spring MVC中的两个核心组件:Model、View和Controller。Controller接收用户请求,处理业务逻辑,然后将结果传递给Model,Model更新数据后,View负责展示结果。在文件上传和下载的场景中,...
DispatcherServlet在Spring MVC中扮演着至关重要的角色,它负责调度请求并管理其他组件。 在注解版的配置中,我们不再需要传统的XML配置文件,而是利用Java配置或者基于@ComponentScan的注解来扫描和注册控制器。...
Spring MVC 是 Spring Framework 的一部分,作为一个轻量级的 Web 开发框架,它采用了经典的 Model-View-Controller (MVC) 架构模式来组织 Web 应用程序。Spring MVC 主要目标是简化 Web 应用程序的开发过程,通过将...
在本项目中,"基于注解的Spring_mvc增删改...这将对你的Spring MVC开发技能有显著提升,并帮助你快速构建健壮的Web应用程序。记得仔细研究每个类和方法,以及它们之间的交互,这样能更好地理解Spring MVC的工作原理。
它简化了Web应用程序在服务器端接收和处理用户通过浏览器上传文件的过程。以下是对该组件的详细说明: 1. **组件获取与安装** ...在实际应用中,还可以结合其他库,如Spring MVC,进一步简化文件上传的处理流程。
8. **模型绑定**:在处理 HTTP 请求时,Spring MVC 可以自动将请求参数绑定到控制器方法的参数上,这使得我们可以轻松地获取和验证用户输入。 9. **模型视图助手(ModelAndView)**:`ModelAndView` 是一个容器,它...