Spring3.0 MVC 中文教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Spring3 MVC - 3到Spring MVC框架简介
Spring3 MVC框架简介
Spring MVC是Spring的框架的Web组件。
它提供了丰富的功能,为建设强大的Web应用程序。
Spring MVC框架的架构,并在这样的高度可配置的方式,每一块的逻辑和功能设计。
此外Spring可以毫不费力地与其他流行的Web框架,如Struts,WebWork的,的Java Server Faces和Tapestry集成。
这意味着,你甚至可以告诉Spring使用Web框架中的任何一个。
比Spring更不紧耦合的servlet或JSP 向客户端呈现视图。
喜欢速度与其他视图技术集成,Freemarker的,Excel或PDF现在也有可能。
Spring3.0 MVC系列
∙第1部分:到Spring 3.0 MVC框架简介
∙第2部分:在Spring 3.0 MVC创建Hello World应用程序
∙第3部分:在Spring 3.0 MVC的形式处理
∙第4部分:Spring3 MVC的Tiles Support与Eclipse中的例子插件教程
∙第5部分:Spring3 MVC的国际化及本地化教程与范例在Eclipse
∙第6部分:Spring3 MVC示例教程Spring主题
∙第7部分:创建Spring3 MVC Hibernate 3的示例在Eclipse中使用Maven的
在Spring Web MVC,你可以使用任何对象作为命令或表单支持对象,你不需要实现框架特定的接口或基类。
Spring的数据绑定是高度灵活的:例如,将验证错误类型不作为应用系统错误,可以通过评估的不匹配。
因此,你不必重复你的业务对象的属性,简单的无类型的字符串,在表单对象仅仅是为了处理无效的意见,或正确转换的字符串。
相反,它往往是最好直接绑定到业务对象。
请求处理生命周期
Spring的Web MVC框架是,像许多其他Web MVC框架,要求为导向,围绕一个中心的servlet,它把请求分派给控制器,提供其他功能,有利于开发Web应用而设计的。
Spring DispatcherServlet DispatcherServlet是Spring IoC容器完全集成,并允许我们使用的每一个Spring的其他功能。
以下是Spring3.0 MVC请求流程的生命周期:
客户端将请求发送到Web容器中的HTTP请求的形式。
这个传入的请求被截获由前端控制器(DispatcherServlet的),然后它会试图找出相应的处理程序映射。
帮助处理程序映射,DispatcherServlet将请求派遣适当的控制器。
控制器尝试处理请求和ModelAndView实例的形式返回到前端控制器模型和视图对象。
前端控制器,然后试图解决咨询视图解析器对象的视图(可以是JSP,FreeMarker的,速度等)。
选定的视图,然后返回到客户端呈现。
Spring3.0的特点
∙Spring3.0框架支持Java 5。
它提供了注释的配置支持。
Java 5的功能,例如泛型,注解,可以使用可变参数等在Spring。
∙正在引进一种新的表达语言The Spring 的表达语言规划环境地政局局长。
Spring的表达式语言可以使用,同时定义了基于XML和注释的bean定义。
∙Spring3.0框架支持REST Web服务。
∙数据格式可从来没有那么容易。
Spring 3.0支持了注释的格式。
现在,我们可以使用@ DateFimeFormat(ISO = ISO.DATE)和@NumberFormat(样式= Spring.CURRENCY)标注日期和货币格式转换。
∙Spring3.0已经开始支持JPA 2.0的。
配置Spring 3.0的MVC
切入点的Spring 3.0 MVC DispatcherServlet 。
DispatcherServlet的是正常的servlet的类,它是HttpServlet的的基类。
因此,我们需要在它web.xml配置。
<web-app>
<servlet>
<servlet-name>example</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>example</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
</web-app>
在上面的代码片断中,我们必须在web.xml中配置DispatcherServlet的。
请注意,我们已经映射*. HTML URL模式,例如DispatcherServlet的。
因此,任何与*. HTML模式的URL将调用Spring MVC 的前端控制器。
一旦DispatcherServlet的初始化,它会查找一个文件名[servlet-name]-servlet.xml Web应用程序的WEB - INF文件夹中。
在上面的例子中,将寻找所谓example-servlet.xml servlet.xml的框架。
请注意上面的架构图。
WebApplicationContext上图中指定ApplicationContext平原扩展Web应用程序所需的一些额外的功能。
在WebApplicationContext是能够解决的主题,它也与相应的servlet相关。
在WebApplicationContext在ServletContext中的约束,并通过对RequestContextUtils类的静态方法,您可以随时查找在WebApplicationContext。
继续
现在,我们有关的Spring 3.0 MVC框架,其生命周期架构的想法,在接下来的部分中,我们将创建一个工作Spring3.0的Hello World应用程序从头。
Spring3 MVC:在Spring 3.0 MVC创建Hello World应用程序
Spring3.0 MVC系列的第2部分。
在以前的文章中,我们经历介绍的Spring MVC 3.0框架,其请求处理生命周期和体系结构图。
在这篇文章中,让我们在Spring MVC 3.0创建一个简单的的Hello World 应用程序。
对于创建的Hello World演示应用程序,我们将使用Eclipse IDE中。
我们需要的东西
之前,我们与我们的第一个Hello World Struts 2的示例开始,我们将需要一些工具。
1.JDK 1.5以上(下载)
2.以上的Tomcat 5.x的或任何其他容器(Glassfish的中,WebSphere,JBoss的,在Weblogic
等)(下载)
3.Eclipse的3.2.x中,它上面的(下载)
4.Spring3.0 MVC JAR文件:(下载)。
以下是此应用程序所需的JAR文件的清单。
o commons-logging-1.0.4.jar
o jstl-1.2.jar
o org.springframework.asm - 3.0.1.RELEASE - A.jar
o org.springframework.beans - 3.0.1.RELEASE - A.jar
o org.springframework.context - 3.0.1.RELEASE - A.jar
o org.springframework.core - 3.0.1.RELEASE - A.jar
o org.springframework.expression - 3.0.1.RELEASE - A.jar
o org.springframework.web.servlet - 3.0.1.RELEASE - A.jar
o org.springframework.web - 3.0.1.RELEASE - A.jar
请注意,根据Spring MVC的当前版本,上述jar文件的版本号可能会改变。
我们的目标
我们的目标是创建一个基本的Spring MVC应用中使用最新的3.0版本。
将会有一个索引页,它会显示一个链接”打招呼”给用户。
点击此链接,用户将被重定向到另一页打招呼,它会显示一条消息的”Hello World,Spring3.0!”。
入门
让我们开始我们的第一个Spring3.0基于MVC的应用程序。
打开Eclipse转到文件- >新建- >项目,然后选择动态Web项目中的新建项目向导屏幕。
选择动态Web项目后,按”下一步”“。
写项目名称。
例如Spring3MVC。
一旦做到这一点,选择目标运行时环境(如Apache Tomcat的V6.0)。
这是在Eclipse环境中运行的项目。
在此之后按下Finish。
一旦该项目被创建,您可以在Project Explorer中看到它的结构。
现在的WebContent所有所需的JAR文件>的WEB - INF> lib文件夹中复制。
创建此文件夹,如果它不存在。
Spring控制器类
我们需要一个Spring MVC控制器类,将处理该请求,并显示”Hello World”消息。
为此,我们将创建一个包net.viralpatel.spring3.controller的源文件夹中。
这个包将包含控制器文件。
创建一个类叫做HelloWorldController net.viralpatel.spring3.controller包并复制到它下面的内容。
文件:net.viralpatel.spring3.controller.HelloWorldController
package net.viralpatel.spring3.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class HelloWorldController {
@RequestMapping(“/hello”)
public ModelAndView helloWorld() {
String message = “Hello World, Spring 3.0!”;
return new ModelAndView(“hello”, “message”, message);
}
}
请注意,我们已经注明HelloWorldController类@Controller和7号线和10 @RequestMapping(“/hello”) 当春扫描我们的包,将其识别为一个处理请求的控制器bean这个bean。
@RequestMapping注解告诉Spring,这个控制器应该处理所有请求/ URL路径打招呼开始。
这包括/hello/*和/hello.html 。
在HelloWorld()方法返回ModelAndView对象。
ModelAndView对象,试图解决一个名为”Hello”
和数据模型是被传递回浏览器,所以我们可以在JSP访问数据视图。
逻辑视图名称解析
为”/WEB-INF/jsp/hello.jsp”我们将讨论这在短期内如何的”Hello”,这是在ModelAndView对象返回的逻辑名称映射到路径/ WEB-INF/jsp/hello.jsp。
ModelAndView对象还包含了一个关键的”消息”和价值的”Hello World,Spring3.0!”的消息。
这是数据,我们通过我们的观点。
通常情况下,这将是一个价值形式的Java bean将包含要显示的数据我们认为对象。
在这里,我们只是传递一个字符串。
这样的观点:创建JSP
要显示Hello World消息,我们将创建一个JSP。
请注意,这个JSP是创建文件夹/ WEB-INF/jsp。
创建hello.jsp下WEB-INF/jsp目录,并复制以下内容进去。
文件:WEB-INF/jsp/hello.jsp
<html>
<head>
<title>Spring 3.0 MVC Series: Hello World - </title>
</head>
<body>
${message}
</body>
</html>
上面的JSP只显示一条消息,使用表达式${message} 。
请注意,”消息”的名称,我们在设置一个消息字符串ModelAndView对象。
同时,我们也将需要一个index.jsp文件,这将是我们的应用程序的入口点。
创建一个WebContent
文件夹下的文件在您的项目并复制以下内容的index.jsp。
文件的WebContent / index.jsp的
<html>
<head>
<title>Spring 3.0 MVC Series: Index - </title>
</head>
<body>
<a href=“hello.html”>Say Hello</a>
</body>
</html>
Spring MVC的映射Web.xml中
正如在以前的文章(Spring3.0 MVC)讨论,Spring MVC应用的切入点将是在部署描述符(web.xml)中定义的Servlet。
因此,我们将定义在web.xml中的一个条目
org.springframework.web.servlet.DispatcherServlet
org.springframework.web.servlet.DispatcherServlet类。
打开web.xml文件,该文件是在WEB - INF文件夹,并复制粘贴下面的代码。
文件:WEB-INF/web.xml中
<?xml version=“1.0” encoding=“UTF-8”?>
<web-app xmlns:xsi=“/2001/XMLSchema-instance”
xmlns=“/xml/ns/javaee”
xmlns:web=“/xml/ns/javaee/web-app_2_5.xsd”
xsi:schemaLocation=“/xml/ns/javaee
/xml/ns/javaee/web-app_2_5.xsd”
id=“WebApp_ID” version=“2.5”>
<display-name>Spring3MVC</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
</web-app>
上面的代码将在web.xml中映射URL模式*. HTML的DispatcherServlet。
另外请注意,我们已经定义作为欢迎文件的index.jsp。
这里有一点要注意<servlet-name>标签在web.xml中的servlet的名称。
DispatcherServlet的初始化后,它会查找一个文件名[servlet-name]-servlet.xml Web应用程序的WEB - INF文件夹中。
在这个例子中,该框架将称为文件spring-servlet.xml寻找。
Spring配置文件
The Spring - servlet.xml中创建一个文件在WEB - INF文件夹,并复制到它下面的内容。
文件:WEB-INF/spring-servlet.xml
<?xml version=“1.0” encoding=“UTF-8”?>
<beans xmlns=“/schema/beans”
xmlns:xsi=“/2001/XMLSchema-instance”
xmlns:p=“/schema/p”
xmlns:context=“/schema/context”
xsi:schemaLocation=“/schema/beans
/schema/beans/spring-beans-3.0.xsd
/schema/context
/schema/context/spring-context-3.0.xsd”> <context:component-scan
base-package=“net.viralpatel.spring3.controller” />
<bean id=“viewResolver”
class=“org.springframework.web.servlet.view.UrlBasedViewResolver”>
<property name=“viewClass”
value=“org.springframework.web.servlet.view.JstlView” />
<property name=“prefix” value=“/WEB-INF/jsp/” />
<property name=“suffix” value=“.jsp” />
</bean>
</beans>
在上面的XML配置文件,我们已经定义了一个标记<context:component-scan>。
这将允许Spring 载入net.viralpatel.spring3.controller从包中的所有组件和它的所有子包。
这将载入我们
HelloWorldController类。
另外,我们定义一个bean viewResolver 。
这个bean将解决意见,并添加前缀字符串/ WEB-INF/jsp /以及后缀。
JSP在ModelAndView的观点。
请注意,我们已经在我们的HelloWorldController类,返回一个ModelAndView对象的视图名称的”Hello”。
这将是解决路径/ WEB-INF/jsp/hello.jsp。
这是所有Folks
您可能需要运行的应用程序现在看到的结果。
我假设你已经在Eclipse中配置Tomcat的。
所有您需要做的:
从”窗口”>“显示视图”>“服务器打开服务器视图。
在此视图中右键单击并选择New> Server,并添加您的服务器的详细信息。
要运行该项目,从Project Explorer中的项目名称上点击右键并选择>运行在服务器上运行(快捷键:ALT + SHIFT + X,R)
下载源代码
点击这里下载源代码(9.05kb)
继续
在本教程中,我们创建了一个小型的Hello World应用程序,使用Spring 3.0 MVC框架。
此外,我们了解了Spring的配置和喜欢不同@Controller @ @RequestMapping RequestMapping的。
在下一篇文章中,我们将看到它是多么容易使用Spring 3.0的MVC来处理表单数据。
Spring3 MVC:在Spring 3.0 MVC的处理形式
Spring3.0 MVC系列的第3部分。
在以前的文章中,我们创建了一个在Spring MVC的Hello World 应用程序。
我们俯身如何在web.xml中配置Spring MVC中,如何使用不同的注释,如@控制器,@ RequestMapping的等在这篇文章中,让我们来看看如何处理在Spring 3.0 MVC的形式。
我们将利用我们在以前的文章中创建一个基本参考,并添加在它的形式的功能框架。
另外,我们创建的应用程序将是一个联系人管理器应用程序。
我们的目标
我们的目标是创建基本的联系人管理器应用程序。
这个应用程序将有一个表格,从用户的详细联系方式。
现在我们将只打印在日志中的细节。
我们将学习如何捕捉在Spring3 MVC的表单数据。
入门
让我们添加的接触形式,以Spring3 MVC Hello World应用程序。
打开index.jsp文件,并改变它,以下列:
文件的WebContent / index.jsp的
<jsp:forward page=“contacts.html”></jsp:forward>
上面的代码将重定向用户contacts.html页。
查看- contact.jsp
创建一个JSP文件,将显示联系表格给我们的用户。
文件:/的WebContent / WEB - INF / JSP / contact.jsp
<%@taglib uri=“/tags/form” prefix=“form”%>
<html>
<head>
<title>Spring 3 MVC Series - Contact Manager</title>
</head>
<body>
<h2>Contact Manager</h2>
<form:form method=“post” action=“addContact.html”>
<table>
<tr>
<td><form:label path=“firstname”>First Name</form:label></td>
<td><form:input path=“firstname” /></td>
</tr>
<tr>
<td><form:label path=“lastname”>Last Name</form:label></td>
<td><form:input path=“lastname” /></td>
</tr>
<tr>
<td><form:label path=“lastname”>Email</form:label></td>
<td><form:input path=“email” /></td>
</tr>
<tr>
<td><form:label path=“lastname”>Telephone</form:label></td>
<td><form:input path=“telephone” /></td>
</tr>
<tr>
<td colspan=“2”>
<input type=“submit” value=“Add Contact”/>
</td>
</tr>
</table>
</form:form>
</body>
</html>
在这里,我们在上面的JSP显示的形式。
请注意的形式提交给addContact.html页。
在Spring3添加的表格和控制器
现在我们将添加在The Spring 3的逻辑显示的形式,并获取它的值。
为此,我们将创建两个Java文件。
首先Contact.java这只不过是形式显示/检索从屏幕上的数据和ContactController.java ContactController.java这是Spring的控制器类。
文件:net.viralpatel.spring3.form.Contact
package net.viralpatel.spring3.form;
public class Contact {
private String firstname;
private String lastname;
private String email;
private String telephone;
//.. getter and setter for all above fields.
}
上述文件是从屏幕上的数据的接触形式持有。
请注意,我没有表现出getter和setter方法。
您可以按ALT + SHIFT + S,R pressiong这些方法产生。
文件:net.viralpatel.spring3.controller.ContactController
package net.viralpatel.spring3.controller;
import net.viralpatel.spring3.form.Contact;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView;
@Controller
@SessionAttributes
public class ContactController {
@RequestMapping(value = “/addContact”, method = RequestMethod.POST)
public String addContact(@ModelAttribute(“contact”)
Contact contact, BindingResult result) {
System.out.println(“First Name:” + contact.getFirstname() +
“Last Name:” + contact.getLastname());
return “redirect:contacts.html”;
}
@RequestMapping(“/contacts”)
public ModelAndView showContacts() {
return new ModelAndView(“contact”, “command”, new Contact());
}
}
在上面的控制器类,请注意,我们已经创建了两个请求映射/联系人/ addContact的方法。
方法showContacts()时将调用用户对一个URL contacts.html的请求。
这种方法将呈现一个模型,名为”接触”。
请注意ModelAndView ModelAndView对象,我们已经通过一个名为”命令”空白的联系对象。
Spring框架预计name命令的对象,如果您使用
在你的JSP文件。
另外请注意,addContact()方法,我们有注明此RequestMapping的,并通过一个属性的方法
=“RequestMethod.POST”。
因此,该方法将被调用,只有当用户生成一个POST方法请求URL / addContact.html。
我们已经注明@ModelAttribute与标注的参数联系。
这将结合从请求对象联系的数据。
在此方法中,我们只印的名字和姓氏值和重定向的视图cotnacts.html。
这是所有Folks
现在的形式完成。
只要运行在Eclipse应用程序由pression ALT + SHIFT + X,R。
它将显示的联系表格。
只需输入视图的值,然后按添加按钮。
一旦你按下按钮,它会打印SYSOUT日志的名字和姓氏。
下载源代码
点击这里下载源代码(7.43kb)
在这篇文章中,我们将学习如何创建一个表单,使用The Spring 3 MVC,并显示在JSP。
此外,我们学会了如何检索使用ModelAttribute注解的形式值。
在下一节,我们将通过在Spring3 MVC的表单验证和不同的数据转换方法。
Spring 3 MVC: Tiles Plugin Tutorial with Example in Eclipse
Spring3.0 MVC系列的第4部分。
在以前的文章中,我们看到了如何创建使用Spring MVC的表单,并显示在JSP。
同时,我们也了解注解@ModelAttribute 。
在这一部分,我们将讨论关于Tiles框架和它与Spring 3.0 MVC的集成。
我们将添加Tiles Support
支持我们的HelloWorld Spring应用程序,我们在前面部分中创建的。
我强烈建议你去通过以前的文章中和下载我们的示例应用程序的源代码。
Tiles Support2
如今,网站一般分为可重复使用的模板正在呈现不同的网页之间的的。
例如,一个网站中包含的页眉,页脚,菜单等项目仍然通过了该网站相同,并给它一个共同的外观和感觉。
这是很难很难的代码在每一个网页,如果以后需要改变是不是所有的页面需要修改。
因此,我们使用模板化机制。
我们创建一个共同的页眉,页脚,菜单页,其中包括在每一页。
Tiles Support插件允许模板和组件。
事实上,这两种机制是相似的:你定义页面的某些部分(a ”Tile”)组装建立另一部分或整页。
A部分参数,使动态内容,并且可以在Java语言中的一种方法。
Tiles是用来保持一致的外观和感觉整个Web应用程序的所有网页模板系统。
增加模板的可重用性和减少代码重复。
是指在一个中央配置文件的网站的一个共同的布局,这种布局可以延长Web应用程序的所有网页。
我们的应用程序布局
我们的目标是我们的Spring3 HelloWorld应用程序添加页眉,页脚和菜单。
以下将是相同的布局。
所需的jar文件
为了增加Tiles Support到我们Spring3的应用程序的支持,我们将需要几个jar文件。
以下是在我们的例子中的JAR名单。
在WEB-INF/lib文件夹中添加这些JAR。
在上面的列表中突出显示的jar文件要在Tiles Support一体化项目增添了新的罐子。
在Spring MVC的配置Tiles框架
要配置Tiles,an entry for bean TilesConfigure has to be made in spring-servlet.xml。
打开WEB - INF文件夹的Spring- servlet.xml中之间添加以下代码<beans> </beans>标记。
文件:/的WebContent / WEB - INF /Spring- servlet.xml中
<bean id=“viewResolver”
class=“org.springframework.web.servlet.view.UrlBasedViewResolver”>
<property name=“viewClass”>
<value> org.springframework.web.servlet.view.tiles2.TilesView </value> </property>
</bean>
<bean id=“tilesConfigurer”
class=“org.springframework.web.servlet.view.tiles2.TilesConfigurer”>
<property name=“definitions”>
<list>
<value>/WEB-INF/tiles.xml</value>
</list>
</property>
</bean>
输入配置文件/ WEB-INF/tiles.xml是通过在上面的bean定义的参数。
这个文件包含了我们的Web 应用程序的Tiles定义。
在WEB - INF文件夹,复制下面的代码创建的文件tiles.xml。
文件:的WebContent / WEB - INF文件/ tiles.xml
<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass">
<value>
org.springframework.web.servlet.view.tiles2.TilesView
</value>
</property>
</bean>
<bean id="tilesConfigurer"
class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/tiles.xml</value>
</list>
</property>
</bean>
这里,tiles.xml我们定义一个模板base.definition。
此布局包含的头,标题,身体,菜单和页脚等属性。
布局是那么的联系页面的扩展和新的定义。
我们已经覆盖默认的布局,并改变了机构和标题的内容。
创建视图- JSP
我们将定义为我们的web应用在所谓的layout.jsp一个JSP文件的模板。
此模板将包含网页的不同部分(页眉,页脚,菜单等)。
创建4个新的JSP文件layout.jsp,header.jsp中,menu.jsp和footer.jsp 和复制以下内容在他们每个人。
文件的WebContent / WEB - INF / JSP / layout.jsp
<%@ taglib uri=“/tags-tiles” prefix=“tiles”%>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”
“/TR/html4/loose.dtd”>
<html>
<head>
<meta http-equiv=“Content-Type” content=“text/html; charset=UTF-8”>
<title><tiles:insertAttribute name=“title” ignore=“true” /></title>
</head>
<body>
<table border=“1” cellpadding=“2” cellspacing=“2” align=“center”>
<tr>
<td height=“30” colspan=“2”><tiles:insertAttribute name=“header” />
</td>
</tr>
<tr>
<td height=“250”><tiles:insertAttribute name=“menu” /></td>
<td width=“350”><tiles:insertAttribute name=“body” /></td>
</tr>
<tr>
<td height=“30” colspan=“2”><tiles:insertAttribute name=“footer” />
</td>
</tr>
</table>
</body>
</html>
文件的WebContent / WEB - INF / JSP / header.jsp中
<h1>Header</h1>
文件的WebContent / WEB - INF / JSP / menu.jsp
<p>Menu</p>
文件的WebContent / WEB - INF / JSP / footer.jsp
<p>Copyright © </p>
这是所有Folks
在Eclipse中编译和执行应用程序和看到的标题,菜单和页脚是正确运用。
下载源代码
点击这里下载源代码(8.88kb)。
今天,我们看到了我们如何使用Spring MVC应用程序配置Tiles框架。
我们在bean定义中使用org.springframework.web.servlet.view.tiles2.TilesConfigurer类”定义的Tiles Support配置文件。
在接下来的部分我们将讨论有关国际化/本地化和增加其在Spring3 MVC的支持。
我希望你喜欢这篇文章。
随意张贴您的查询,并在注释部分的意见。
Spring3 MVC:国际化和本地化教程示例
Spring3.0 MVC系列的第5部分。
在以前的文章中,我们看到了如何使用Spring MVC应用程序配置Tiles框架。
我们使用org.springframework.web.servlet.view.tiles2.TilesConfigurer bean定义的类定义Tiles Support的配置文件。
这个分裂我们的HelloWorld Spring MVC的应用部分,如页眉,页脚等。
在这一部分,我们将讨论有关国际化(I18N)和本地化(L10N)的在Spring 3.0 MVC。
我们将添加L10N我们的HelloWorld Spring应用程序,我们在本系列前面的教程中创建的i18n支持。
我强烈建议你去通过以前的文章中和下载我们的示例应用程序的源代码。
什么是国际化和本地化?
在计算,国际化和本地化是计算机软件,以适应不同的语言和地区差异的手段。
国际化是设计的软件应用程序,以便它可以适应在没有更改设计的情况下,以各种语言和地区的过程中。
本地化是适应一个特定的地区或语言的国际化软件加入区域设置特定的组件和翻译文本的过程。
这两个术语经常缩写为numeronyms I18N(其中18代表字母之间的第一次我在国际化的最后n)和本地化,由于长度的话。
L10N资本大号帮助,以区别于小写我在I18N。
我们的目标
我们的目标是到我们的Spring MVC应用添加国际化和本地化支持。
一旦完成,我们的应用程序看起来像。
我们将添加两个我们的应用程序语言支持:英语和德语。
根据用户的浏览器的区域设置,将选择适当的语言。
此外,用户将可以选择从右上角角落里的应用程序的语言。
消息Resouces文件
我们将创建两个属性的文件,其中将包含所有要在应用程序中显示的消息。
这些文件都保存在所谓的”资源”源文件夹。
创建一个在您的项目的源文件夹,右键单击项目名称>“新建”>“源文件夹和名称资源。
创建两个文件messages_en.properties和messages_de.properties在此文件夹,并复制到它下面的内容。
文件:资源/ messages_en.properties
label.firstname=First Name
stname=Last Name
label.email=Email
label.telephone=Telephone
label.addcontact=Add Contact
label.menu=Menu
label.title=Contact Manager
label.footer=©
文件:资源/ messages_de.properties
label.firstname=Vorname
stname=Familiename
label.email=Email
label.telephone=Telefon
label.addcontact=Addieren Kontakt
label.title=Kontakt Manager
label.menu=Menü
label.footer=©
在Spring MVC的配置国际化(i18n)/本地化(localization)
现在,我们已经创建了信息资源的属性,为我们的应用程序。
我们需要在Spring配置文件中声明这些文件。
我们将使用类
org.springframework.context.support.ReloadableResourceBundleMessageSource定义消息资源。
此外,请注意,我们将为您提供一个功能,用户将能够选择应用程序的语言。
这是通过使用
org.springframework.web.servlet.i18n.LocaleChangeInterceptor类。
LocaleChangeInterceptor类将截获的语言环境中的任何变化。
这些变化,然后将其保存在未来要求的Cookie
org.springframework.web.servlet.i18n.CookieLocaleResolver
org.springframework.web.servlet.i18n.CookieLocaleResolver类将被用来存储在cookie中的语言环境的变化。
Spring- servlet.xml文件中添加下面的代码。
文件:的WebContent / WEB - INF文件/The Spring - servlet.xml中
<bean id=“messageSource”
class=“org.springframework.context.support.ReloadableResourceBundleMessageSource”> <property name=“basename” value=“classpath:messages” />
<property name=“defaultEncoding” value=“UTF-8”/>
</bean>
<bean id=“localeChangeInterceptor”
class=“org.springframework.web.servlet.i18n.LocaleChangeInterceptor”>
<property name=“paramName” value=“lang” />
</bean>
<bean id=“localeResolver”
class=“org.springframework.web.servlet.i18n.CookieLocaleResolver”>
<property name=“defaultLocale” value=“en”/>
</bean>
<bean id=“handlerMapping”
class=“org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping”> <property name=“interceptors”>
<ref bean=“localeChangeInterceptor” />
</property>
</bean>
注意:在上述配置中,我们已经定义到CLASSPATH messageSource bean 基名属性:消息。
受此影响,Spring,将确定的消息资源讯息:将被用于这个应用程序。
更改视图- 的JSP
现在,因为我们已经创建了两个消息资源文件和配置在Spring MVC,我们将在JSP文件中使用这些消息。
打开我们的演示应用程序的所有JSP文件,下面的代码更新。
文件的WebContent / WEB - INF / JSP / header.jsp中
<%@taglib uri="/tags" prefix="spring"%>
<h3><spring:message code="label.title"/></h3>
<span style="float: right">
<a href="?lang=en">en</a>
|
<a href="?lang=de">de</a>
</span>
文件的WebContent / WEB - INF / JSP / menu.jsp
<%@taglib uri="/tags” prefix="spring”%>
<p><spring:message code="label.menu”/></p>
文件的WebContent / WEB - INF / JSP / footer.jsp
<%@taglib uri="/tags" prefix="spring"%>
<spring:message code="label.footer"/>
文件的WebContent / WEB - INF / JSP / contact.jsp
<%@taglib uri="/tags" prefix="spring"%> <%@taglib uri="/tags/form" prefix="form"%> <html>
<head>
<title>Spring 3 MVC Series - Contact Manager</title>
</head>
<body>
<form:form method="post" action="addContact.html">
<table>
<tr>
<td><form:label path="firstname"><spring:message
code="label.firstname"/></form:label></td>
<td><form:input path="firstname" /></td>
</tr>
<tr>
<td><form:label path="lastname"><spring:message
code="stname"/></form:label></td>
<td><form:input path="lastname" /></td>
</tr>
<tr>
<td><form:label path="lastname"><spring:message
code="label.email"/></form:label></td>
<td><form:input path="email" /></td>
</tr>
<tr>
<td><form:label path="lastname"><spring:message
code="label.telephone"/></form:label></td>
<td><form:input path="telephone" /></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="<spring:message code="label.addcontact"/>"/> </td>
</tr>
</table>
</form:form>
</body>
</html>
请注意,在上面的JSP中,我们<spring:message> <spring:message>标签来显示从资源包的消息。
这里,我们必须注意的一件事情是,在header.jsp中的文件,我们已经指定了两个环节,选择语言。
LANG =链接设置请求参数?当用户点击这个链接。
注意,Spring标识使用此请求参数LocaleChangeInterceptor拦截和相应改变的地方。
另外请注意,在配置LocaleChangeInterceptorThe Spring - servlet.xml文件中,我们已经指定为”lang”property ” paramName”
<property name="paramName" value="lang" />
因此Spring框架将寻找所谓的”郎”从请求参数。
这是所有Folks
这是相当多:)我们只是增加了国际化和本地化支持,我们的演示Spring 3.0 MVC应用程序中。
所有你所要做的的仅仅是执行在Eclipse的应用程序。
按Alt + Shift + X,R。