Servlet笔记(18):国际化

news/2024/3/28 20:19:47/文章来源:https://blog.csdn.net/Zain_horse/article/details/129247213

三个概念

  • 国际化: 意义着一个网站提供不同版本的翻译成访问者的语言或国籍的内容。
  • 本地化: 意味着向网站添加资源,以使其适应特定的地理或文化区域。
  • 区域设置: 针对某个国家的某个地区的设置。

Servlet可以根据请求者的区域设置时区相应版本的网站,并根据当地的语言、文化和需求提供相应的网站版本,
request返回Locale对象

java.util.Locale request.getLocale();

检测区域设置

序号方法 & 描述
1String getCountry()
该方法以 2 个大写字母形式的 ISO 3166 格式返回该区域设置的国家/地区代码。
2String getDisplayCountry()
该方法返回适合向用户显示的区域设置的国家的名称。
3String getLanguage()
该方法以小写字母形式的 ISO 639 格式返回该区域设置的语言代码。
4String getDisplayLanguage()
该方法返回适合向用户显示的区域设置的语言的名称。
5String getISO3Country()
该方法返回该区域设置的国家的三个字母缩写。
6String getISO3Language()
该方法返回该区域设置的语言的三个字母的缩写。

GetLocale.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Locale;public class GetLocale extends HttpServlet{public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{// 获取客户端的区域设置Locale locale = request.getLocale();String language = locale.getLanguage();String country = locale.getCountry();// 设置响应内容类型response.setContentType("text/html");PrintWriter out = response.getWriter();String title = "检测区域设置";String docType ="<!doctype html public \"-//w3c//dtd html 4.0 " +       "transitional//en\">\n";out.println(docType +"<html>\n" +"<head><title>" + title + "</title></head>\n" +"<body bgcolor=\"#f0f0f0\">\n" +"<h1 align=\"center\">" + language + "</h1>\n" +"<h2 align=\"center\">" + country + "</h2>\n" +"</body></html>");}
} 

语言设置

DisplaySpanish.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Locale;public class DisplaySpanish extends HttpServlet{public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{// 设置响应内容类型response.setContentType("text/html");PrintWriter out = response.getWriter();// 设置西班牙语言代码response.setHeader("Content-Language", "es");String title = "En Espa&ntilde;ol";String docType ="<!doctype html public \"-//w3c//dtd html 4.0 " +      "transitional//en\">\n";out.println(docType +"<html>\n" +"<head><title>" + title + "</title></head>\n" +"<body bgcolor=\"#f0f0f0\">\n" +"<h1>" + "En Espa&ntilde;ol:" + "</h1>\n" +"<h1>" + "&iexcl;Hola Mundo!" + "</h1>\n" +"</body></html>");}
} 

设置区域日期

DateLocale.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Locale;
import java.text.DateFormat;
import java.util.Date;public class DateLocale extends HttpServlet{public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{// 设置响应内容类型response.setContentType("text/html");PrintWriter out = response.getWriter();// 获取客户端的区域设置Locale locale = request.getLocale( );String date = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.SHORT, locale).format(new Date( ));String title = "特定于区域设置的日期";String docType ="<!doctype html public \"-//w3c//dtd html 4.0 " +       "transitional//en\">\n";out.println(docType +"<html>\n" +"<head><title>" + title + "</title></head>\n" +"<body bgcolor=\"#f0f0f0\">\n" +"<h1 align=\"center\">" + date + "</h1>\n" +"</body></html>");}
} 

设置区域的货币
采用NumberFormat.getCurrencyInstance()来格式化数字。

CurrencyLocale.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Locale;
import java.text.NumberFormat;
import java.util.Date;public class CurrencyLocale extends HttpServlet{public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{// 设置响应内容类型response.setContentType("text/html");PrintWriter out = response.getWriter();// 获取客户端的区域设置Locale locale = request.getLocale( );NumberFormat nft = NumberFormat.getCurrencyInstance(locale);String formattedCurr = nft.format(1000000);String title = "特定于区域设置的货币";String docType ="<!doctype html public \"-//w3c//dtd html 4.0 " +       "transitional//en\">\n";out.println(docType +"<html>\n" +"<head><title>" + title + "</title></head>\n" +"<body bgcolor=\"#f0f0f0\">\n" +"<h1 align=\"center\">" + formattedCurr + "</h1>\n" +"</body></html>");}
} 

百分比区域化

PercentageLocale.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Locale;
import java.text.NumberFormat;
import java.util.Date;public class PercentageLocale extends HttpServlet{public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{// 设置响应内容类型response.setContentType("text/html");PrintWriter out = response.getWriter();// 获取客户端的区域设置Locale locale = request.getLocale( );NumberFormat nft = NumberFormat.getPercentInstance(locale);String formattedPerc = nft.format(0.51);String title = "特定于区域设置的百分比";String docType ="<!doctype html public \"-//w3c//dtd html 4.0 " +       "transitional//en\">\n";out.println(docType +"<html>\n" +"<head><title>" + title + "</title></head>\n" +"<body bgcolor=\"#f0f0f0\">\n" +"<h1 align=\"center\">" + formattedPerc + "</h1>\n" +"</body></html>");}
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_74815.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

13-mvc框架原理与实现方式

1、mvc原理 # mvc 与框架## 1.mvc 是什么1. m:model,模型(即数据来源),主要是针对数据库操作 2. v:view,视图,html 页面。视图由一个一个模板构成(模板是视图的一个具体展现或载体,视图是模板的一个抽象) 3. c:controller,控制器,用于mv之间的数据交互## 2.最简单的 mvc 就是一…

锁相环的组成和原理及应用

一.锁相环的基本组成 许多电子设备要正常工作&#xff0c;通常需要外部的输入信号与内部的振荡信号同步&#xff0c;利用锁相环路就可以实现这个目的。 锁相环路是一种反馈控制电路&#xff0c;简称锁相环(PLL)。锁相环的特点是&#xff1a;利用外部输入的参考信号控制环路内…

阶段八:服务框架高级(第五章:服务异步通信-高级篇(RabbitMQ高级))

阶段八&#xff1a;服务框架高级&#xff08;第五章&#xff1a;服务异步通信-高级篇&#xff08;RabbitMQ高级&#xff09;&#xff09;Day-第五章&#xff1a;服务异步通信-高级篇&#xff08;RabbitMQ高级&#xff09;0.学习目标1.消息可靠性1.1.生产者消息确认1.1.1.修改配…

400G光模块知识大全

400G光模块是目前高速传输领域中的一种先进产品&#xff0c;被广泛应用于高性能数据中心、通信网络、大规模计算、云计算等领域。本文将从400G光模块的定义、技术、产品型号、应用场景以及未来发展方向进行详细介绍。一、什么是400G光模块&#xff1f;400G光模块是指传输速率达…

Android zygote进程启动流程

zygote启动过程中涉及到以下模块&#xff1a; app_processzygote USAPsocketFileDescriptor (FD) AndroidRuntimeAppRuntime &#xff08;定义于app_process模块&#xff0c;继承自AndroidRuntime。&#xff09; init进程启动zygote进程&#xff1a; #init.zygote32_64.rc s…

前端开发_快应用开发

目录快应用官网真机调试组件组件嵌套问题tab组件list组件web组件css 样式问题[1]选择器[2]盒模型[3]样式布局-弹性布局[4-1]样式切换 - 类名的动态切换[4-2] 样式切换 - 行内样式动态切换[5]background[6]overflow[7]border-radius[8]盒子阴影[9] 单位系统接口[1] 检查某app是否…

redis五种数据结构

redis五种数据结构1. redis 其他相关1.1 redis 的安装1.2 redis 的持久化1.3 redis 配置文件2. redis 常见命令2.1 key2.2 设置 key 的生存时间或过期时间3. redis的5种常见的数据结构3.1 String3.2 list3.3 hash3.4 set3.5 zset&#xff08;SortedSet&#xff08;有序集合&…

2023年“网络安全”赛项浙江省金华市选拔赛 任务书

2023年“网络安全”赛项浙江省金华市选拔赛 任务书 任务书 一、竞赛时间 共计3小时。 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第一阶段单兵模式系统渗透测试 任务一 Windows操作系统渗透测试 任务二 Linux操作系统渗透测试 任务三 网页渗透 任务四 Linux系统…

《爆肝整理》保姆级系列教程python接口自动化(二十四)--unittest断言——中(详解)

简介 上一篇通过简单的案例给小伙伴们介绍了一下unittest断言&#xff0c;这篇我们将通过结合和围绕实际的工作来进行unittest的断言。这里以获取城市天气预报的接口为例&#xff0c;设计了 2 个用例&#xff0c;一个是查询北京的天气&#xff0c;一个是查询 南京为例&#xf…

继电器的工作原理、构成和功能介绍

随着电力应用的不断发展&#xff0c;电气设备已经深入到我们的日常生活中&#xff0c;电气自动化技术大量使用在电力系统和生产型企业中&#xff0c;人们在享受电带来方便的同时要注意用电保护。继电器就是为了保护电路而生的&#xff0c;可以提高电路可靠性&#xff0c;保障用…

RabbitMQ实现死信队列

目录死信队列是什么怎样实现一个死信队列说明实现过程导入依赖添加配置编写mq配置类添加业务队列的消费者添加死信队列的消费者添加消息发送者添加消息测试类测试死信队列的应用场景总结死信队列是什么 “死信”是RabbitMQ中的一种消息机制&#xff0c;当你在消费消息时&#…

wafw00f 防火墙探测

kali机器自带防火墙探测工具wafw00&#xff0c;它可以通过发送正常以及不正常甚至包含恶意代码的HTTP请求&#xff0c;来探测网站是否存在防火墙&#xff0c;并识别防火墙的厂商及类型。安装&#xff1a;git clone https://github.com/EnableSecurity/wafw00f.git python setup…

Windows如何查看某个端口被占用的情况?

在工作中&#xff0c;有时会发现端口被占用的情况&#xff0c;导致软件报错或者服务无法启动等问题。在不知道具体哪个进程占用该端口号的情况下&#xff0c;我们可以用下面方法来查找。 举例&#xff1a;我现在发现8090端口被占用了&#xff0c;我现在需要找到并杀掉该进程。…

TCP状态转换

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 TCP状态转换专栏&#xff1a;《Linux从小白到大神》《网络编程》 TCP状态转换示意图如下 针对上面的示…

高并发之读多写少的场景设计(用户中心)

用户中心是一个典型的读多写少系统&#xff0c;可以说我们大部分的系统都属于这种类型&#xff0c;而这类系统通过缓存就能获得很好的性能提升。并且在流量增大后&#xff0c;用户中心通常是系统改造中第一个要优化的模块&#xff0c;因为它常常和多个系统重度耦合&#xff0c;…

消息队列介绍和RabbitMQ的安装

1.消息队列 1.1 MQ的相关概念 1.1.1 什么是MQ MQ(message queue)&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO 先入先出&#xff0c;只不过队列中存放的内容是message 而已&#xff0c;还是一种跨进程的通信机制&#xff0c;用于上下游传递消息。在…

高阶人生从在职读研开始——中国社科院与美国杜兰大学金融管理硕士

说到学历&#xff0c;好多人都不太在意&#xff0c;感觉学历没什么用。等升职学历被卡时&#xff0c;等你想考公学历达不到时&#xff0c;当你想跳槽更大的平台时&#xff0c;学历会显得尤其重要。当机会来临时&#xff0c;我们应该做好全足的准备&#xff0c;而不是眼瞅着机会…

SpringBoot相关操作

01-今日内容 Spring概述、快速入门SpringBoot配置SpringBoot整合 02-SpringBoot概述 SpringBoot提供了一种快速使用Spring的方式&#xff0c;基于约定优于配置的思想&#xff0c;可以让开发人员不必在配置与逻辑业务之间进行思维的切换&#xff0c;全身心的投入到逻辑业务的…

金融信创步入快车道,应“需”而生的监控易运维方案为国产化助力

在我国“28N”信创三步走战略中&#xff0c;金融信创赫然名列其中&#xff0c;成为最早践行信创理论与实操的行业之一。截止到目前&#xff0c;金融信创渗透率业已仅次于党政部门&#xff0c;位列“8”大重点行业之首。超快的发展速度&#xff0c;让金融信创较早的步入“买方市…

浅谈模型评估选择及重要性

作者&#xff1a;王同学 来源&#xff1a;投稿 编辑&#xff1a;学姐 模型评估作为机器学习领域一项不可分割的部分&#xff0c;却常常被大家忽略&#xff0c;其实在机器学习领域中重要的不仅仅是模型结构和参数量&#xff0c;对模型的评估也是至关重要的&#xff0c;只有选择那…