• springMVC视图、视图解析器、国际化笔记


    先看视图解析的流程:

    Controller返回值  -》ModelAndView  -》 视图解析器 -》 视图

    下面的代码,form表单发起请求,Controller层通过ModelAndView返回,跳转到success.jsp 

     

     1. 视图View

    • InternalResourceView :将jsp后其他资源封装成一个视图。被视图解析器InternalResourceViewResolver默认使用
    • JstlView:InternalResourceView的子类。如果JSP中使用了JSTL的国际化标签,就需要使用该视图类

     JstlView 可以解析jstl实现国际化操作

    国际化:针对不同地区、不同国家,进行不同的显示

    JstlView国际化资源文件完成浏览器语言切换

     假如创建了三个用于储存字段的i18n.properties 文件,分别是默认语言,中文语言,英文语言。那么项目运行时会根据当前浏览器默认语言去对应的i18n.properties文件提取字段,如果有这个文件与字段就返回浏览器。为什么叫i18n???

     这个英文单词internationalization一共20个字母,去掉i和n就剩18个。所以叫i18n。以后国际化默认资源文件的名称就叫i18n,(base也可以)

    现在来创建资源文件:

    第一步导包

     创建资源文件,命名规则如下:

     资源文件名简介
    基名_en.properties所有英文语言的资源
    基名_en_US.properties针对美国地区、英文语言的资源
    基名_zh.properties所有的中文语言的资源
    基名_zh_CN.properties针对中国大陆的、中文语言的资源
    基名_zh_HK.properties针对中国香港的、中文语言的资源
    基名.properties默认资源文件。如果请求想要语言的资源文件不存在,将使用此资源文件。例如,如果是中国大陆地区用户,应该访问“基名_zh_CN.properties”,而如果不存在此文件,就会访问当前这个默认的“基名_.properties”

    Struts中国际化资源文件命名规则_wangxingguangwin的博客-CSDN博客https://blog.csdn.net/wangxingguangwin/article/details/84427664

    补充:上面文件名我写错了,是i18n_zh_CN,我写成CH了,难怪乱码

    以上有中文:

    设置properties内容转换为ASCII码。我使用的是IDEA,设置如下:


     接下来配置springmvc.xml加载资源文件

    注意那个UTF-8,必须配置,否则会乱码,并且必须用messageSource来命名id)

    1. <bean id="messageSource"
    2. class="org.springframework.context.support.ResourceBundleMessageSource">
    3. <property name="basename" value="myproperties.i18n"/>
    4. <property name="defaultEncoding" value="UTF-8"/>
    5. bean>

     basename属性


     success.jsp页面添加taglib标签

    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

    回顾以前taglib标准标签库core,如下, 

     

    现在使用格式化标签fmt,在success.jsp页面添加如下代码

     现在运行tomcat,直接访问这个success.jsp,是看不到数据的,我们mvc.xml配置文件中的messageSource介入时间点如下面流程图所示:

     由流程图,我们需要先定义 index.jsp,发起请求:

     controller转发

     success.jsp页面显示,

    
    

    fmt标签会根据key值将对应i18n文件的字段回填到标签里面,

    并且还会根据当前浏览器使用的语言选择调用哪个i18n文件,如此就实现了浏览器语言的切换。

    在去浏览器中改语言的设置,先用中文,显示结果就是中文,如下图

    ,用英语美国,显示结果就是:

     运行报错:

    java.lang.ClassNotFoundException: org.apache.jsp.index_jsp

    报错原因与解决办法:

     

     pom.xml如下:

    运行成功:

     

  • 相关阅读:
    SQL注入之 无列名注入 原理详解
    Spirng 痛苦源码学习(一)——总起spring(一)
    【网络安全】永恒之蓝实战 - Mac通过Metasploit攻击Server2008
    Oracle数据库中数据迁移的技巧
    Java异常
    [附源码]Python计算机毕业设计SSM家政服务预约小程序(程序+LW)
    【蓝桥杯】蓝桥杯双周赛第二场ABCD题
    vue-element-admin 集成框架设置中文语言
    Windows - RAID 5 服务搭建
    python爬虫开源项目代码基于Python实现的鲜花销售小程序
  • 原文地址:https://blog.csdn.net/m0_47010003/article/details/127630771