>>分享流行的Java框架以及开源软件,对孙卫琴的《精通Spring:Java Web开发技术详解》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 20394 个阅读者 刷新本主题
 * 贴子主题:  Spring MVC的国际化 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2020-06-23 11:02:45     消息  查看  搜索  好友  邮件  复制  引用

< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />
说明:在这里简单实现Spring MVC国际化。{这里用到注解,请参考Spring MVC注解Demo}
步骤:
①     创建一个demo的web工程,加入相应的jar包,配置web.xml文件,同样可以参照Spring MVC注解Demo;web.xml文件的代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <servlet>
        <servlet-name>demo</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-val>/WEB-INF/config/spring/*.xml</param-val>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>demo</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

说明:/WEB-INF/config/spring/*.xml表示在此路径下的所有已.xml的Spring配置文件都会在初始化时加载。
②     在/WEB-INF/config/spring路径下创建一个Spring-common.xml文件,配置Spring相关信息,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="  
    http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/mvc  
    http://www.springframework.org/schema/beans/spring-mvc-3.0.xsd    
    http://www.springframework.org/schema/context  
    http://www.springframework.org/schema/context/spring-context-3.0.xsd">
    <!-- 控制器所在的包{添加注解的Controller} -->
    <context:component-scan base-package="com.teana.controller" />
    <!-- 国际化支持 -->
    <bean id="messageSource"class="org.springframework.context.support.ResourceBundleMessageSource">
        <property name="basename">
            <val>messages</val>
        </property>
    </bean>
    <!-- jsp文件的前缀和后缀 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" val="/WEB-INF/jsp/" />
        <property name="suffix" val=".jsp" />
    </bean>
</beans>

③     在src目录下创建Controller,名称为TestController.java,包结构为com.teana.controller,其代码如下:

package com.teana.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.ReqstMapping;
import org.springframework.web.bind.annotation.ReqstMethod;

@Controller
@ReqstMapping("/teana")
p lic class TestController
{
       @ReqstMapping("/start/{name}/{age}")
       p lic String start(@PathVariable("name") String name,
                     @PathVariable("age") int age)
       {
              System.out.println("姓名:" + name + ", 年龄:" + age);
              return "start";
       }
}

④     在工程的src目录下创建国际化资源文件分别为messages.properties、messages_en_US.properties、messages_cn_ZH.properties文件,代码如下:

messages.properties的代码:
title=Spring MVC Demo{i18n}
welcome=Welcome to prod? professional DEMO S?SS are annotated MVC\!
messages_en_US.properties的代码:
title=(US)Spring MVC Demo{i18n}
welcome=(US)Welcome to prod? professional DEMO S?SS are annotated MVC\!
messages_cn_ZH.properties的代码:
title=Spring MVC Demo{\国\际\化}
welcome=\欢\迎\来\到SPRING MVC \注\?MO S?SS\?01

⑤     根据Spring-common.xml配置文件和TestController.java文件配置在WEB-INF/jsp/路径下配置start.jsp文件代码如下:

<%@ page lang ge="java" import="java.util.*" pageEncoding="UTF-8"%>
<!-- 使用Spring标签 -->
<%@taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<!DOCTYPE HTML P LIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title><spring:message code="title" /></title>
  </head>
  <body>
  <center>
    <br/><br/>
    <h2 style="color:red;"><spring:message code="welcome" /></h2>
  </center>
  </body>
</html>

最后我们在浏览器输入:http://localhost:8080/demo/teana/start/linda/22.html 在不同的local环境下即可看到效果。
总结:
用Spring做国际化时经常会报:
org.springframework.context.NoS hMessageException: No message found under code 'title' for locale 'zh_CN'.
这样的错误。请注意以下几点:
① 新建资源文件时,尽量右击项目新建文件,来增加.
② 属性文件名的写法:
           messages_zh_CN.properties  (中文)
           messages_en_US.properties  (英文)
③ 配置messageSource这个bean(注意:一定是messageSource不是messageResource ,这是Spring规定的)例如:

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
        <property name="basename">
         <list>
            <value>messages</value>
         </list>
        </property>
</bean>

程序猿的技术大观园:www.javathinker.net

[这个贴子最后由 flybird 在 2020-06-24 08:54:00 重新编辑]
  Java面向对象编程-->多线程(下)
  JavaWeb开发-->访问数据库(Ⅱ)
  JSP与Hibernate开发-->通过JPA API检索数据
  Java网络编程-->基于MVC和RMI的分布式应用
  精通Spring-->Vue Router路由管理器
  Vue3开发-->Vue简介
  一篇文章让你彻底了解什么叫Netty!
  MyBatis+Spring 事务管理
  几种常见的MAVEN仓库地址
  WebFlux 响应式编程初体验
  Spring MVC服务器端推送的两种方式
  springMVC:HandlerInterceptor拦截器的使用
  探讨通过Feign配合Hystrix进行调用时异常的处理
  从零搭建一个基于 ELK 的日志、指标收集与监控系统
  SpringCloud微服务框架搭建
  如何实现Git服务间同步
  【Web服务开发】基于Java开发代驾定位系统,2天完成脚手架
  Spring Boot集成EHCache实现缓存机制
  Zabbix后端存储ES的优化实践
  阿里面试官问我:如何用Redis设计秒杀系统?我的回答让他比起...
  Axis、Axis2和CXF比较
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。