在Java web app中设置当前请求的区域设置
在我的Java web应用程序中,我想为当前请求设置语言环境,并在请求期间使其在整个应用程序中可用。这意味着无论代码在哪个类或方法中,区域设置都是可用的。我也不想从客户端的浏览器中检索语言环境。它是从内部数据库检索的 无法使用Locale.setDefault,因为它适用于所有请求。根据为发出请求的客户端存储的区域设置,必须为每个客户端请求设置区域设置 单例也不起作用,因为这会使所有请求都是一样的 一种解决方案是在调用doGet或doPost时简单地检索区域设置,并将其从一个方法传递到另一个方法。但这真的很难看在Java web app中设置当前请求的区域设置,java,servlets,locale,Java,Servlets,Locale,在我的Java web应用程序中,我想为当前请求设置语言环境,并在请求期间使其在整个应用程序中可用。这意味着无论代码在哪个类或方法中,区域设置都是可用的。我也不想从客户端的浏览器中检索语言环境。它是从内部数据库检索的 无法使用Locale.setDefault,因为它适用于所有请求。根据为发出请求的客户端存储的区域设置,必须为每个客户端请求设置区域设置 单例也不起作用,因为这会使所有请求都是一样的 一种解决方案是在调用doGet或doPost时简单地检索区域设置,并将其从一个方法传递到另一个方法
如果有一种方法可以将区域设置附加到当前请求对象,并且能够以某种方式访问应用程序中任何位置的请求对象实例,则是更好的解决方案。我不知道这是否可行。我认为有三种方法可以做到这一点
ThreadLocal
。您分配的任何内容对于特定线程(请求)都是有限和有效的。一定要打扫卫生李>
我喜欢第三种方法。但是如果我在一个请求中产生任何线程,我必须创建另一个ThreadLocal(副本),或者如果可能,引用原始ThreadLocal。您知道这是否可行吗?如果您正在生成线程,则需要将信息传递给该线程。