`
Josh_Persistence
  • 浏览: 1653596 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

Spring3.X @MVC - (十)用@Value在控制器中赋值

阅读更多

前言:

一、总共有10节,也就是10篇博客来讲述Spring的MVC,几乎涵盖了所有Spring MVC中的内容。

 

二、我创建的例子是一个球场预订系统,例子我已经测试调试通过,是一个Maven的project,包含一个Parent project:wsheng-spring-base和一个子Module:wsheng-spring-mvc.

 

三、在Eclipse中直接import maven的project即可,会同时引入上诉两个project的。

 

四、如果你没有耐心,可以不必往下学习,因为网上有很多例子,但是都是讲的Spring MVC很少的面,而且你可以快速的上手,但如果你想真正了解Spring MVC中的很多细节,就可以慢慢的去看博客(从第一节到第十节),如果有什么问题,欢迎信息告诉我。

 

五、学习的方法是你可以先将源码导入到eclipse中,然后根据博客上的内容,对照源码,慢慢消化,这是个漫长的过程,但是会帮助你了解很多Spring MVC的细节。

===================================================================================

 

 

 

 

1. 问题:

    创建MVC控制器的时候,不想硬编码字段的值,而是想赋一个出现在Bean文件或者是属性资源文件(message.properties)中的值。

 

2.解决方法:

    用@Value注解使得Spring的MVC控制器中相关的字段能够使用Spring表达式语言SpEL进行赋值。你可以使用@Value注解和SpEL一起,查询应用上下文中的bean,取到相关的值。

 

3.工作原理:

    例子: 例如,假如你有一个简单的控制器,它的作用仅仅是显示一个“关于”页面,如下的JSP:

 

<html>

<head>

<title>About</title>

</head>

 

<body>

<h2>Court Reservation System</h2>

<table>

  <tr>

    <td>Version:</td>

    <td>1.0</td>

  </tr>

</table>

</body>

</html>

         在“关于”页面中添加管理员的联络邮件是最常见的做法。但是管理员的邮件地址有可能出现在除了“关于”页面的其他多个页面中。因为我们最好在一个统一的地方存放管理员的邮件地址,message.properties就是个不错的选择。这样,如果管理员的地址发生变化,我们只需要修改一个地方,让其它用到该邮件地址的地方也发生变化。所以我们可以在message.properties文件中添加如下属性:

admin.email=wangsheng23@126.com

        然后可以修改about.jsp将控制器传入的email属性作为模式属性显示:

<html>

<head>

<title>About</title>

</head>

 

<body>

<h2>Court Reservation System</h2>

<table>

  <tr>

    <td>Version:</td>

    <td>1.0</td>

  </tr>

  <tr>

    <td>Email:</td>

    <td><a href="mailto:${email}">${email}</a></td>

  </tr>

</table>

</body>

</html>

 

在应用的/WEB-INF/jsp中创建about.jsp之后,接下来我们就就可以创建对应的控制器,以便把E-mail属性传递给视图。下面的AboutConroller使用@Value注解,通过message.properties文件为email字段赋值。

@Controller

public class AboutController {

 

  @Value("#{ messageSource.getMessage('admin.email',null,'en')}")

    private String email;

 

    @RequestMapping("/about")

    public String courtReservation(Model model) {

        model.addAttribute("email", email);

return "about";

    }

}

   赋予@Value注解的值是一条SpEL语句,SpEL语句可以由标记形式#{SpEL Statement}识别出来。

   在这个例子中,messageReource代表Bean org.springframework.context.support.ResourceBundleMessageSource的值,这个Bean在web应用上下文中声明,用于访问message.properties文件。

       关于该bean的配置,可以参照:http://josh-persistence.iteye.com/admin/blogs/1881831Spring3.X @MVC - (五)用外部化文件来显示区域的信息)

 <!-- Message .properties sources --> 

    <bean id="messageSource"

        class="org.springframework.context.support.ResourceBundleMessageSource"> 

<!--         <property name="basename" value="messages.properties" /> -->

<property name="basename" value="messages" />

    </bean>

messageSource.getMessage('admin.email',null,'en')是Bean类的方法,使用这些参数访问会返回admin.email的值。通过@Value的注解,该值会自动赋值给email字段。(即SpEL和messageSource是用来从properties文件中取值的,而@Value是用来赋值的。

 

      最后可以通过http://localhost:8088/wsheng-spring-mvc/about 测试。

  

  

1
1
分享到:
评论

相关推荐

    手动整合struts2+spring3.

    ### 手动整合Struts2与Spring3 在软件开发领域,尤其是Java Web开发中,Struts2与Spring是两个非常重要的框架。Struts2是一个用于构建动态Web应用的MVC(Model-View-Controller)框架,而Spring则是一个提供全面...

    Spring MVC RequestParam.docx

    在Spring MVC框架中,`@RequestParam`是一个非常重要的注解,用于从HTTP请求的查询参数或请求体中绑定参数到控制器方法的参数上。在这个文档中,主要讨论了如何使用`@RequestParam`处理缺失参数的情况,并建议使用...

    轻量级java web MVC框架

    一个非常简单的MVC框架,实现了类似Spring MVC的基本功能。 1、包括自动扫描绑定映射路径,只要在web.xml中指定扫描包,系统启动后会将请求url绑定到指定的处理方法上。如: 在web.xml中定义如下: &lt;context-param&gt; ...

    Spring攻略(第二版 中文高清版).part1

    8.9 用@Value在控制器中赋值 314 8.9.1 问题 314 8.9.2 解决方案 314 8.9.3 工作原理 314 8.10 用控制器处理表单 316 8.10.1 问题 316 8.10.2 解决方案 316 8.10.3 工作原理 317 8.11 用向导表单...

    电专SpringBoot期末考试内容.docx

    12. Spring MVC提供了`MappingJackson2HttpMessageConverter`实现类,用于处理JSON格式的请求和响应,实现浏览器与控制器间的JSON数据交互。 13. Spring Boot采用组合原则和设计理念,减少了大量重复配置,简化了...

    Spring攻略(第二版 中文高清版).part2

    8.9 用@Value在控制器中赋值 314 8.9.1 问题 314 8.9.2 解决方案 314 8.9.3 工作原理 314 8.10 用控制器处理表单 316 8.10.1 问题 316 8.10.2 解决方案 316 8.10.3 工作原理 317 8.11 用向导表单...

    springmvc关于@requestMapping和@requestParam的使用

    1. **类级别的@RequestMapping**:当在类上使用时,该注解会应用于类中所有方法,为整个控制器设定一个基础的请求路径。例如,`@RequestMapping("/api")` 将使类中的所有方法都处理以"/api"开头的URL请求。 2. **...

    spring src

    Spring MVC的注解驱动编程模型使得控制器的编写更加简洁,如@Controller、@RequestMapping等注解的应用,极大地提高了开发效率。 Spring的事务管理是另一个亮点。它提供了编程式和声明式两种事务管理方式。编程式...

    beetl模板语音教学

    - **赋值**: `#{var = value}` - **例子**: `#{name = "John Doe"}` - **作用**: 允许在模板内定义临时变量。 **4. 属性引用** - **直接引用**: `${object.property}` - **索引引用**: `${object[index]}` - **用途...

    Struts2+Spring+Hibernate知识点总结

    - **Action属性传递**:将数据赋值给Action中的某个属性,然后在JSP页面中通过EL表达式获取。 - **使用Session属性**:通过`request.getSession().setAttribute("name", value)`将数据存入Session域中。 - **JSP...

    Spring系列面试题129道(附答案解析)

    在Spring中可以通过在XML配置文件中添加context命名空间并声明注解驱动元素,或者使用Java配置类上的注解(如@ComponentScan)来启动注解装配。 27、@Component,@Controller,@Repository,@Service有何区别? 这些...

    spring学习手册 包括事务讲解

    Spring 框架是企业级应用开发的重要工具,它的核心理念是通过控制反转(IOC,Inversion of Control)和依赖注入(DI,Dependency Injection)来降低组件间的耦合度,提高代码的可维护性和可扩展性。下面我们将深入...

    apache-freemarker-2.3.27

    FreeMarker与流行的Web框架,如Spring MVC和Struts有良好的集成,可以方便地在MVC架构中作为视图层。此外,它也可以用在其他场景,如生成静态网站、构建电子邮件模板或者创建XML配置文件。 在实际开发中,...

    Spring笔记(面试题)md

    - **给创建的对象赋值**:Spring提供了两种主要的依赖注入方式:setter注入和构造器注入。 - **Setter注入**:通过设置setter方法来注入依赖。这种方式要求对象必须有无参构造函数,并且有对应的setter方法。例如:...

    基于SSM框架+Mysql的企业CRM客户关系管理系统项目源码+数据库+项目说明.zip

    【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、... 文件上传用到MultipartFile类,需要引入相关插件并在MVC配置文件中配置multipartResolver解析器bean 2. 将thy

    利用Spring IOC技术实现用户登录验证机制

    在本文中,我们将深入探讨如何利用Spring的控制反转(IOC)技术来实现用户登录验证机制。Spring框架提供了强大的依赖注入功能,使得我们可以轻松地管理对象的生命周期和它们之间的关系,从而简化了应用的开发。 ...

    Java后台获取JSP页面多个复选框选中的值

    4. 在控制器方法中处理接收到的复选框值。 在提供的`test.java`和`test.jsp`文件中,你可以找到具体的实现细节。根据实际情况,可能还需要配置SSM框架的其他组件,如DispatcherServlet、ModelAndView、Dao和Service...

    达内老师总结的spring笔记

    Spring 框架是Java开发中的一个重要组成部分,它极大地简化了企业级应用的开发工作。Spring的核心在于控制反转(IOC)和依赖注入(DI),这两个概念是理解Spring框架的关键。 **1. Spring框架概述** Spring是一个...

    Java面试题带答案.doc

    在operator方法中,x.append(y)将y追加到x之后,然后y被赋值为x的引用。但是,由于方法参数是按值传递的,这意味着在main方法中的a和b不会受到影响。因此,main方法中的a仍然是"A",b仍然是"B",所以输出是"A,B",...

Global site tag (gtag.js) - Google Analytics