前言:
一、总共有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/1881831(Spring3.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 测试。
相关推荐
### 手动整合Struts2与Spring3 在软件开发领域,尤其是Java Web开发中,Struts2与Spring是两个非常重要的框架。Struts2是一个用于构建动态Web应用的MVC(Model-View-Controller)框架,而Spring则是一个提供全面...
在Spring MVC框架中,`@RequestParam`是一个非常重要的注解,用于从HTTP请求的查询参数或请求体中绑定参数到控制器方法的参数上。在这个文档中,主要讨论了如何使用`@RequestParam`处理缺失参数的情况,并建议使用...
一个非常简单的MVC框架,实现了类似Spring MVC的基本功能。 1、包括自动扫描绑定映射路径,只要在web.xml中指定扫描包,系统启动后会将请求url绑定到指定的处理方法上。如: 在web.xml中定义如下: <context-param> ...
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 用向导表单...
12. Spring MVC提供了`MappingJackson2HttpMessageConverter`实现类,用于处理JSON格式的请求和响应,实现浏览器与控制器间的JSON数据交互。 13. Spring Boot采用组合原则和设计理念,减少了大量重复配置,简化了...
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 用向导表单...
Spring MVC的注解驱动编程模型使得控制器的编写更加简洁,如@Controller、@RequestMapping等注解的应用,极大地提高了开发效率。 Spring的事务管理是另一个亮点。它提供了编程式和声明式两种事务管理方式。编程式...
- **赋值**: `#{var = value}` - **例子**: `#{name = "John Doe"}` - **作用**: 允许在模板内定义临时变量。 **4. 属性引用** - **直接引用**: `${object.property}` - **索引引用**: `${object[index]}` - **用途...
- **Action属性传递**:将数据赋值给Action中的某个属性,然后在JSP页面中通过EL表达式获取。 - **使用Session属性**:通过`request.getSession().setAttribute("name", value)`将数据存入Session域中。 - **JSP...
在Spring中可以通过在XML配置文件中添加context命名空间并声明注解驱动元素,或者使用Java配置类上的注解(如@ComponentScan)来启动注解装配。 27、@Component,@Controller,@Repository,@Service有何区别? 这些...
Spring 框架是企业级应用开发的重要工具,它的核心理念是通过控制反转(IOC,Inversion of Control)和依赖注入(DI,Dependency Injection)来降低组件间的耦合度,提高代码的可维护性和可扩展性。下面我们将深入...
FreeMarker与流行的Web框架,如Spring MVC和Struts有良好的集成,可以方便地在MVC架构中作为视图层。此外,它也可以用在其他场景,如生成静态网站、构建电子邮件模板或者创建XML配置文件。 在实际开发中,...
- **给创建的对象赋值**:Spring提供了两种主要的依赖注入方式:setter注入和构造器注入。 - **Setter注入**:通过设置setter方法来注入依赖。这种方式要求对象必须有无参构造函数,并且有对应的setter方法。例如:...
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、... 文件上传用到MultipartFile类,需要引入相关插件并在MVC配置文件中配置multipartResolver解析器bean 2. 将thy
在本文中,我们将深入探讨如何利用Spring的控制反转(IOC)技术来实现用户登录验证机制。Spring框架提供了强大的依赖注入功能,使得我们可以轻松地管理对象的生命周期和它们之间的关系,从而简化了应用的开发。 ...
1. **类级别的@RequestMapping**:当在类上使用时,该注解会应用于类中所有方法,为整个控制器设定一个基础的请求路径。例如,`@RequestMapping("/api")` 将使类中的所有方法都处理以"/api"开头的URL请求。 2. **...
4. 在控制器方法中处理接收到的复选框值。 在提供的`test.java`和`test.jsp`文件中,你可以找到具体的实现细节。根据实际情况,可能还需要配置SSM框架的其他组件,如DispatcherServlet、ModelAndView、Dao和Service...
Spring 框架是Java开发中的一个重要组成部分,它极大地简化了企业级应用的开发工作。Spring的核心在于控制反转(IOC)和依赖注入(DI),这两个概念是理解Spring框架的关键。 **1. Spring框架概述** Spring是一个...
在operator方法中,x.append(y)将y追加到x之后,然后y被赋值为x的引用。但是,由于方法参数是按值传递的,这意味着在main方法中的a和b不会受到影响。因此,main方法中的a仍然是"A",b仍然是"B",所以输出是"A,B",...