一、JstlView 视图
1、若项目中使用了 JSTL,则 SpringMVC 会自动把视图由 InternalResourceView 转为 JSTLView
(断点调试,将 JSTL 的 jar 包增加到项目中,视图解析器会自动修改为 JSTLView)
2、若使用 JSTL 的 fmt 标签则需要在 SpringMVC 的配置文件中配置国际化资源文件
3、若希望直接响应通过 SpringMVC 渲染的页面,可以使用 mvc:view-controller
标签实现
二、使用 JstlView
方式一:导包导入了 jstl 的时候会自动创建一个 jstlView,可以快速方便的支持国际化;
方式二:在 InternalResourceceViewResolver 中添加配置
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
三、JstlView 快捷的国际化功能
支持国际化:
JavaWeb 国际化步骤:
- 得到一个 Locale 对象
- 使用 ResourceBundle 绑定国际化资源文件
- 使用 ResourceBundle.getString("key"); 获取国际化配置文件中的值
- web 页面的国际化,fmt 标签库来做;
使用 JstlView 后:
- 让 Spring 管理国际化资源文件
- 直接去页面使用
<fmt:message>
1、配置国际化文件
i18n_en_US.properties
username=USERNAME
password=PASSWORD
loginBtn=SUBMIT
---
i18n_zh_CN.properties
username=用户名
password=密码
loginBtn=登录
2、在 springmvc.xml 中配置 jstlView 视图
<!--可以导入 JSTL 包,fmt:message-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"></property>
<property name="suffix" value=".jsp"></property>
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
</bean>
<!-- 让SpringMVC管理国际化资源文件,配置一个资源文件管理器 id 必须是messageSource -->
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<!-- basename 指定基础名-->
<property name="basename" value="i18n"></property>
</bean>
3、添加页面链接
<a href="/toLoginPage">去登录</a><br>
4、添加后端控制器
@RequestMapping(value = "/toLoginPage")
public String toLoginPage() {
System.out.println("toLoginPage...");
return "login";
}
5、跳转到登陆页面
成功页面(/WEB-INF/views/success.jsp)使用 fmt 标签库
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>登录页</title>
</head>
<body>
<form action="">
<fmt:message key="username" /><input><br>
<fmt:message key="password" /><input><br>
<input type="submit" value='<fmt:message key="loginBtn" />'>
</form>
</body>
</html>
三、源码跟踪
jstl 标签 jar 包(断点调试,这时的 View 对象就是 JstlView)

注意:
① 国际化一定要经过 SpringMVC 的视图解析流程,不能直接由 Tomcat 运行,SpringMVC 会创建一个 JstlView,快捷的支持国际化功能;
② 也不能使用 forward 前缀,使用 forward 进行转发,会使用 InternalResourceView,并且没有国际化信息;

只有用了 createView() 方法才会把 locale 国际化信息传递进去。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战