在Ubuntu上实现JSP国际化
在Ubuntu系统上实现JSP应用的国际化功能,需要安装Java开发工具包和Tomcat服务器,并设置Tomcat的URI编码为UTF-8以防乱码。然后按照不同语言创建各自的messages.properties资源文件,最后在JSP页面中引入JSTL的fmt标签库,该标签能自动检测浏览器语言并显示对应的文本内容。
在Ubuntu上做JSP国际化,其实并没有想象中那么复杂。整个过程无非是配置好环境、准备好资源文件,再在JSP页面里引用一下。下面就把具体步骤拆开来聊聊。

- 安装Java和Tomcat
这一步是基础,没什么可讨价还价的。先确认你的Ubuntu上有没有Java和Tomcat,如果没有,直接跑下面这两条命令就行:
sudo apt updatesudo apt install openjdk-11-jdksudo apt install tomcat9
装完之后,建议顺手检查一下版本,确保没问题再往下走。
- 配置Tomcat的URI编码
这个细节很容易被忽略,但如果不做,后面国际化可能出现乱码。打开/etc/tomcat9/server.xml,找到标签,在里面加上URIEncoding="UTF-8"属性。就像这样:
connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
配置完别忘了重启Tomcat才能生效。
- 创建国际化资源文件
这才是国际化的核心。在你的Web应用目录下,先建一个WEB-INF/classes文件夹(如果还没有的话)。然后在这个文件夹里,按照语言拆分子目录,比如en、zh、ja等等。每个子目录里放一个messages.properties文件,里面用键值对定义翻译文本。
举个,英文资源文件(en/messages.properties):
greeting=Hellowelcome=Welcome to our website
中文资源文件(zh/messages.properties):
greeting=你好welcome=欢迎访问我们的网站
注意文件编码必须用UTF-8,否则中文会变成乱码。可以用native2ascii工具转换一下,或者直接在IDE里设置。
- 在JSP页面中引用资源
这一步比较关键,需要引入JSTL的fmt标签库,然后通过设置当前区域,再用获取对应的文本。下面是一个完整的JSP示例:
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %><%@ page import="java.util.Locale" %><% Locale locale = request.getLocale(); if (locale.getLanguage().equals("zh")) { locale = new Locale("zh", "CN"); } else { locale = new Locale("en", "US"); } request.getSession().setAttribute(Locale.class.getName(), locale);%>
这里通过request.getLocale()拿到浏览器的语言偏好,然后手动指定对应的Locale对象。当然,更优雅的做法是写一个过滤器来自动处理区域切换,但对于入门来说,先这样跑通再说。
- 部署并验证
把整个Web应用打包或直接丢到Tomcat的webapps目录下,启动Tomcat,然后用浏览器访问。如果一切正常,你会看到页面文字根据浏览器语言自动切换——英文浏览器显示英文,中文浏览器显示中文。试试把浏览器的首选语言改成其他语言,页面也会跟着变。
当然,这只是一个基础版本的国际化实现。实际项目中你可能需要处理复数形式、带占位符的参数化文本,或者用过滤器全局管理区域设置。但不管怎么扩展,核心思路都是上面这几步:建好资源文件、在JSP中用fmt标签读取。搞懂了这些,后面再深入就轻松多了。
