在某一些项目中须要界面展现的国际化(i18n),即根据用户需求显示不一样的语言,在jsp上有多个实现方案,可是对于jstl的方案网上资料不是很齐全,这里我给出一个使用jstl标签库实现的例子,演示代码能够在这里找到。 html
一、准备 java
jstl标签库jar包 git
相应语言资源的properties文件,推荐使用propertieseditor编辑,有eclipse插件也有单独编辑器 session
二、开发步骤 eclipse
为了演示开发过程,这里准备一个用户登陆的程序,代码在这里http://git.oschina.net/songxinqiang/Samples。 jsp
登录页面首先判断sesion里面有没有设置语言,没有的话添加默认语言 编辑器
<c:if test="${empty sessionScope.lan}"> <c:set var="lan" value="en_US"/> </c:if>而后页面总体都放在资源库标签里面
<fmt:bundle basename="${lan}"> <html> …………………… </html> </fmt:bundle>而后须要显示内容的地方用这个标签
<fmt:message key="username" />这里的key值须要在资源文件里面定义,定义的格式为
username=用户名
服务端须要将用户选择的语言存入session 工具
String lan=request.getParameter("lan"); request.getSession().setAttribute("lan", lan);这样就能够根据用户须要显示不一样语言了,固然是要先准备好资源文件
三、注意 编码
资源文件使用的是properties文件,直接写入中文是不行的,须要转换为unicode的代码, spa
username=用户名 这句其实是这样的 username=\u7528\u6237\u540d上面的是我使用propertieseditor编辑时的效果,他能够自动转换为unicode编码。
固然若是不想用这个编辑器,也能够先写成中文,而后用jdk自带的工具转换,这个能够在网上找到。
资源文件要放在类根目录哦,basename就是指的资源文件的文件名
四、总结
使用jstl标签库实现国际化很是方便,可是须要在项目开发基本完成后进行,由于须要对项目中全部须要进行国际化显示的内容进行资源配置,若是在初期就进行的话,会至关麻烦。
若有不足之处,欢迎你们进行指正。