gpt4 book ai didi

java - 如何更改 Java Web 应用程序中的区域设置?

转载 作者:行者123 更新时间:2023-11-30 03:56:33 28 4
gpt4 key购买 nike

这就是我的 Servlet 中的 doGet() 方法:

protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) 
throws ServletException, IOException {
httpServletResponse.setLocale(new Locale("tr", "TR"));
System.out.println("Cookies being printed:");
for(Cookie cookie:httpServletRequest.getCookies()){
System.out.println(cookie.getName());
System.out.println(cookie.getValue());
}
}

我第一次使用 doGet 方法:

Cookies being printed:
locale
en

然后我刷新页面以再次调用它:

Cookies being printed:
JSESSIONID
A00EB65138C896FC282CE11EB20D1DD7
locale
en

这行似乎没有效果:

httpServletResponse.setLocale(new Locale("tr", "TR"));

我到底做错了什么?为什么我得到一个带有 locale=en 的 cookie?

这是一个非常简单的网络应用程序,我没有在应用程序的任何其他部分设置任何类型的 cookie 或任何内容。这已经是欢迎文件了。

最佳答案

设置 Cookie 和设置 Locale 不同。
CookieLocale 没有直接关系。

根据文档
javax.servlet.ServletResponse.setLocale(java.util.Locale loc) :

  • 它设置响应的区域设置。
  • 它设置特定于区域设置的字符编码。

如果尚未提交响应,则执行这些操作。

其中Cookie是在客户端浏览器环境中设置一些持久数据。

要设置 Cookie,我们首先创建一个 Cookie,将其添加到响应中,然后提交它。并且仅从同一客户端的下一个请求开始读取。除非这样,否则您无法读取刚刚设置为响应的 cookie。它在 Servlet 已收到的请求中不可用。

// to store cookie value in the format of 
// language + "_" + country + "_"
// + (variant + "_#" | "#") + script + "-" + extensions
String cookieValue_fullLength = new Locale( "tr", "TR" ).toString();
Cookie localeCookie_fl = new Cookie( "locale_fl", cookieValue_fullLength );
response.addCookie( localeCookie_fl );

// to store cookie value in the format of "language"
String cookieValue_Language = new Locale( "tr", "TR" ).getLanguage();
Cookie localeCookie_lang = new Cookie( "locale", cookieValue_Language );
response.addCookie( localeCookie_lang );

如果存在与“locale”同名的cookie,那么它将被覆盖。
如果您实现此功能,则当前设置为区域设置 "en" 的 cookie 将被覆盖。

收到新请求后,执行以下代码

for( Cookie cookie : httpServletRequest.getCookies() ) {
System.out.println( cookie.getName() + " - " + cookie.getValue() );
}

将在控制台上打印以下结果:

JSESSIONID - A00EB65138C896FC282CE11EB20D1DD7
locale - tr
locale_fl - tr_TR_TR_#u-nu-thai

locale_fl 的值仅作为示例显示。执行后检查是否正确。

关于java - 如何更改 Java Web 应用程序中的区域设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23027739/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com