提交 44fd7594 编写于 作者: W wizardforcel

2020-06-12 20:49:55

上级 8161727a
......@@ -4,7 +4,7 @@
学习使用 Python [`httplib2`](https://github.com/httplib2/httplib2)模块。 超文本传输​​协议(HTTP)是用于分布式协作超媒体信息系统的应用协议。 HTTP 是万维网数据通信的基础。
Python `httplib2`模块提供了用于通过 HTTP 访问 Web 资源的方法。 它支持许多功能,例如 HTTP 和 HTTPS,身份验证,缓存,重定向和压缩。
Python `httplib2`模块提供了用于通过 HTTP 访问 Web 资源的方法。 它支持许多功能,例如 HTTP 和 HTTPS,证,缓存,重定向和压缩。
```java
$ service nginx status
......@@ -336,7 +336,7 @@ Adding password for user user7
```
我们使用`htpasswd`工具创建用于基本 HTTP 身份验证的用户名和密码。
我们使用`htpasswd`工具创建用于基本 HTTP 证的用户名和密码。
```java
location /secure {
......
......@@ -441,7 +441,7 @@ String value = getServletConfig().getInitParameter("name");
## 为特定的 URL 请求添加 Servlet 过滤器
Web 过滤器对于预处理请求和访问给定 URL 时调用某些功能很有用。 与其直接调用在给定 URL 上存在的 servlet,否则将在 servlet 之前调用任何包含相同 URL 模式的过滤器。 这在许多情况下可能是有用的,这对于执行日志记录,身份验证或在没有用户交互的情况下在后台进行的其他服务而言可能是最有用的。
Web 过滤器对于预处理请求和访问给定 URL 时调用某些功能很有用。 与其直接调用在给定 URL 上存在的 servlet,否则将在 servlet 之前调用任何包含相同 URL 模式的过滤器。 这在许多情况下可能是有用的,这对于执行日志记录,证或在没有用户交互的情况下在后台进行的其他服务而言可能是最有用的。
过滤器必须实现`javax.servlet.Filter`接口。 此接口中包含的方法包括`init()``destroy()``doFilter()`。 容器调用`init()``destroy()`方法。 `doFilter()`方法用于实现过滤器类的任务。 如果要链接过滤器,或者给定 URL 模式存在多个过滤器,则将按照在`web.xml`部署描述符中对其进行配置的顺序来调用它们。
......
# 我需要一个教程
\ No newline at end of file
# vaadin 教程
\ No newline at end of file
# 我用 Maven 呼叫 Hello World Web 应用
# 使用 Maven 的 vaadin Hello World Web 应用
> 原文: [https://howtodoinjava.com/vaadin/hello-world-web-application-maven/](https://howtodoinjava.com/vaadin/hello-world-web-application-maven/)
在此示例中,我们将学习使用 maven 创建 **vaadin hello world 应用**,然后在内置码头服务器中运行部署该应用。
在此示例中,我们将学习使用 maven 创建 **vaadin helloworld 应用**,然后在内置Jetty服务器中运行部署该应用。
## 使用 Maven 原型创建 vaadin 项目
......@@ -28,7 +28,7 @@ $ mvn archetype:generate
![Vaadin Hello World Application Project Structure](img/e0943201c08237d2f437e759267f7835.png)
Vaadin Hello World Application Project Structure
Vaadin HelloWorld 应用项目结构
......@@ -36,9 +36,9 @@ Vaadin Hello World Application Project Structure
## 生成的文件
连同文件夹结构一起,我们将获得这些生成的文件以及 **vaadin hello world 项目**
连同文件夹结构一起,我们将获得这些生成的文件以及 **vaadin helloworld 项目**
#### pom.xml
#### `pom.xml`
```java
<?xml version="1.0" encoding="UTF-8"?>
......@@ -207,7 +207,7 @@ Vaadin Hello World Application Project Structure
```
#### MyUI.java
#### `MyUI.java`
```java
package com.howtodoinjava.vaadin.demo;
......@@ -262,7 +262,7 @@ public class MyUI extends UI {
```
如果要使用`web.xml`文件,因为您的服务器不支持`servlet 3.0`规范,则可以在`web.xml`文件中使用此配置。
如果要使用`web.xml`文件,因为您的服务器不支持 servlet 3.0 规范,则可以在`web.xml`文件中使用此配置。
```java
<?xml version="1.0" encoding="UTF-8"?>
......@@ -301,19 +301,19 @@ $ mvn clean install
上面的 maven 命令将下载依赖项(需要一些时间),并构建 war 文件`VaadinExample-1.0.war`
## 运行并测试,我将呼叫 Hello World 应用
## 运行并测试 vaadin HelloWorld 应用
现在该运行该应用了。 在命令提示符下,运行以下命令以启动随附的码头服务器。
现在该运行该应用了。 在命令提示符下,运行以下命令以启动随附的 Jetty 服务器。
```java
$mvn jetty:run
```
这将启动内置的码头服务器,您可以通过`http://localhost:8080/`访问该应用。
这将启动内置的 Jetty 服务器,您可以通过`http://localhost:8080/`访问该应用。
![Vaadin Hello World Screen](img/4cf50fc728bf4b7a2220a9723e1b7a8c.png)
Vaadin Hello World Screen
Vaadin 你好世界屏幕
......@@ -321,7 +321,7 @@ Vaadin Hello World Screen
![Vaadin Hello World Screen -2](img/70583a72d03f095779814e609023a423.png)
Vaadin Hello World Screen -2
Vaadin 你好世界屏幕 - 2
......@@ -331,5 +331,6 @@ Vaadin Hello World Screen -2
资源:
[称为原型](https://vaadin.com/docs/-/part/framework/getting-started/getting-started-archetypes.html)
[称为 Maven 设置](https://vaadin.com/docs/-/part/framework/getting-started/getting-started-maven.html)
\ No newline at end of file
[Vaadin 原型](https://vaadin.com/docs/-/part/framework/getting-started/getting-started-archetypes.html)
[Vaadin Maven 设置](https://vaadin.com/docs/-/part/framework/getting-started/getting-started-maven.html)
\ No newline at end of file
# 请参阅 ComboBox 示例
# Vaadin `ComboBox`示例
> 原文: [https://howtodoinjava.com/vaadin/vaadin-combobox-examples/](https://howtodoinjava.com/vaadin/vaadin-combobox-examples/)
在本教程中,我们将学习与 Vaadin ComboBox UI 组件一起使用,包括设置值,过滤,添加新值和事件处理。
在本教程中,我们将学习与 Vaadin `ComboBox` UI 组件一起使用,包括设置值,过滤,添加新值和事件处理。
```java
Table of Contents
......@@ -22,7 +22,7 @@ Complete Example
![Vaadin ComboBox Items](img/f70c4e6e9729029b699396237b693ebb.png)
Vaadin ComboBox Items
Vaadin `ComboBox`项目
......@@ -51,7 +51,7 @@ layout.addComponent(combobox);
```
同样,您可以使用其他数据结构来填充组合框项目。 例如。 我已经使用 e **num 类型来填充 vaadin 组合框项目**
同样,您可以使用其他数据结构来填充组合框项目。 例如。 我已经使用**枚举类型来填充 vaadin 组合框项目**
```java
enum Genders {
......@@ -78,13 +78,13 @@ layout.addComponent(combobox);
```
## 禁用空/空选择
## 禁用空选项
您在第一个屏幕截图中注意到第一个选项为空。 如果要删除此空选项,请使用`combobox.setNullSelectionAllowed(false);`方法。
![Empty Option Removed from Vaadin Combobox](img/8f75cb046c562a0c6e64d715bf29e4d2.png)
Empty Option Removed from Vaadin Combobox
Vaadin 组合框中的空选项已删除
......@@ -105,7 +105,7 @@ layout.addComponent(combobox);
![Preselect value in vaadin combobox](img/e8d723ddec55f122420fc14631af76d7.png)
Preselect value in vaadin combobox
vaadin 组合框中的预选值
......@@ -129,23 +129,23 @@ layout.addComponent(combobox);
![Filtering in vaadin combobox](img/1014fe71518bbe24dcc4324e96a0a075.png)
Filtering in vaadin combobox
vaadin 组合框中的过滤
共有 3 种过滤模式:
1. #### FilteringMode.CONTAINS
1. #### `FilteringMode.CONTAINS`
与包含组件文本字段部分中给出的字符串的任何项目匹配。
2. #### FilteringMode.OFF
2. #### `FilteringMode.OFF`
它可以过滤掉并始终显示所有项目。
3. #### FilteringMode.STARTSWITH
3. #### `FilteringMode.STARTSWITH`
仅匹配以给定字符串开头的项目。 这是 vaadin 7 中的默认模式。
仅匹配以给定字符串开头的项目。 这是 vaadin7 中的默认模式。
```java
ComboBox combobox = new ComboBox("Select your gender:");
......@@ -160,15 +160,15 @@ layout.addComponent(combobox);
```
## 可编辑我叫 ComboBox
## Vaadin 可编辑`ComboBox`
**可编辑组合框**中,您也可以从 UI 添加新项目。 要添加新项目,只需键入新项目标题,然后按 Enter
**可编辑组合框**中,您也可以从 UI 添加新项目。 要添加新项目,只需键入新项目标题,然后按`Enter`
添加一个`NewItemHandler`实例来处理新添加的项目。 例如。 添加后,我在组合框中选择它作为当前值。
![Editable Combobox](img/299a166046cb4c17eea0ce34183c0448.png)
Editable Combobox
可编辑`ComboBox`
......@@ -354,6 +354,8 @@ public class MyUI extends UI {
参考文献:
[查看 ComboBox 类](https://vaadin.com/api/com/vaadin/ui/ComboBox.html)
[查看`ComboBox`类](https://vaadin.com/api/com/vaadin/ui/ComboBox.html)
[查看图书示例](https://vaadin.com/docs/-/part/framework/components/components-combobox.html)
[查看 Wiki](https://vaadin.com/wiki/-/wiki/Main/Configure+ComboBoxes+wisely)
\ No newline at end of file
......@@ -18,11 +18,11 @@ Vaadin text field CSS styling
Source Code Download Link
```
## 我需要一个文本字段标签
## Vaadin 文本字段标签
![Vaadin text field label](img/08600c788533eafaba717ad98be10186.png)
Vaadin text field label
Vaadin 文本字段标签
......@@ -34,7 +34,7 @@ Vaadin text field label
final TextField txtFldOne = new TextField("Type your name here:");
```
2. #### 使用 setCaption()方法设置文本字段标签
2. #### 使用`setCaption()`方法设置文本字段标签
```java
final TextField txtFldOne = new TextField();
......@@ -48,7 +48,7 @@ Vaadin text field label
![Vaadin text field size](img/2a3394b59f0e7f1b843a7b92ce804443.png)
Vaadin text field size
Vaadin 文本字段大小
......@@ -66,7 +66,7 @@ layout.addComponents(txtFldOne);
```
//或者
或者
```java
final TextField txtFldTwo = new TextField();
......@@ -79,11 +79,11 @@ layout.addComponents(txtFldTwo);
```
## 我需要一个文本字段大小限制
## Vaadin 文本字段大小限制
![Vaadin text field limit](img/e6f85f60fcf32f45821bbb5fc3a1fddf.png)
Vaadin text field limit
Vaadin 文本字段限制
......@@ -99,11 +99,11 @@ layout.addComponents(txtFldOne);
```
## 我需要文本字段焦点
## Vaadin 文本字段焦点
![Vaadin text field focus](img/28867a25149e9b1db7bb339be60c906f.png)
Vaadin text field focus
Vaadin 文本字段焦点
......@@ -123,7 +123,7 @@ layout.addComponents(txtFldOne);
![Vaadin text field change events](img/ca703eee43068fd85a22d4e44ecc3611.png)
Vaadin text field change events
Vaadin 文本字段更改事件
......@@ -131,7 +131,7 @@ Vaadin text field change events
1. #### 值更改事件监听器
当文本字段中发生值更改时,将触发值更改事件;在编辑后,如果其失去焦点,则将触发**。 使用`ValueChangeListener`处理值更改事件。**
当文本字段中发生值更改时,或在编辑后失去焦点时,将触发值更改事件。 使用`ValueChangeListener`处理值更改事件。
```java
final TextField txtFld = new TextField();
......@@ -188,11 +188,11 @@ Vaadin text field change events
```
## 我要求文本字段为空验证
## Vaadin 文本字段空验证
![Vaadin text field empty validation](img/0001b0ddbb10de5d9bf7edbd34798278.png)
Vaadin text field empty validation
Vaadin 文本字段空验证
......@@ -235,17 +235,17 @@ layout.addComponents(txtFld);
在上面的示例中,我们在每个按键事件上验证文本字段。 如果您只想在对焦时验证该字段,请使用`ValueChangeEventListner`
## 我需要验证文本字段编号
## Vaadin 文本字段数字验证
![Vaadin text field number min-max validation](img/96f3caa15dfe70bd9c8b5f48f5ed9b1a.png)
Vaadin text field number min-max validation
Vaadin 文本字段数字最大最小验证
![Vaadin text field number format validation](img/8a0be367ed61c292d90f4bae1c5f903a.png)
Vaadin text field number format validation
Vaadin 文本字段数字格式验证
......@@ -285,7 +285,7 @@ txtFld.addTextChangeListener(new FieldEvents.TextChangeListener() {
```
## 我需要文本字段 CSS 样式
## Vaadin 文本字段 CSS 样式
所有文本字段均添加了样式名称`v-textfield`,因此,如果您希望将特定的 CSS 应用于所有文本字段,则将其添加到`v-textfield`类中。
......@@ -306,7 +306,7 @@ layout.addStyleName("darkBorder");
```
现在,您可以在 css 文件中定义样式规则。 样式名称将为{.v-textfield +自定义样式类添加到字段}
现在,您可以在 css 文件中定义样式规则。 样式名称将为`{.v-textfield+添加到字段的自定义样式类}`
```java
.v-textfield-darkBorder {
......@@ -551,6 +551,9 @@ public class MyUI extends UI {
资源:
[Vaadin 文本字段组件](https://vaadin.com/docs/-/part/framework/components/components-textfield.html)
[TextChangeListener](https://vaadin.com/api/7.6.8/com/vaadin/event/FieldEvents.TextChangeListener.html)
[ValueChangeListener](https://vaadin.com/api/com/vaadin/data/Property.ValueChangeListener.html)
[`TextChangeListener`](https://vaadin.com/api/7.6.8/com/vaadin/event/FieldEvents.TextChangeListener.html)
[`ValueChangeListener`](https://vaadin.com/api/com/vaadin/data/Property.ValueChangeListener.html)
[StackOverflow](https://stackoverflow.com/questions/27983569/how-to-create-a-real-time-validator-on-a-text-field-in-vaadin)
\ No newline at end of file
......@@ -2,9 +2,9 @@
> 原文: [https://howtodoinjava.com/vaadin/vaadin-spring-security-basicauth-example/](https://howtodoinjava.com/vaadin/vaadin-spring-security-basicauth-example/)
在本教程中,我们将学习在 [spring security](//howtodoinjava.com/spring-security-tutorial/) 模块提供的[基本身份验](//howtodoinjava.com/spring/spring-security/http-basic-authentication-example-using-spring-3/)安全性之后保护 vaadin 应用的安全。
在本教程中,我们将学习在 [spring security](//howtodoinjava.com/spring-security-tutorial/) 模块提供的[基本](//howtodoinjava.com/spring/spring-security/http-basic-authentication-example-using-spring-3/)安全性之后保护 vaadin 应用的安全。
I am updating the [vaadin hello world application](//howtodoinjava.com/vaadin/hello-world-web-application-maven/) sourcecode with spring security configuration, so if you already have any vaadin application, you can directly look into [spring security section](#basicauth-config).
我正在使用 Spring 安全配置更新 [vaadin helloworld 应用](//howtodoinjava.com/vaadin/hello-world-web-application-maven/)源代码,因此,如果您已经有任何 vaadin 应用,则可以直接查看 Spring 安全性部分。
```java
Table of Contents
......@@ -18,19 +18,19 @@ Run the application
## 开发环境
本示例使用以下工具和框架来构建演示 vaadin 应用,该应用在 spring 的基本身份验证安全性的保护下得到保护。
本示例使用以下工具和框架来构建演示 vaadin 应用,该应用在 spring 的基本证安全性的保护下得到保护。
1. [JDK 1.8](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
2. [我需要 7.7.0](https://vaadin.com/download/release/7.7/7.7.0/release-notes.html)
3. [Spring Security 4.1.3。发布](https://mvnrepository.com/artifact/org.springframework.security)
2. [Vaadin 7.7.0](https://vaadin.com/download/release/7.7/7.7.0/release-notes.html)
3. [Spring Security 4.1.3.RELEASE](https://mvnrepository.com/artifact/org.springframework.security)
4. [Eclipse Luna](https://eclipse.org/luna/)
5. [](https://eclipse.org/luna/)[Tomcat 7](https://tomcat.apache.org/download-70.cgi)
5. [Tomcat 7](https://tomcat.apache.org/download-70.cgi)
## Spring Security BasicAuth 配置
要配置 spring basicauth 安全性,您需要在类路径中添加`applicationContext.xml`文件(如果尚不存在),然后需要配置安全性设置,例如,安全的 URL 模式,哪些角色可以访问哪些 URL 等。
#### applicationContext.xml
#### `applicationContext.xml`
```java
<?xml version="1.0" encoding="UTF-8"?>
......@@ -64,7 +64,7 @@ Run the application
现在,您需要在`web.xml`文件中配置`springSecurityFilterChain`,以便将安全性添加到应用中。 另外,如果您添加了新的`applicationContext.xml`文件,则还需要注册`ContextLoaderListener`
#### web.xml
#### `web.xml`
```java
<?xml version="1.0" encoding="UTF-8"?>
......@@ -93,13 +93,13 @@ Run the application
```
Spring 基本身份验证配置已完成。 现在,您可以根据应用的要求修改各个部分。 例如。 您可能要从数据库中获取用户名/密码详细信息,然后可以在`applicationContext.xml`文件的`authentication-provider`中使用 [jdbc-user-service](//howtodoinjava.com/spring/spring-security/jdbc-user-service-based-spring-security-example/)
Spring 基本认证配置已完成。 现在,您可以根据应用的要求修改各个部分。 例如。 您可能要从数据库中获取用户名/密码详细信息,然后可以在`applicationContext.xml`文件的`authentication-provider`中使用[`jdbc-user-service`](//howtodoinjava.com/spring/spring-security/jdbc-user-service-based-spring-security-example/)
## 我需要 UI 配置
## Vaadin UI 配置
正如我已经提到的,我正在修改 vaadin hello world 应用,它具有非常基本的功能。 只需在`web.xml`文件和带有标签的主页屏幕中进行`VaadinServlet`配置,以在身份验证成功的情况下显示成功消息。
正如我已经提到的,我正在修改 vaadin helloworld 应用,它具有非常基本的功能。 只需在`web.xml`文件和带有标签的主页屏幕中进行`VaadinServlet`配置,以在认证成功的情况下显示成功消息。
#### web.xml
#### `web.xml`
```java
<?xml version="1.0" encoding="UTF-8"?>
......@@ -133,7 +133,7 @@ Spring 基本身份验证配置已完成。 现在,您可以根据应用的要
```
#### AppUI.java
#### `AppUI.java`
```java
package com.howtodoinjava.vaadin.demo;
......@@ -169,7 +169,7 @@ public class AppUI extends UI {
应用非常重要的一部分是收集和配置运行时依赖项。 当我们使用 [maven](//howtodoinjava.com/maven/) 时,我已将以下依赖项添加到现有的`pom.xml`文件中。
#### pom.xml
#### `pom.xml`
```java
<!-- Spring Security -->
......@@ -202,13 +202,13 @@ public class AppUI extends UI {
现在,该应用已配置完毕,可以进行测试了。 在浏览器中点击应用 URL。
1. #### 点击网址 http:// localhost:8080 / VaadinExample /
1. #### 点击网址`http://localhost:8080/VaadinExample/`
您将在浏览器弹出窗口中输入您的用户名和密码。
![Vaadin Spring Security BasicAuth Window](img/9955c4d8ea7f8e960448d6ed17ecdafc.png)
Vaadin Spring Security BasicAuth Window
Vaadin Spring Security BasicAuth 窗口
......@@ -222,7 +222,7 @@ public class AppUI extends UI {
![Vaadin Spring Security BasicAuth Successful](img/2f0219e69e9d3d4d26cb4a789416a708.png)
Vaadin Spring Security BasicAuth Successful
Vaadin Spring Security BasicAuth 成功
......@@ -233,5 +233,7 @@ public class AppUI extends UI {
资源:
[Spring 安全参考](https://docs.spring.io/spring-security/site/docs/4.1.3.RELEASE/reference/htmlsingle/)
[Vaadin Hello World 应用](//howtodoinjava.com/vaadin/hello-world-web-application-maven/)
[RFC-2617 [BasicAuth]](https://tools.ietf.org/html/rfc2617)
\ No newline at end of file
[Vaadin HelloWorld 应用](//howtodoinjava.com/vaadin/hello-world-web-application-maven/)
[RFC-2617 BasicAuth](https://tools.ietf.org/html/rfc2617)
\ No newline at end of file
......@@ -24,7 +24,7 @@
1. 所有源代码都安全地存储在中央服务器上的安全位置。
2. 如果由于系统或硬盘崩溃而导致本地计算机上的源代码丢失,那么从 VCS 中获取代码可以还原该源代码。
3. 可以在 VCS 上进行身份验证和授权。
3. 可以在 VCS 上进行证和授权。
4. VCS 负责管理版本控制,并且如果存在任何冲突,将不允许提交。
5. 维护提交日志以获取开发人员的提交信息。
......
......@@ -121,7 +121,7 @@ Tomcat 的默认配置包括名为 **localhost** 的主机。 可以通过在文
#### 领域(21-24 行)
领域组件可以出现在任何容器组件(引擎,主机和上下门)内。 **它代表用户,密码和用户角色的数据库。 其目的是支持基于容器的身份验证。**
领域组件可以出现在任何容器组件(引擎,主机和上下门)内。 **它代表用户,密码和用户角色的数据库。 其目的是支持基于容器的证。**
除了`UserDatabaseRealm`之外,还提供以下领域类:`JDBCRealm`(用于通过其 JDBC 驱动程序连接到关系数据库),`DataSourceRealm`(用于连接到通过 JNDI 命名的 JDBC 数据源),`JNDIRealm`(用于连接 到轻型目录访问协议目录)和`MemoryRealm`(将 XML 文件加载到内存中)。
......@@ -149,7 +149,7 @@ Tomcat 的默认配置包括名为 **localhost** 的主机。 可以通过在文
<Valve className="org.apache.catalina.valves.RequestDumperValve"/>
```
`single sign on valve`包含在主机容器中时,其作用是仅对该主机的所有应用进行一次身份验证。 如果没有此阀,则用户必须在使用每个单独的应用之前输入其 ID 和密码。
`single sign on valve`包含在主机容器中时,其作用是仅对该主机的所有应用进行一次证。 如果没有此阀,则用户必须在使用每个单独的应用之前输入其 ID 和密码。
```java
<Valve className="org.apache.catalina.valves.SingleSignOn"/>
......
......@@ -2,9 +2,9 @@
> 原文: [https://howtodoinjava.com/tomcat/how-to-configure-tomcat-with-ssl-or-https/](https://howtodoinjava.com/tomcat/how-to-configure-tomcat-with-ssl-or-https/)
[**安全套接字层(SSL)**](https://www.digicert.com/ssl.htm "ssl") 是用于使用加密方法在互联网上进行通信的安全传输协议。 SSL 协议的主要目的是确保**不会有人篡改浏览器与部署 Web 应用的服务器**之间的通信。 安全通信的另一个目的是**根据 SSL 信息对服务器及其所有者进行身份验证的能力 – 这样,用户就可以确定它正在访问的服务器**。 在常见的 SSL 方案中,当用户首次访问 Web 服务器时,服务器会将其 SSL 证书或公共密钥发送给客户端。 SSL 证书包含有关服务器,其所有者,公司及其有效期的信息。 如果用户不信任证书的真实性,则可以拒绝该证书,从而有效地终止连接。 如果用户接受证书,则证书本身存储在浏览器中,并用于启动与发行服务器的安全连接。
[**安全套接字层(SSL)**](https://www.digicert.com/ssl.htm "ssl") 是用于使用加密方法在互联网上进行通信的安全传输协议。 SSL 协议的主要目的是确保**不会有人篡改浏览器与部署 Web 应用的服务器**之间的通信。 安全通信的另一个目的是**根据 SSL 信息对服务器及其所有者进行证的能力 – 这样,用户就可以确定它正在访问的服务器**。 在常见的 SSL 方案中,当用户首次访问 Web 服务器时,服务器会将其 SSL 证书或公共密钥发送给客户端。 SSL 证书包含有关服务器,其所有者,公司及其有效期的信息。 如果用户不信任证书的真实性,则可以拒绝该证书,从而有效地终止连接。 如果用户接受证书,则证书本身存储在浏览器中,并用于启动与发行服务器的安全连接。
通过 HTTP 协议进行的 SSL 协议通信称为 **HTTPS** (安全 HTTP)。 使用 SSL 加密连接的网站在浏览器的地址栏中显示 https 作为协议名称,例如。 名为[**证书颁发机构(CA)**](https://en.wikipedia.org/wiki/Certificate_authority "Certificate_authority")的组织可以对 SSL 证书的详细信息进行身份验证,因此,如果用户信任 CA,则可以确保安全网站及其证书已通过认证。 细节是正确的。 有许多可以颁发认证的 SSL 证书的 CA。 现代浏览器会自动识别最大和最知名的 CA,并允许自动连接到提供由这些组织认证的 SSL 证书的站点。 如果 SSL 证书未通过 CA 认证,或未通过 CA 认证但未被用户的浏览器识别,则将向用户显示警告屏幕,用户可以在该屏幕上决定是否信任该证书。
通过 HTTP 协议进行的 SSL 协议通信称为 **HTTPS** (安全 HTTP)。 使用 SSL 加密连接的网站在浏览器的地址栏中显示 https 作为协议名称,例如。 名为[**证书颁发机构(CA)**](https://en.wikipedia.org/wiki/Certificate_authority "Certificate_authority")的组织可以对 SSL 证书的详细信息进行证,因此,如果用户信任 CA,则可以确保安全网站及其证书已通过认证。 细节是正确的。 有许多可以颁发认证的 SSL 证书的 CA。 现代浏览器会自动识别最大和最知名的 CA,并允许自动连接到提供由这些组织认证的 SSL 证书的站点。 如果 SSL 证书未通过 CA 认证,或未通过 CA 认证但未被用户的浏览器识别,则将向用户显示警告屏幕,用户可以在该屏幕上决定是否信任该证书。
```java
Configuring tomcat with SSL is three step process.
......
......@@ -100,7 +100,7 @@ public class LazySingleton {
上面的代码是单例模式的正确实现。
请确保对实例变量使用[**`volatile`**](https://en.wikipedia.org/wiki/Volatile_variable#In_Java)关键字,否则您可能会遇到乱码的错误情况,在实例实际构造对象之前返回实例的引用,即 JVM 仅分配了内存,而构造器代码仍未执行。 在这种情况下,引用未初始化对象的其他线程可能会引发空指针异常,甚至可能使整个应用程序崩溃。
请确保对实例变量使用[**`volatile`**](https://en.wikipedia.org/wiki/Volatile_variable#In_Java)关键字,否则您可能会遇到乱码的错误情况,在实例实际构造对象之前返回实例的引用,即 JVM 仅分配了内存,而构造器代码仍未执行。 在这种情况下,引用未初始化对象的其他线程可能会引发空指针异常,甚至可能使整个应用崩溃。
## 3.使用静态块初始化的单例
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册