Java 中文官方教程 2022 版(十)(2)

简介: Java 中文官方教程 2022 版(十)

Java 中文官方教程 2022 版(十)(1)https://developer.aliyun.com/article/1486347

首先,应用程序设置一个默认的Properties对象。该对象包含一组属性,如果在其他地方没有明确设置值,则使用这些属性。然后,load 方法从名为defaultProperties的磁盘上的文件中读取默认值。

接下来,应用程序使用不同的构造函数创建第二个Properties对象applicationProps,其默认值包含在defaultProps中。当检索属性时,默认值起作用。如果在applicationProps中找不到属性,则会搜索其默认列表。

最后,代码从名为appProperties的文件中将一组属性加载到applicationProps中。该文件中的属性是上次调用应用程序时保存的属性,如下一节所述。

保存属性

以下示例使用Properties.store从前一个示例中写出应用程序属性。默认属性不需要每次保存,因为它们永远不会更改。

FileOutputStream out = new FileOutputStream("appProperties");
applicationProps.store(out, "---No Comment---");
out.close();

store方法需要一个要写入的流,以及一个字符串,该字符串用作输出顶部的注释。

获取属性信息

一旦应用程序设置了其Properties对象,应用程序可以查询该对象以获取有关其包含的各种键和值的信息。应用程序在启动后从Properties对象获取信息,以便根据用户的选择初始化自身。Properties类有几种获取属性信息的方法:

  • contains(Object value)containsKey(Object key)
    如果值或键在Properties对象中,则返回truePropertiesHashtable继承这些方法。因此,它们接受Object参数,但只应使用String值。
  • getProperty(String key)getProperty(String key, String default)
    返回指定属性的值。第二个版本提供默认值。如果找不到键,则返回默认值。
  • list(PrintStream s)list(PrintWriter w)
    将所有属性写入指定的流或写入器。这对于调试很有用。
  • elements()keys()propertyNames()
    返回一个包含Properties对象中包含的键或值(如方法名所示)的枚举。keys方法仅返回对象本身的键;propertyNames方法还返回默认属性的键。
  • stringPropertyNames()
    类似于propertyNames,但返回一个Set,并且仅返回键和值都是字符串的属性名称。请注意,Set对象不由Properties对象支持,因此对其中一个对象的更改不会影响另一个对象。
  • size()
    返回当前键/值对的数量。

设置属性

用户在应用程序执行期间与应用程序的交互可能会影响属性设置。这些更改应该反映在Properties对象中,以便在应用程序退出时(并调用store方法时)保存这些更改。以下方法更改Properties对象中的属性:

  • setProperty(String key, String value)
    将键/值对放入Properties对象中。
  • remove(Object key)
    删除与键关联的键/值对。

注意: 上述描述的一些方法在Hashtable中定义,因此接受除String之外的键和值参数类型。始终使用String作为键和值,即使该方法允许其他类型。同时不要在Properties对象上调用Hashtable.setHastable.setAll;始终使用Properties.setProperty


命令行参数

原文:docs.oracle.com/javase/tutorial/essential/environment/cmdLineArgs.html

一个 Java 应用程序可以从命令行接受任意数量的参数。这允许用户在启动应用程序时指定配置信息。

用户在调用应用程序时输入命令行参数,并在要运行的类名后指定这些参数。例如,假设一个名为Sort的 Java 应用程序对文件中的行进行排序。要对名为friends.txt的文件中的数据进行排序,用户会输入:

java Sort friends.txt

当一个应用程序启动时,运行时系统会通过一个String数组将命令行参数传递给应用程序的主方法。在前面的示例中,传递给Sort应用程序的命令行参数是包含一个单独String的数组:"friends.txt"

回显命令行参数

Echo示例会将每个命令行参数单独显示在一行上:

public class Echo {
    public static void main (String[] args) {
        for (String s: args) {
            System.out.println(s);
        }
    }
}

以下示例展示了用户如何运行Echo。用户输入以斜体显示。

*java Echo Drink Hot Java*
Drink
Hot
Java

请注意,应用程序会将每个单词 — DrinkHotJava — 单独显示在一行上。这是因为空格字符分隔命令行参数。要将DrinkHotJava解释为单个参数,用户应该用引号将它们括起来。

*java Echo "Drink Hot Java"*
Drink Hot Java

解析数值型命令行参数

如果一个应用程序需要支持一个表示数字的命令行参数,它必须将代表数字的String参数(如"34")转换为数值。以下是一个将命令行参数转换为int的代码片段:

int firstArg;
if (args.length > 0) {
    try {
        firstArg = Integer.parseInt(args[0]);
    } catch (NumberFormatException e) {
        System.err.println("Argument" + args[0] + " must be an integer.");
        System.exit(1);
    }
}

如果parseIntargs[0]的格式无效,会抛出NumberFormatException。所有的Number类 — IntegerFloatDouble等等 — 都有parseXXX方法,将代表数字的String转换为其类型的对象。

环境变量

原文:docs.oracle.com/javase/tutorial/essential/environment/env.html

许多操作系统使用环境变量将配置信息传递给应用程序。与 Java 平台中的属性类似,环境变量是键/值对,其中键和值都是字符串。设置和使用环境变量的约定在操作系统之间以及命令行解释器之间有所不同。要了解如何在您的系统上将环境变量传递给应用程序,请参考系统文档。

查询环境变量

在 Java 平台上,应用程序使用System.getenv来检索环境变量的值。没有参数时,getenv返回一个只读的java.util.Map实例,其中映射键是环境变量名称,映射值是环境变量值。这在EnvMap示例中有所展示:

import java.util.Map;
public class EnvMap {
    public static void main (String[] args) {
        Map<String, String> env = System.getenv();
        for (String envName : env.keySet()) {
            System.out.format("%s=%s%n",
                              envName,
                              env.get(envName));
        }
    }
}

使用String参数,getenv返回指定变量的值。如果未定义变量,则getenv返回nullEnv示例以这种方式使用getenv来查询在命令行上指定的特定环境变量:

public class Env {
    public static void main (String[] args) {
        for (String env: args) {
            String value = System.getenv(env);
            if (value != null) {
                System.out.format("%s=%s%n",
                                  env, value);
            } else {
                System.out.format("%s is"
                    + " not assigned.%n", env);
            }
        }
    }
}

将环境变量传递给新进程

当 Java 应用程序使用ProcessBuilder对象创建新进程时,传递给新进程的默认环境变量集合与提供给应用程序的虚拟机进程的集合相同。应用程序可以使用ProcessBuilder.environment更改此集合。

平台依赖性问题

不同系统上实现环境变量的方式之间存在许多微妙的差异。例如,Windows 在环境变量名称中忽略大小写,而 UNIX 则不会。环境变量的使用方式也各不相同。例如,Windows 在名为USERNAME的环境变量中提供用户名,而 UNIX 实现可能在USERLOGNAME或两者中提供用户名。

为了最大化可移植性,在系统属性中提供相同值时,永远不要引用环境变量。例如,如果操作系统提供用户名,则始终可以在系统属性user.name中找到。

其他配置实用程序

原文:docs.oracle.com/javase/tutorial/essential/environment/other.html

这里是一些其他配置实用程序的摘要。

首选项 API允许应用程序在一个与实现相关的后备存储中存储和检索配置数据。支持异步更新,并且同一组首选项可以被多个线程甚至多个应用程序安全地更新。更多信息,请参考首选项 API 指南

部署在JAR 归档中的应用程序使用清单来描述归档的内容。更多信息,请参考在 JAR 文件中打包程序课程。

Java Web Start 应用程序的配置包含在一个JNLP 文件中。更多信息,请参考 Java Web Start 课程。

Java 插件小程序的配置部分取决于用于在网页中嵌入小程序的 HTML 标签。根据小程序和浏览器,这些标签可以包括。更多信息,请参考 Java 小程序课程。

java.util.ServiceLoader提供了一个简单的服务提供者设施。服务提供者是服务的实现—一组众所周知的接口和(通常是抽象的)类。服务提供者的类通常实现服务中定义的接口并子类化类。服务提供者可以作为扩展安装(参见扩展机制)。提供者也可以通过将它们添加到类路径或通过其他特定于平台的方式来提供。

系统工具

原文:docs.oracle.com/javase/tutorial/essential/environment/system.html

System 类实现了许多系统工具。其中一些已经在之前关于配置工具的部分中介绍过。本节介绍其他一些系统工具。

命令行 I/O 对象

原文:docs.oracle.com/javase/tutorial/essential/environment/cl.html

System 提供了几个预定义的 I/O 对象,这些对象在一个旨在从命令行启动的 Java 应用程序中非常有用。这些对象实现了大多数操作系统提供的标准 I/O 流,还有一个对于输入密码很有用的控制台对象。更多信息,请参考从命令行进行 I/O 在 基本 I/O 课程中。

系统属性

原文:docs.oracle.com/javase/tutorial/essential/environment/sysprop.html

在 Properties 中,我们研究了应用程序如何使用 Properties 对象来维护其配置。Java 平台本身使用 Properties 对象来维护自己的配置。System 类维护一个描述当前工作环境配置的 Properties 对象。系统属性包括当前用户、当前 Java 运行时版本以及用于分隔文件路径名组件的字符的信息。

以下表格描述了一些最重要的系统属性。

含义
"file.separator" 文件路径中分隔组件的字符。在 UNIX 上是 “/”,在 Windows 上是 “\”。
"java.class.path" 用于查找包含类文件的目录和 JAR 存档的路径。类路径的元素由 path.separator 属性中指定的特定于平台的字符分隔。
"java.home" Java Runtime Environment (JRE) 的安装目录
"java.vendor" JRE 供应商名称
"java.vendor.url" JRE 供应商 URL
"java.version" JRE 版本号
"line.separator" 操作系统用于在文本文件中分隔行的序列
"os.arch" 操作系统架构
"os.name" 操作系统名称
"os.version" 操作系统版本
"path.separator" java.class.path 中使用的路径分隔符字符
"user.dir" 用户工作目录
"user.home" 用户主目录
"user.name" 用户账户名

安全注意事项: 访问系统属性可能受到 安全管理器 的限制。这在小程序中最常见,小程序被阻止读取某些系统属性,并且无法写入任何系统属性。有关在小程序中访问系统属性的更多信息,请参阅 System Properties 中的 Java 富互联网应用程序进阶 课程。


读取系统属性

System 类有两个用于读取系统属性的方法:getPropertygetProperties

System 类有两个不同版本的 getProperty。两者都检索参数列表中命名的属性的值。其中较简单的 getProperty 方法接受一个参数,即属性键。例如,要获取 path.separator 的值,请使用以下语句:

System.getProperty("path.separator");

getProperty 方法返回一个包含属性值的字符串。如果属性不存在,此版本的 getProperty 返回 null。

getProperty 的另一个版本需要两个 String 参数:第一个参数是要查找的键,第二个参数是在找不到键或键没有值时要返回的默认值。例如,下面的 getProperty 调用查找名为 subliminal.messageSystem 属性。这不是一个有效的系统属性,所以该方法返回提供的第二个参数作为默认值:“购买 StayPuft 棉花糖!

System.getProperty("subliminal.message", "Buy StayPuft Marshmallows!");

System 类提供的最后一个方法用于访问属性值的是 getProperties 方法,它返回一个 Properties 对象。该对象包含完整的系统属性定义集。

写入系统属性

要修改现有的系统属性集,请使用 System.setProperties。此方法接受一个已初始化以包含要设置的属性的 Properties 对象。此方法用新的由 Properties 对象表示的属性集替换整个系统属性集。


警告: 改变系统属性可能是潜在危险的,应谨慎操作。许多系统属性在启动后不会重新读取,并且仅用于信息目的。更改某些属性可能会产生意想不到的副作用。


下一个示例,PropertiesTest,创建一个 Properties 对象,并从 myProperties.txt 初始化它。

subliminal.message=Buy StayPuft Marshmallows!

PropertiesTest 然后使用 System.setProperties 将新的 Properties 对象安装为当前系统属性集。

import java.io.FileInputStream;
import java.util.Properties;
public class PropertiesTest {
    public static void main(String[] args)
        throws Exception {
        // set up new properties object
        // from file "myProperties.txt"
        FileInputStream propFile =
            new FileInputStream( "myProperties.txt");
        Properties p =
            new Properties(System.getProperties());
        p.load(propFile);
        // set the system properties
        System.setProperties(p);
        // display new properties
        System.getProperties().list(System.out);
    }
}

注意 PropertiesTest 如何创建 Properties 对象 p,并将其用作 setProperties 的参数:

Properties p = new Properties(System.getProperties());

此语句使用当前系统属性集初始化新的属性对象 p,在这个小应用程序的情况下,这是运行时系统初始化的属性集。然后应用程序从文件 myProperties.txt 中加载额外的属性到 p 中,并将系统属性设置为 p。这将导致将 myProperties.txt 中列出的属性添加到运行时系统在启动时创建的属性集中。请注意,应用程序可以创建没有任何默认 Properties 对象的 p,如下所示:

Properties p = new Properties();

还要注意系统属性的值是可以被覆盖的!例如,如果 myProperties.txt 包含以下行,则 java.vendor 系统属性将被覆盖:

java.vendor=Acme Software Company

一般来说,要小心不要覆盖系统属性。

setProperties 方法更改当前运行应用程序的系统属性集。这些更改不是持久的。也就是说,在应用程序内更改系统属性不会影响此应用程序或任何其他应用程序的将来调用 Java 解释器。运行时系统每次启动时都会重新初始化系统属性。如果要使系统属性的更改持久化,则应用程序必须在退出之前将值写入某个文件,并在启动时重新读取。

安全管理器

原文:docs.oracle.com/javase/tutorial/essential/environment/security.html

安全管理器是为应用程序定义安全策略的对象。该策略指定了不安全或敏感的操作。安全策略不允许的任何操作都会导致抛出SecurityException。应用程序还可以查询其安全管理器以发现哪些操作是允许的。

通常,Web 小程序在浏览器或 Java Web Start 插件提供的安全管理器下运行。其他类型的应用程序通常在没有安全管理器的情况下运行,除非应用程序本身定义了一个。如果没有安全管理器存在,应用程序就没有安全策略,并且可以无限制地运行。

本节解释了应用程序如何与现有安全管理器交互。有关更详细的信息,包括如何设计安全管理器的信息,请参考安全指南

与安全管理器交互

安全管理器是SecurityManager类型的对象;要获取对此对象的引用,请调用System.getSecurityManager

SecurityManager appsm = System.getSecurityManager();

如果没有安全管理器,则此方法返回null

一旦应用程序有了安全管理器对象的引用,它可以请求执行特定操作的权限。标准库中的许多类都会这样做。例如,System.exit用于终止具有退出状态的 Java 虚拟机,会调用SecurityManager.checkExit来确保当前线程有权限关闭应用程序。

SecurityManager 类定义了许多其他方法,用于验证其他类型的操作。例如,SecurityManager.checkAccess验证线程访问,SecurityManager.checkPropertyAccess验证对指定属性的访问。每个操作或操作组都有自己的check*XXX*()方法。

此外,check*XXX*()方法集表示已受安全管理器保护的操作集。通常,应用程序不必直接调用任何check*XXX*()方法。

识别安全违规

许多在没有安全管理器的情况下是例行操作的操作,在有安全管理器的情况下可能会抛出SecurityException。即使调用一个没有记录为抛出SecurityException的方法也是如此。例如,考虑以下用于写入文件的代码:

reader = new FileWriter("xanadu.txt");

在没有安全管理器的情况下,此语句执行时不会出错,前提是xanadu.txt存在且可写。但假设此语句插入到一个通常在不允许文件输出的安全管理器下运行的 Web 小程序中。可能会导致以下错误消息:

*appletviewer fileApplet.html*
    Exception in thread "AWT-EventQueue-1" java.security.AccessControlException: access denied (java.io.FilePermission xanadu.txt write)
        at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
        at java.security.AccessController.checkPermission(AccessController.java:546)
        at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
        at java.lang.SecurityManager.checkWrite(SecurityManager.java:962)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:169)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:70)
        at java.io.FileWriter.<init>(FileWriter.java:46)
*...*

请注意,在这种情况下抛出的具体异常java.security.AccessControlExceptionSecurityException的子类。

System 中的其他方法

原文:docs.oracle.com/javase/tutorial/essential/environment/sysmisc.html

本节描述了一些在前几节中未涵盖的System中的方法。

arrayCopy 方法有效地在数组之间复制数据。有关更多信息,请参考 Arrays 中的 Language Basics 课程。

currentTimeMillisnanoTime 方法在应用程序执行期间测量时间间隔很有用。要测量毫秒级时间间隔,需要在间隔开始和结束时分别调用currentTimeMillis,并将第一个返回值从第二个返回值中减去。类似地,连续调用nanoTime可以测量纳秒级时间间隔。


注意: currentTimeMillisnanoTime 的准确性受操作系统提供的时间服务限制。不要假设currentTimeMillis精确到最近的毫秒,也不要假设nanoTime精确到最近的纳秒。此外,既不应该使用currentTimeMillis也不应该使用nanoTime来确定当前时间。应使用高级方法,如java.util.Calendar.getInstance


exit 方法导致 Java 虚拟机关闭,退出状态由参数指定。退出状态可供启动应用程序的进程使用。按照惯例,退出状态为0表示应用程序正常终止,而其他任何值都是错误代码。

PATH 和 CLASSPATH

原文:docs.oracle.com/javase/tutorial/essential/environment/paths.html

本节解释了如何在 Microsoft Windows、Solaris 和 Linux 上使用PATHCLASSPATH环境变量。请查阅随 Java 开发工具包(JDK)软件包安装包含的安装说明以获取最新信息。

安装软件后,JDK 目录将具有如下结构。

bin目录包含编译器和启动器。

更新 PATH 环境变量(Microsoft Windows)

没有设置PATH环境变量也可以正常运行 Java 应用程序。或者,您可以选择性地设置它以方便使用。

如果要方便地从任何目录运行可执行文件(javac.exejava.exejavadoc.exe等),而不必键入命令的完整路径,则设置PATH环境变量。如果不设置PATH变量,每次运行时都需要指定可执行文件的完整路径,例如:

C:\Java\jdk1.7.0\bin\javac MyClass.java

PATH环境变量是一系列由分号(;)分隔的目录。Microsoft Windows 按照从左到右的顺序在PATH目录中查找程序。每次只能在路径中有一个 JDK 的bin目录(第一个之后的将被忽略),因此如果已经存在一个,可以更新该特定条目。

以下是一个PATH环境变量的示例:

C:\Java\jdk1.7.0\bin;C:\Windows\System32\;C:\Windows\;C:\Windows\System32\Wbem

PATH环境变量永久设置是有用的,这样在重新启动后它将保留。要对PATH变量进行永久更改,请使用控制面板中的系统图标。具体的操作步骤因 Windows 版本而异:

Windows XP

  1. 选择开始,选择控制面板。双击系统,选择高级选项卡。
  2. 点击环境变量。在系统变量部分,找到PATH环境变量并选择它。点击编辑。如果PATH环境变量不存在,点击新建
  3. 编辑系统变量(或新建系统变量)窗口中,指定PATH环境变量的值。点击确定。通过点击确定关闭所有剩余窗口。

Windows Vista:

  1. 从桌面上右键单击我的电脑图标。
  2. 从上下文菜单中选择属性
  3. 点击高级选项卡(在 Vista 中点击高级系统设置链接)。
  4. 点击环境变量。在系统变量部分,找到PATH环境变量并选择它。点击编辑。如果PATH环境变量不存在,点击新建
  5. 编辑系统变量(或新建系统变量)窗口中,指定PATH环境变量的值。点击确定。通过点击确定关闭所有剩余窗口。

Windows 7:

  1. 从桌面上右键单击计算机图标。
  2. 从上下文菜单中选择属性
  3. 点击高级系统设置链接。
  4. 点击环境变量。在系统变量部分,找到PATH环境变量并选择它。点击编辑。如果PATH环境变量不存在,点击新建
  5. 编辑系统变量(或新建系统变量)窗口中,指定PATH环境变量的值。点击确定。通过点击确定关闭所有剩余窗口。

**注意:**在从控制面板编辑PATH环境变量时,可能会看到类似以下内容的环境变量:

%JAVA_HOME%\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem

用百分号(%)括起来的变量是现有的环境变量。如果这些变量中的一个在控制面板的环境变量窗口中列出(如JAVA_HOME),则可以编辑其值。如果未显示,则是操作系统定义的特殊环境变量。例如,SystemRoot是 Microsoft Windows 系统文件夹的位置。要获取环境变量的值,请在命令提示符下输入以下内容。(此示例获取SystemRoot环境变量的值):

echo %SystemRoot%

更新 PATH 变量(Solaris 和 Linux)

您可以很好地运行 JDK 而不设置PATH变量,或者可以选择设置它作为便利。但是,如果要能够从任何目录运行可执行文件(javacjavajavadoc等),而不必键入命令的完整路径,则应该设置路径变量。如果不设置PATH变量,每次运行时都需要指定可执行文件的完整路径,例如:

% /usr/local/jdk1.7.0/bin/javac MyClass.java

要查看路径是否正确设置,请执行:

% java -version

如果可以找到,这将打印java工具的版本。如果版本过旧或者出现错误java: Command not found,则路径未正确设置。

要永久设置路径,请在启动文件中设置路径。

对于 C shell(csh),编辑启动文件(~/.cshrc):

set path=(/usr/local/jdk1.7.0/bin $path)

对于bash,编辑启动文件(~/.bashrc):

PATH=/usr/local/jdk1.7.0/bin:$PATH
export PATH

对于ksh,启动文件由环境变量ENV命名。要设置路径:

PATH=/usr/local/jdk1.7.0/bin:$PATH
export PATH

对于sh,编辑配置文件(~/.profile):

PATH=/usr/local/jdk1.7.0/bin:$PATH
export PATH

然后加载启动文件,并通过重复java命令验证路径是否设置:

对于 C shell(csh):

% source ~/.cshrc
% java -version

对于kshbashsh

% . /.profile
% java -version

Java 中文官方教程 2022 版(十)(3)https://developer.aliyun.com/article/1486350

相关文章
|
9天前
|
Java 测试技术 Python
《手把手教你》系列技巧篇(二十九)-java+ selenium自动化测试- Actions的相关操作上篇(详解教程)
【4月更文挑战第21天】本文介绍了Selenium中处理特殊测试场景的方法,如鼠标悬停。Selenium的Actions类提供了鼠标悬停功能,用于模拟用户在网页元素上的悬停行为。文中通过实例展示了如何使用Actions悬停并展开下拉菜单,以及在搜索时选择自动补全的字段。代码示例包括了打开百度首页,悬停在“更多”元素上显示下拉菜单并点击“音乐”,以及在搜索框输入关键词并自动补全的过程。
33 0
|
1天前
|
Java 测试技术 Python
《手把手教你》系列技巧篇(三十六)-java+ selenium自动化测试-单选和多选按钮操作-番外篇(详解教程)
【4月更文挑战第28天】本文简要介绍了自动化测试的实战应用,通过一个在线问卷调查(&lt;https://www.sojump.com/m/2792226.aspx/&gt;)为例,展示了如何遍历并点击问卷中的选项。测试思路包括找到单选和多选按钮的共性以定位元素,然后使用for循环进行点击操作。代码设计方面,提供了Java+Selenium的示例代码,通过WebDriver实现自动答题。运行代码后,可以看到控制台输出和浏览器的相应动作。文章最后做了简单的小结,强调了本次实践是对之前单选多选操作的巩固。
9 0
|
2天前
|
Java 测试技术 项目管理
Java基础教程(22)-构建工具Maven的基本使用
【4月更文挑战第22天】Maven是Java项目管理及构建工具,简化构建、测试、打包和部署等任务。遵循约定优于配置原则,核心是`pom.xml`配置文件,用于管理依赖和项目信息。安装涉及下载、解压、配置环境变量。在IDEA中使用Maven创建项目,通过`pom.xml`添加依赖和管理版本。常用命令包括`clean`、`compile`、`test`、`package`、`install`和`deploy`。IDEA支持直接执行这些命令。
|
2天前
|
NoSQL Java 关系型数据库
Java基础教程(21)-Java连接MongoDB
【4月更文挑战第21天】MongoDB是开源的NoSQL数据库,强调高性能和灵活性。Java应用通过MongoDB Java驱动与之交互,涉及MongoClient、MongoDatabase、MongoCollection和Document等组件。连接MongoDB的步骤包括:配置连接字符串、创建MongoClient、选择数据库和集合。伪代码示例展示了如何建立连接、插入和查询数据。
|
3天前
|
存储 前端开发 测试技术
《手把手教你》系列技巧篇(三十五)-java+ selenium自动化测试-单选和多选按钮操作-下篇(详解教程)
【4月更文挑战第27天】本文介绍了使用Java+Selenium进行Web自动化测试时,如何遍历和操作多选按钮的方法。文章分为两个部分,首先是一个本地HTML页面的示例,展示了多选按钮的HTML代码和页面效果,并详细解释了遍历多选按钮的思路:找到所有多选按钮的共同点,通过定位这些元素并放入list容器中,然后使用for循环遍历并操作。 第二部分介绍了在JQueryUI网站上的实战,给出了被测网址,展示了代码设计,同样使用了findElements()方法获取所有多选按钮并存储到list中,然后遍历并进行点击操作。最后,文章对整个过程进行了小结,并推荐了作者的其他自动化测试教程资源。
11 0
|
3天前
|
Java 关系型数据库 MySQL
Java基础教程(20)-Java连接mysql数据库CURD
【4月更文挑战第19天】MySQL是流行的关系型数据库管理系统,支持SQL语法。在IDEA中加载jar包到项目类路径:右击项目,选择“Open Module Settings”,添加库文件。使用JDBC连接MySQL,首先下载JDBC驱动,然后通过`Class.forName()`加载驱动,`DriverManager.getConnection()`建立连接。执行CRUD操作,例如创建表、插入数据和查询,使用`Statement`或`PreparedStatement`,并确保正确关闭数据库资源。
|
4天前
|
设计模式 算法 Java
Java基础教程(19)-设计模式简述
【4月更文挑战第19天】设计模式是软件设计中反复使用的代码设计经验,旨在提升代码的可重用性、可扩展性和可维护性。23种模式分为创建型、结构型和行为型三类。创建型模式如工厂方法、抽象工厂、建造者、原型和单例,关注对象创建与使用的分离。结构型模式涉及对象组合,如适配器、装饰器、外观等,增强结构灵活性。行为型模式专注于对象间职责分配和算法合作,包括责任链、命令、观察者等。设计模式提供标准化解决方案,促进代码交流和复用。
|
4天前
|
前端开发 测试技术 Python
《手把手教你》系列技巧篇(三十三)-java+ selenium自动化测试-单选和多选按钮操作-上篇(详解教程)
【4月更文挑战第25天】本文介绍了自动化测试中如何处理单选和多选按钮的操作,包括它们的定义、HTML代码示例以及如何判断和操作这些元素。文章通过一个简单的HTML页面展示了单选和多选框的示例,并提供了Java+Selenium实现的代码示例,演示了如何检查单选框是否选中以及如何进行全选操作。
11 0
|
5天前
|
网络协议 Java 网络架构
Java基础教程(18)-Java中的网络编程
【4月更文挑战第18天】Java网络编程简化了底层协议处理,利用Java标准库接口进行TCP/IP通信。TCP协议提供可靠传输,常用于HTTP、SMTP等协议;UDP协议则更高效但不保证可靠性。在TCP编程中,ServerSocket用于监听客户端连接,Socket实现双进程间通信。UDP编程中,DatagramSocket处理无连接的数据报文。HTTP编程可以通过HttpURLConnection发送请求并接收响应。
|
6天前
|
前端开发 Java 测试技术
《手把手教你》系列技巧篇(三十二)-java+ selenium自动化测试-select 下拉框(详解教程)
【4月更文挑战第24天】本文介绍了在自动化测试中处理HTML下拉选择(select)的方法。使用Selenium的Select类,可以通过index、value或visible text三种方式选择选项,并提供了相应的取消选择的方法。此外,文章还提供了一个示例HTML页面(select.html)和相关代码实战,演示了如何使用Selenium进行选择和取消选择操作。最后,文章提到了现代网页中类似下拉框的新设计,如12306网站的出发地选择,并给出了相应的代码示例,展示了如何定位并选择特定选项。
16 0