整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

Spring Boot国际化支持



pring Boot国际化支持

国际化支持应该是所有的做国际化网站都需要考虑的一个问题,Spring Boot为国际化提供了强有力的支持,本文将会通过一个例子来讲解Spring Boot的国际化。

添加Maven支持

Spring Boot本身就支持国际化,我们这里添加一个模板支持来通过页面来展示,我们这里添加thymeleaf模板:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

LocaleResolver

我们需要为系统指定一个默认的LocaleResolver:

@Bean
public LocaleResolver localeResolver() {
    SessionLocaleResolver slr = new SessionLocaleResolver();
    slr.setDefaultLocale(Locale.US);
    return slr;
}

上面的例子中我们自定义了一个SessionLocaleResolver,并且指定了默认的Locale。

LocaleChangeInterceptor

接下来,我们定义一个LocaleChangeInterceptor来接收Locale的变动。这里我们通过lang参数来接收。

@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
    LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
    lci.setParamName("lang");
    return lci;
}

当然,我们需要将这个Interceptor注册到SpringMVC中:

@Override
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(localeChangeInterceptor());
}

定义Message Sources

默认情况下,Spring Boot会在src/main/resources查找message文件,默认的message文件是messages.properties,如果指定了某种语言,那么就是messages_XX.properties,其中XX是Local code。

messages.properties是key value的格式,如果在对应的local文件中没找到相应的key,则会在默认的messages.properties中查找。

我们默认定义英语的messages.properties如下:

greeting=Hello! Welcome to our website!
lang.change=Change the language
lang.eng=English
lang.fr=French

同时我们定义一个法语的message文件messages_fr.properties :

greeting=Bonjour! Bienvenue sur notre site!
lang.change=Changez la langue
lang.eng=Anglais
lang.fr=Francais

Controller文件

我们定义一个跳转的controller文件:

@Controller
public class PageController {

    @GetMapping("/international")
    public String getInternationalPage() {
        return "international";
    }
}

html文件

相应的html文件如下:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="ISO-8859-1" />
    <title>Home</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <script>
        $(document).ready(function() {
            $("#locales").change(function () {
                var selectedOption = $('#locales').val();
                if (selectedOption != ''){
                    window.location.replace('international?lang=' + selectedOption);
                }
            });
        });
    </script>
</head>
<body>
<h1 th:text="#{greeting}"></h1>

<br /><br />
<span th:text="#{lang.change}"></span>:
<select id="locales">
    <option value=""></option>
    <option value="en" th:text="#{lang.eng}"></option>
    <option value="fr" th:text="#{lang.fr}"></option>
</select>
</body>
</html>

运行应用程序

好了,接下来我们可以运行了。

如果我们访问http://localhost:8080/international?lang=en , 则会读取默认的英语资源:



通过切换到法语环境:http://localhost:8080/international?lang=fr, 我们可以看到:



环境已经切换过来了。


最后:


上面都是自己整理好的!我就把资料贡献出来给有需要的人!顺便求一波关注,哈哈~各位小伙伴关注我后私信【Java】就可以免费领取哒

文作者:上海驻云NodeJS开发工程师 张弛

随着NodeJS技术的蓬勃发展,越来越多的公司选择使用JS作为WEB应用的前后端开发语言。与此同时,他们的目光不仅仅局限于国内市场,而是开始展望整个国际市场。等等,在你考虑如何将自己的产品和服务提供给国外客户之前,首先要完成的一个重要工作就是软件国际化。

什么是软件国际化?

简单的说,软件国际化就是指程序的设计和开发过程中使得功能和代码设计能处理多种语言和文化习俗,能够在创建不同语言版本时,不需要重新设计源程序代码的软件工程方法。

如果要开发一款要支持多国语言的Web应用,我们需要将语言资源从源代码中抽取、对语言进行翻译、重新导入到源代码中并且调整UI界面。接下来就以一款以JS为开发语言的Web 应用为例来探讨下如何现实国际化 。

在讨论实现国际化之前, 我们先看看选定的开发框架。如果选择时下流行的AngularJS, 那么恭喜你,因为你可以使用强大的angular-gettext插件来完成这项任务。

传送门:https://angular-gettext.rocketeer.be/

因为这个库的文档和功能相对比较完备, 就不再多做叙述。

如果选择的是基于JQuery来进行开发,那么github上有一个开源库一定能帮到你。 今天重点讨论的也是如何使用这个库来实现软件国际化。

传送门:https://github.com/wikimedia/jquery.

i18n顾名思义这个库是基于JQuery并专门适用于实现软件国际化。

主要实现的步骤如下:

1. 第一步当然是将这个开源库克隆到本地,并将所需要的全部js文件引入到项目中。

2. 根据网站中文档的提示,在开发目录下建立名为i18n的目录,并为对应的语言生成json后缀的文件。(也可以放到一个文件中,不过一般比较复杂的应用还是推荐将不同的语言分开放置)这个文件存放的就是一个JSON 对象,属性就是抽取出的字符串的键值,对应的值当然就是我们翻译的字符串。

在这里例子里,直接使用了中文作为键值,实际开发情况下,可以按需要更换。

3. 接下来就可以在应用初始化的地方加入一段逻辑来进行初始化。

在这里,我们从cookie中获取到当前语言,然后读取i18n目录下的语言资源文件,读取完成以后调用$(".data-i18n").i18n()这个方法。

请注意到这个方法非常重要,它的作用就是把当前语言的字符串替换到页面中显示出来。所以当页面内容发生改变或者切换语言之后都需要调用这个方法,否则页面上的字符串是不会发生改变的。

4. 初始化逻辑添加完之后,在开发前后端逻辑的时候,就可以加入国际化的逻辑了。看看以下例子:

对于前段页面来说,主要工作就是给需要翻译的html元素加上一个data-i18n的属性后。当页面加载的时候,i18n库会寻找有data-i18n的元素,设法获取到翻译的字符串并进行替换。

而对于后端逻辑而言, js库也提供了一系列方法供我们调用。最简单的用法就是调用$.i18n()方法并且传入一个key,JS库会设法找到对应的翻译字符串并且返回这些字符串。除此之外还有更多方法可供调用,如需帮助可以查看帮助文档。

5. 在实际的开发过程中,你肯定会觉得手动去添加和维护这些JSON文件简直就是噩梦。不用着急,这个时候我们可以使用脚本来替代繁琐的步骤,既轻松又不会出错。

假如你的脚本语言是gulp,那么请插入下面的逻辑:

这段用gulp编写的脚本会遍历全部的hbs文件(例子中选择的是handlebar模板)过滤出拥有data-i18n属性的html元素,并且把键值写入到语言资源文件中,假如翻译不存在则value会设定为”MISSING”。所以当你更新了前后端的代码时,记得运行gulp脚本来更新JSON文件。这样在开始翻译工作时,注意那些“MISSING”的值就可以了。

确保所有的字符串都抽取到JSON文件以后,最艰巨的工作才刚刚开始。不要简单的以为谷歌翻译或者其他软件能帮你搞定全部的翻译。事实上,假如只是从字面意思来做翻译,那么你的最终用户可能会看的一头雾水。考虑到文化的差异,有很多语言按照字面意思直接翻译出来可能让用户觉得很怪异,甚至有可能误导用户。再加上如果翻译出来的语言长短相差太多,有可能对UI界面产生影响,所以在翻译时还要考虑句子的长短和合理的使用缩写。

本文到这里就结束了,希望能让大家对如何实现软件国际化有个比较直观的了解。同时,如果喜欢我们的话就赶紧订阅我们吧~~~每天定时推送新鲜干货~~~也可以关注我们的微信公众号:架构云 每天同步更新哟~~~

好多小伙伴可能会问,html就这点东西?当然不是!html特别是html5有很多新标签和新东西的!

不过对于新手来说,先学习这些,然后在一点点进步!因为有些不常用的标签即使今天学习了。明天也就忘记了,而且不常用!不如等用到的时候在查询就可以了!

学习软件,尤其是后期做项目的时候,有三宝,手册、百度、找朋友!

比如php有将近两千个函数!java有N多个函数!不可能记住所有的函数!只能是常用的函数记得住!那么碰到没用过的函数怎么办呢?

可以查询手册!查询百度!!其次就是问你的老师!或者有能力的朋友来进行帮助!


还有的小伙伴会问,你说的和其他人说的差不多!因为学习的知识都差不多嘛。但是每个人对这个东西的理解是不同的。比如十年程序员和一两年的程序员对一个东西的理解差距有很大!


今天我们继续来学习Html,接着昨天的来继续。

html表单

为什么要将html的表单单独拿出来写一篇文章呢?因为表单是在是很重要!

那么什么是表单呢?

表单就是将我们的信息从一个页面,传递到另外一个页面的方法吧。可以让用户填写信息,让后台根据用户输入的数据进行相应处理的媒介。

表单长什么样子呢?

好看一点的表单是这样的!

而初学者编写的表单是这样子的!!

这是为什么呢?

因为表单是需要CSS样式来配合美化的。如果仅仅学习HTML还是远远不够的!

前几天我看到一个提问。说我会html、css、javascript能找到工作吗?答案肯定是否定的!如果是实习的话。。没准可以找到。

第一现在很多公司不单单用html、css、js来编写前端页面。有很多都用vue、react、等等前端框架来编写前端。那些东西实在太基础了。想凭这些东西找工作实在太难了。另外、前端工程师好多要求有后端编程语言基础。为什么呢?因为最起码你要知道前端是如何与后端进行数据互通的。如何利用ajax来调用后端接口!

如果这些都不清楚。真的很难找到合适的工作。

扯的有点远了。。。。

我们继续。

那么在html中什么是表单呢?

表单是一个包含表单元素的区域。

表单元素是允许用户在表单中(比如:文本域、下拉列表、单选框、复选框等等)输入信息的元素。

表单使用表单标签(<form>)定义

表单首先并不是一个标签。而是利用<form></form>包裹起来的一个区域。当然这个区域也可以放置其他的标签,在使用表单的时候,会经常和div和span等标签配合CSS来使用。因为没有学习CSS嘛。所以就简单讲解表单及表单元素就可以了。

表单元素是在表单区域中,定义的表单标签。标签类型,有下拉菜单、单选等等。有的小朋友可能会问。没有将表单元素放置在表单标签中间会怎么样?

很明确的告诉你。不会将表单之外的表单元素提交到你想要提交的页面。(也可以利用js,来一起提交表单)

定义表单

使用form标签定义一个表单,格式为:

<form method=“提交的方式” action=“提交的地址”>

... 表单内容...

</form>

提交的方式有两种:GET和POST

在http协议中提交的方式不只有GET和POST,但并不是我们今天讨论的话题。以及为什么要使用POST和GET提交。

GET就是我们可以在URL中看到信息的内容,但是在url传输的时候,会将中文进行转码。(具体转码内容会在序列化和反序列化讲解)

而POST的信息是在URL中无法看到提交的内容的。

POST和GET的具体区别会在后续讲解http协议的时候来继续讲解。

表单元素-input

可以使用Input向表单中添加大部分元素,input标签的格式为:

<input type=“类型” name=“名称” value=“值”/>

表单元素-input标签中的属性介绍

<input type=“text/password”/>标签中的属性介绍

name=“” 定义这个标签的名字

value=“” 预先给这个标签赋值

maxlength=“” 最大输入字符

size=“” 标签中显示字符的宽度

当用户要在表单中键入字母、数字等内容时,就会用到文本域。在大多数浏览器中,文本域的缺省宽度是20个字符

text 代表的是文本域。password 英文翻译过来就是密码了。

他们两个的区别是什么呢?password默认是不可见的。当你输入一个字符的时候,会以*代替。这个就是password。

而text代表的是文字。比如我们在登录某宝的时候,会输入用户名,而用户名就是text文本域。

上面登录的就是text文本域,下面的就是password。

表单元素-单选框

当用户从若干给定的的选择中选取其一时,就会用到单选框

将input标签中type值写为radio

如果默认选中: checked=“checked”或者直接给checked属性即可

多个单选框名字必须统一name=“sex”

并且给每一个单选赋值value=“man”

性别(单选框)

男 <input checked="checked" type="radio" name="sex" value="man" />

女 <input type="radio" name="sex" value="woman" />

单选框是我们日常生活中经常用到的功能,比如性别、学历等等信息。

表单元素-复选框

当用户需要从若干给定的选择中选取一个或若干选项时,就会用到复选框。

复选框定义input标签属性 type=“checkbox”

让复选框多个为一个组name=“music”属性必须统一

让每一个复选框增加一个值因为服务器不检测标签外的属性value=“定义的值”

如果默认选中: checked=“checked”或者直接给checked属性即可

<input checked="checked" type="checkbox" name="music" value="重金属"/>重金属

<input type="checkbox" name="music" value="轻音乐"/>轻音乐

<input type="checkbox" name="music" value="乡村音乐"/>乡村音乐

<input type="checkbox" name="music" value="流行音乐"/>流行音乐

复选框,就点像我们小时候的答题:单选题、复选题(多选)。你可以从多种选择中,选择多个。

隐藏文本域-hidden

index标签有一个隐藏文本域用于不想让用户看到的信息从表单提交

用法: <input type="hidden" name="id" value="1024" />

type=“hidden” 声明这个标签是隐藏的

name=“id” 告诉服务器这个隐藏域的名字是id

value=“” 告诉服务器这个隐藏域中的值

隐藏文本域,页面上不想给用户看到的信息。但是又需要将信息传递到另外一个页面。所以就用到隐藏文本域了。

确认提交按钮- submit

表单的动作属性(Action)和确认按钮

当用户单击确认按钮时,表单的内容会被传送到另一个文件。表单的动作属性(action)定义了目的文件的文件名。由动作属性定义的这个文件通常会对接收到的输入数据进行相关的处理。

<input type="submit" value="提交" />

重置按钮-reset

如果客户输入信息错误,想反回到默认表单信息,点击reset按钮,表单将重置。

用法: <input type="reset" value="重置" />

只要将input标签中的type属性值写成reset就可以生成

表单元素- textarea文本域(多行文本域)

textarea 多行文本域。

格式:

<textarea name="jianjie" cols="60" rows="5"></textarea>

name=“”定义文本域名称

cols=“60”列数

rows=“5”行数

表单元素-select下拉菜单

在web页面中如何定义下拉菜单?

用到select标签中使用option标签

用法:

<select name="">

<option>请选择省份</option>

<option value="10000“ selected>北京</option>

<option value="10001">上海</option>

<option value="10002">天津</option>

</select>

如果默认选中: 用option标签中的selected属性,那么当你默认打开网页的时候,该下拉菜单默认选中的。

表单元素-select下拉框-多选

<select multiple="multiple" size="2" name="">

<option>请选择省份</option>

<option value="10000">北京</option>

<option value="10001">上海</option>

<option value="10002">天津</option>

</select>

在select标签中加入multiple=“multiple” 属性变成多选下拉框

size=“2” 设置显示的选项数为2

当然html5增加了好多新的表单元素。这里就不说了,等后期出一篇专门讲解html的文章。在那个文章中继续讲解。

属性

为什么不在之前来讲解html的属性呢?因为html的属性是有分类的。接下来我们来看看Html的属性分类。

什么是属性呢?

属性就是标签中的附加条件。比如 <option value="10000">北京</option>就是这个选项传递到另一个页面的值是10000而页面显示则是北京。

html将属性分三类:

核心属性:class、id 、style和title属性

国际化属性:dir、lang

UI事件属性:(与js配合用户动作的属性)

onclick、ondoubleclick、onmousedown、onmousup、onmouseover、onmouseout、onkeypress、onkeydown、onkeyup

核心属性 (Core Attributes)

其中包括:class,id,style,title属性

注:不能再以下HTML标签中使用包括base、head、html、meta、param、script、style 以及 title

核心属性-id

id属性:用于唯一标识页面内的任何元素

注:对于id属性的值存在一些特殊的规则:

(1)必须以字母开头,然后可以跟上任意数量的字母、数字、连字符、下划线、冒号和句号,不能以数字、连字符、下划线冒号或句号开头

(2)在同一个XHTML文档中,任意两个id属性不能具有相同的值

<body> <p id=“accounts”>文本内容<p> </body>

在真正编写html页面的时候写两个id一样的元素,不会报错!但是在真正应用的时候就会出现问题。比如CSS的元素选择。比如js的利用id找到元素的DOM操作等等。

核心属性-title

title属性:给出元素的建议标题

这里是<span style="color:red;" title="测试">一段</span>文字

当鼠标移动到span上之后,会有tooltip "测试“

核心属性-class

class属性:用于指定某个元素属于特定的元素类

class 属性不能在以下HTML元素中使用:base, head, html, meta, param, script, style, title;

可以给HTML元素赋予多个class,例如:

<p id="sales" class="className1 className2 className3">

CSS中会应用到

class对于学习计算机的小伙伴,应该很熟悉。就是类嘛,在html中就是将一类的元素放在一起处理。其中最大的作用就是有多个div,利用css来处理样式。或者多个div利用js来做动态特效。

核心属性-style

style属性:利用style属性能够指定元素中的CSS规则(逐渐淘汰)

<p style="font-family:Arial, Helvetica, sans-serif; color:green">Some text</p>

国际化属性-dir

dir属性:指定文本在浏览器中的显示方向

两个值:(1)ltr:从左到右(默认值)

     (2)rtl:从右到左

用法:

<p dir="rtl">Write this text right-to-left!</p>

注释:dir 属性在以下标签中无效:<base>, <br>, <frame>, <frameset>, <hr>, <iframe>, <param> 以及 <script>。

国际化属性-lang

属性lang是英语language的缩写,意思是语言,”en”代表英语,”zh-CN”代表中文

lang属性:设置元素中内容的语言代码

用法:

<!DOCTYPE html>

<html lang="en">

<head> <meta charset="UTF-8"> <title></title>

</head>

<body></body>

</html>

注释:lang 属性在以下标签中无效:<base>, <br>, <frame>, <frameset>, <hr>, <iframe>, <param> 以及 <script>

语言简写参考 http://www.jb51.net/w3school/tags/html_ref_language_codes.htm

如果你在中国,本地浏览器的默认语言是中文,当我们打开一个外国网站时,浏览器会提示”是否将网页内容翻译成中文”,如下图

检查一下该网页的源代码,发现lang=”en”

搜索引擎首先自己无法判断自己抓取的页面中的内容是什么语言,因为在它看来都是二进制文件,那么这时就需要我们告诉它这个页面中的内容是什么语言,进而它才能知道下一步该干嘛,也就是说,当你把lang设置为”en”时,无论你网页中是什么语言的内容,在它看来都是英语,如果本地浏览器的默认语言不是英语,就会提示上面的选项,问您是否需要翻译。这个在浏览器的设置中可以清楚地看到:

1.搜索引擎无法判断页面中的内容是什么语言,需要人们告诉它(这里也体现出语义化的特点,即机器本身什么都不懂,我们需要告诉它这是什么,并且当我们告诉它这是什么后,我们也必须按照这个规则去做,要不将lang设置为”en”,但是我们却在网页中使用中文语言内容,这很大程度上会对机器进行干扰,进而干扰到用户的正常体验,这样做就毫无意义。)

2.浏览器会将读取到的页面语言和本地语言进行比较判断,如果一致,不做处理,否则提示是否需要翻译(当然前提是用户勾选了这个功能,chrome默认勾选)

W3C合法性校验

当我们写完一个网页之后,怎么才能知道编写的这个网页是否符合W3C的代码规范呢?

代码规范性有两种方法:

1、在线检查:http://validator.w3.org/;

2、工具检查,例如:Html Validator。

Html Validator是Firefox的一个附加组件,必须利用火狐浏览器。

URL编码

URL 只能使用 ASCII 字符集来通过因特网进行发送。

由于 URL 常常会包含 ASCII 集合之外的字符,URL 必须转换为有效的 ASCII 格式。

HTML <meta> 元素

之前文章中对于META标签就只提了一句。

<meta charset="UTF-8">

但是打开任意的网站,其head标签内都有一列的meta标签。

在查阅w3school中,第一句话中的“元数据”。然后很顺利的在英文版的w3school找到了想要的结果。(中文w3school说的是元信息,但元数据在Google就有详细解释。所以这儿采用英文版W3school的解释。)

The <meta> tag provides metadata about the HTML document. Metadata will not be displayed on the page, but will be machine parsable.

其中的关键是metadata,中文名叫元数据,是用于描述数据的数据它不会显示在页面上,但是机器却可以识别。

用处

Meta elements are typically used to specify page description, keywords, author of the document, last modified, and other metadata.

The metadata can be used by browsers (how to display content or reload page), search engines (keywords), or other web services

这句话对meta标签用处的介绍,简洁明了。

翻译过来就是:meta常用于定义页面的说明,关键字,最后修改日期,和其它的元数据。这些元数据将服务于浏览器(如何布局或重载页面),搜索引擎和其它网络服务

组成

meta标签共有两个属性,分别是http-equiv属性和name属性。

1. name属性

name属性主要用于描述网页,比如网页的关键词,叙述等。与之对应的属性值为content,content中的内容是对name填入类型的具体描述,便于搜索引擎抓取

meta标签中name属性语法格式是:

<meta name="参数" content="具体的描述">。

其中name属性共有以下几种参数。(A-C为常用属性)

A. keywords(关键字)

说明:用于告诉搜索引擎,你网页的关键字。举例:

<meta name="keywords" content="奔跑的淼哥,淼哥程序员,讲师淼哥">

多个关键字以英文的逗号分隔

B. description(网站内容的描述)

说明:用于告诉搜索引擎,你网站的主要内容。举例:

<meta name="description" content="奔跑的淼哥,一个持续更新php教程的老男孩">

C. viewport(移动端的窗口)

说明:这个概念较为复杂。这个属性常用于设计移动端网页。在用bootstrap,AmazeUI等框架时候都有用过viewport。

举例(常用范例):

<meta name="viewport" content="width=device-width, initial-scale=1">

viewport这个中文叫视口,

width=device-width 就是显示的宽度=设备机器屏幕的宽度。

intial-scale:页面首次被显示是可视区域的缩放级别,取值1.0则页面按实际尺寸显示,无任何缩放

maximum-scale=1.0, minimum-scale=1.0;可视区域的缩放级别,

maximum-scale用户可将页面放大的程序,1.0将禁止用户放大到实际尺寸之上。

user-scalable:是否可对页面进行缩放,no 禁止缩放

D. robots(定义搜索引擎爬虫的索引方式)

说明:robots用来告诉爬虫哪些页面需要索引,哪些页面不需要索引。content的参数有all,none,index,noindex,follow,nofollow。默认是all。

举例:

<meta name="robots" content="none">

具体参数如下:

1.none : 搜索引擎将忽略此网页,等价于noindex,nofollow。
2.noindex : 搜索引擎不索引此网页。
3.nofollow: 搜索引擎不继续通过此网页的链接索引搜索其它的网页。
4.all : 搜索引擎将索引此网页与继续通过此网页的链接索引,等价于index,follow。
5.index : 搜索引擎索引此网页。
6.follow : 搜索引擎继续通过此网页的链接索引搜索其它的网页。

E. author(作者)

说明:用于标注网页作者举例:

<meta name="author" content="Lxxyx,wangmiao0070@qq.com">

F. generator(网页制作软件)

说明:用于标明网页是什么软件做的举例: (不知道能不能这样写):

<meta name="generator" content="Sublime Text3">

G. copyright(版权)

说明:用于标注版权信息举例:

<meta name="copyright" content="Lxxyx"> //代表该网站为Lxxyx个人版权所有。

H. revisit-after(搜索引擎爬虫重访时间)

说明:如果页面不是经常更新,为了减轻搜索引擎爬虫对服务器带来的压力,可以设置一个爬虫的重访时间。如果重访时间过短,爬虫将按它们定义的默认时间来访问。举例:

<meta name="revisit-after" content="7 days" >

I. renderer(双核浏览器渲染方式)

说明:renderer是为双核浏览器准备的,用于指定双核浏览器默认以何种方式渲染页面。比如说360浏览器。举例:

<meta name="renderer" content="webkit"> //默认webkit内核
<meta name="renderer" content="ie-comp"> //默认IE兼容模式
<meta name="renderer" content="ie-stand"> //默认IE标准模式

2. http-equiv属性

http-equiv顾名思义,相当于http的文件头作用。

一开始看到这句话的时候,我是迷糊的。因为我看各类技术名词,都会习惯性的去记住它的英文全称。equiv的全称是"equivalent",意思是相等。

意思就是相当于http的作用。至于文件头是哪儿出来的,估计是从其作用来分析的。我认为顾名思义并不能得出"相当于http的文件头作用"这个论断。

说的在直白点,就是Http协议的协议头里面的设置

相当于HTTP协议的作用,比如说定义些HTTP参数啥的。

meta标签中http-equiv属性语法格式是:

<meta http-equiv="参数" content="具体的描述">

其中http-equiv属性主要有以下几种参数:

A. content-Type(设定网页字符集)(推荐使用HTML5的方式)

说明:用于设定网页字符集,便于浏览器解析与渲染页面举例:

<meta http-equiv="content-Type" content="text/html;charset=utf-8"> //旧的HTML,不推荐

<meta charset="utf-8"> //HTML5设定网页字符集的方式,推荐使用UTF-8

B. X-UA-Compatible(浏览器采取何种版本渲染当前页面)

说明:用于告知浏览器以何种版本来渲染页面。(一般都设置为最新模式,在各大框架中这个设置也很常见。)举例:

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> //指定IE和Chrome使用最新版本渲染当前页面

C. cache-control(指定请求和响应遵循的缓存机制)

用法1.

<meta http-equiv="cache-control" content="no-cache">

共有以下几种用法:

no-cache: 先发送请求,与服务器确认该资源是否被更改,如果未被更改,则使用缓存。

no-store: 不允许缓存,每次都要去服务器上,下载完整的响应。(安全措施)

public : 缓存所有响应,但并非必须。因为max-age也可以做到相同效果

private : 只为单个用户缓存,因此不允许任何中继进行缓存。(比如说CDN就不允许缓存private的响应)

maxage : 表示当前请求开始,该响应在多久内能被缓存和重用,而不去服务器重新请求。例如:max-age=60表示响应可以再缓存和重用 60 秒。

用法2.(禁止百度自动转码)

说明:用于禁止当前页面在移动端浏览时,被百度自动转码。虽然百度的本意是好的,但是转码效果很多时候却不尽人意。所以可以在head中加入例子中的那句话,就可以避免百度自动转码了。举例:

<meta http-equiv="Cache-Control" content="no-siteapp" />

D. expires(网页到期时间)

说明:用于设定网页的到期时间,过期后网页必须到服务器上重新传输。举例:

<meta http-equiv="expires" content="Sunday 26 October 2016 01:00 GMT" />

E. refresh(自动刷新并指向某页面)

说明:网页将在设定的时间内,自动刷新并调向设定的网址。举例:

<meta http-equiv="refresh" content="2;URL=http://www.xxxx.com/"> //意思是2秒后跳转向某个网址

F. Set-Cookie(cookie设定)

说明:如果网页过期。那么这个网页存在本地的cookies也会被自动删除。

<meta http-equiv="Set-Cookie" content="name, date"> //格式

<meta http-equiv="Set-Cookie" content="User=Lxxyx; path=/; expires=Sunday, 10-Jan-16 10:00:00 GMT"> //具体范例

G.Window-target(显示窗口的设定)

说明:强制页面在当前窗口以独立页面显示。

用法:

<meta http-equiv="Window-target"content="_top">

注意:用来防止别人在框架里调用自己的页面。

H.content-Language(显示语言的设定)

用法:

<meta http-equiv="Content-Language"content="zh-cn"/>

当然http协议里的内容还有很多。具体具体可以查看http协议相关的文章。


今天这篇文章介绍了html的常用的一些标签。属性还有关键的设置。

当然html还有很多标签,一些是Html5的,以后专门写文章来说。还有一些是不常用的标签。

感谢小伙伴们的关注。。手写不宜请点个赞吧!十分感谢。

(注:本内容属于原创,未经许可严禁抄袭。内容真实性已考证,图片来源于网络,图片如有侵权请联系作者删除)