11月13日国际化的WEB开发培训日记

本文详细介绍了displayTag自定义标签的功能与设计思路,并演示了如何实现应用国际化,包括使用ResourceBundle管理多语言资源文件、获取浏览器地区设置及缓存问题。

讲解了displayTag这个开源的自定义标签的作用与设计思想,让大家自己写一个这样的示意程序,结果很糟糕!
让大家解释${x.name}的内部执行原理,再次复习讲解了迭代标签的编写细节。

讲解了什么是应用程序的国际化,复习了Locale对象和操作系统的Locale设置。讲解了ResourceBundle的资源包管理:

先创建messages.properties、messages_en.properties、messages_zh.properties、messages_zh_cn.properties等文件,每个文件中的内容即为文件名,介绍它们是一个资源包,然后编写java源程序(用缺省的Locale)去读取资源包中的内容,读取到的是zh_cn中的内容,将zh_cn改名为zh_cnx,再执行这个Java程序,读取到的是zh中的内容,将zh改名为zhx,读取的是默认文件中的内容。恢复原来所有的文件名,将源程序中的Locale设置ENGLISH,再执行这个程序,看到的是en中的内容,将en改为enx,提问后再执行(重点),看到的是zh_cn文件中的内容!解释原因,将操作系统的Locale改为英语,再执行,这时候为默认文件中的内容了。
对于中文资源文件中的内容,要用native2ascii工具进行转换,在使用中发现的一个问题:对于“你\好”,native2ascii不转其中的“\”,所以转换的结果为“\u4f60\\u597d”,最终导致读取properties文件中的内容时出现问题。appfuse中的displayTag_zh_CN.properties文件中的中文内容居然没有用native2ascii处理,真不知道是哪位国人提交的,看来对中文问题进行过深入研究的人可能还真不多!

接着讲解了WEB开发中的国际化问题,如何得到浏览器的Locale信息,properties文件的存放位置:ResourceBundle是去类装载器搜索的目录中查找,即去类的“根目录”下查找。

我提出一个问题:messages_zh_CN.properties最后的CN是否区分大小写,在使用JDK是,windows上不区分,linux上的情况怎样呢?
冯伟力实验:在tomcat下的jsp中只能读取messages_zh_CN.properties,而无法读取messages_zh_cn.properties文件,如果成功读取zh_CN文件后,再将zh_CN改为zh_cn不会有任何问题,这是因为jsp中缓存了zh_CN.properties文件中的内容,他修改jsp文件后重新访问,tomcat后台提示Webapp ClassLoader找不到zh_CN文件,然后重新加载整个Web应用程序和加载缺省的资源文件。
王涛实验:在tomcat下的jsp中能读取messages_zh_cn.properties文件,并且tomcat将一直缓存资源内容,即使删除zh_cn文件和修改jsp文件重新访问,也没有任何问题,除非重新启动tomcat。
我对冯伟立的建议:用getResourceAsStream方法读取一个资源文件,然后删除这个资源文件,看看访问效果。冯伟立报告的实验结果是:无论是否修改jsp文件,资源内容一直被缓存在类装载器中。

接着讲解了如何通过MessageFormat对象对字符串中的参数进行赋值,从MessageFormat的format方法中意外发现:数组能够作为一个对象传递,在方法内部再将这个对象强制转换成数组。

内容概要:本文深入探讨了Django REST Framework(DRF)在毕业设计中的高级应用与性能优化,围绕智能校园系统案例,系统讲解了DRF的核心进阶技术,包括高级序列化器设计、视图集定制、细粒度权限控制、查询优化、缓存策略、异步任务处理以及WebSocket实时通信集成。文章通过详细的代码示例,展示了如何利用DynamicFieldsModelSerializer实现动态字段返回、使用select_related和prefetch_related优化数据库查询、通过Celery实现异步任务、并集成Channels实现WebSocket实时数据推送。同时介绍了基于IP的限流、自定义分页、聚合统计等实用功能,全面提升API性能与安全性。; 适合人群:具备Django和DRF基础,正在进行毕业设计或开发复杂Web API的高校学生及初级开发者,尤其适合希望提升项目技术深度与系统性能的学习者。; 使用场景及目标:①构建高性能、可扩展的RESTful API,应用于智能校园、数据分析、实时监控等毕业设计项目;②掌握DRF高级技巧,如动态序列化、查询优化、缓存、异步任务与实时通信,提升项目竞争力;③优化系统响应速度与用户体验,应对高并发场景。; 阅读建议:此资源以实战为导向,建议读者结合代码逐项实践,重点理解性能优化与架构设计思路,同时动手搭建环境测试缓存、异步任务和WebSocket功能,深入掌握DRF在真实项目中的高级应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值