前言:
一、总共有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 测试。
相关推荐
NULL 博文链接:https://josh-persistence.iteye.com/blog/1873138
赠送jar包:spring-data-keyvalue-2.3.9.RELEASE.jar; 赠送原API文档:spring-data-keyvalue-2.3.9.RELEASE-javadoc.jar; 赠送源代码:spring-data-keyvalue-2.3.9.RELEASE-sources.jar; 赠送Maven依赖信息文件:...
赠送jar包:sentinel-spring-webmvc-adapter-1.8.0.jar; 赠送原API文档:sentinel-spring-webmvc-adapter-1.8.0-javadoc.jar; 赠送源代码:sentinel-spring-webmvc-adapter-1.8.0-sources.jar; 赠送Maven依赖信息...
赠送jar包:spring-webmvc-5.2.15.RELEASE.jar; 赠送原API文档:spring-webmvc-5.2.15.RELEASE-javadoc.jar; 赠送源代码:spring-webmvc-5.2.15.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-webmvc-...
spring-webmvc-portlet-3.2.7.RELEASE.jarspring-webmvc-portlet-3.2.7.RELEASE.jarspring-webmvc-portlet-3.2.7.RELEASE.jarspring-webmvc-portlet-3.2.7.RELEASE.jar
赠送jar包:spring-data-keyvalue-2.0.9.RELEASE.jar; 赠送原API文档:spring-data-keyvalue-2.0.9.RELEASE-javadoc.jar; 赠送源代码:spring-data-keyvalue-2.0.9.RELEASE-sources.jar; 赠送Maven依赖信息文件:...
最新版spring-web-5.2.3.RELEASE和spring-webmvc-5.2.3.RELEASE
赠送jar包:spring-webmvc-5.0.8.RELEASE.jar; 赠送原API文档:spring-webmvc-5.0.8.RELEASE-javadoc.jar; 赠送源代码:spring-webmvc-5.0.8.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-webmvc-5.0.8....
spring 3.2.4 Realease 的所有jar包: spring-context-3.2.4.RELEASE.jar spring-core-3.2.4.RELEASE.jar spring-beans-3.2.4.RELEASE.jar spring-test-3.2.4.RELEASE.jar spring-web-3.2.4.RELEASE.jar spring-aop-...
spring-webmvc-4.jar 下载spring-webmvc-4.jar 下载spring-webmvc-4.jar 下载spring-webmvc-4.jar 下载spring-webmvc-4.jar 下载spring-webmvc-4.jar 下载
org.springframework.aop-3.0.4.RELEASE.jar org.springframework.asm-3.0.4.RELEASE.jar org.springframework.aspects-3.0.4.RELEASE.jar org.springframework.beans-3.0.4.RELEASE.jar org.springframework....
赠送jar包:springfox-spring-webmvc-3.0.0.jar; 赠送原API文档:springfox-spring-webmvc-3.0.0-javadoc.jar; 赠送源代码:springfox-spring-webmvc-3.0.0-sources.jar; 赠送Maven依赖信息文件:springfox-...
赠送jar包:spring-data-keyvalue-2.5.5.jar; 赠送原API文档:spring-data-keyvalue-2.5.5-javadoc.jar; 赠送源代码:spring-data-keyvalue-2.5.5-sources.jar; 赠送Maven依赖信息文件:spring-data-keyvalue-...
spring-webmvc-4.3.7.RELEASE-sources.jar spring-webmvc-4.3.7.RELEASE-sources.jar
开发工具 spring-webmvc-4.3.6.RELEASE开发工具 spring-webmvc-4.3.6.RELEASE开发工具 spring-webmvc-4.3.6.RELEASE开发工具 spring-webmvc-4.3.6.RELEASE开发工具 spring-webmvc-4.3.6.RELEASE开发工具 spring-web...
Spring+springMVC的jar包以及技术aop需要用到的绝大部分jar包,包含aopalliance-1.0.jar spring-aop-4.1.8.RELEASE.jar spring-aspects-4.1.8.RELEASE.jar spring-beans-4.1.8.RELEASE.jar spring-context-4.1.8...
spring-webmvc-4.1.3.RELEASE.jarspring-webmvc-4.1.3.RELEASE.jarspring-webmvc-4.1.3.RELEASE.jarspring-webmvc-4.1.3.RELEASE.jarspring-webmvc-4.1.3.RELEASE.jar
赠送jar包:spring-webmvc-5.3.15.jar; 赠送原API文档:spring-webmvc-5.3.15-javadoc.jar; 赠送源代码:spring-webmvc-5.3.15-sources.jar; 赠送Maven依赖信息文件:spring-webmvc-5.3.15.pom; 包含翻译后的API...
spring-webmvc-portlet-3.0.2.RELEASE
aopalliance-1.0.jar commons-logging-1.1.1.jar spring-aop-4.2.4.RELEASE.jar spring-aspects-4.2.4.RELEASE.jar ...spring-webmvc-portlet-4.2.4.RELEASE.jar spring-websocket-4.2.4.RELEASE.jar