IntelliJ IDEA如何部署项目、部署方式以及部署相关的操作

文章目录

  • 工件列表
    • 工件类型
  • 添加工件
  • 部署项目
    • exploded 工件的部署
    • war 工件的部署
    • 手动部署项目
      • war 包部署
      • exploded 部署
  • 部署有关的操作
    • deploy/redeploy(部署/重新部署)
    • rerun/run(重启服务器/启动服务器)
    • Update resources(更新静态资源)
    • Update classes and resources(更新字节码文件和静态资源)
    • 汇总

注:本文中的 IDE 是 IntelliJ IDEA for Mac。

工件列表

部署项目之前,你要先添加有关 Web 工程的工件(Artifact),其实在创建 Java Web Module 的时候 IDEA 会自动添加模块的 Artifact。

注:这个 Web 工程其实是 IDEA Project 中的一个模块(Module)而已。

在这里插入图片描述
注意:
以 exploded 工件部署项目后,再把 exploded 工件删除了,再次部署项目时,会将部署用的 xml 配置文件删除,最终部署失败。但是工件输出目录下的部署包存在。

以 war 工件部署项目后,再把 war 工件删除了,再次部署项目时,最终部署失败,但是工件输出目录下的 war文件以及 webapps 下的部署包都存在。

以 war 工件部署项目后,再把 exploded 工件删除了,再次部署项目时,会将工件输出目录下的 war 文件删除,最终部署失败。但是 webapps 目录下的部署包存在。

工件类型

war:表示 IDEA 会将项目按 web 服务的目录结构生成一个部署包,然后打成 war 包,存放在指定的输出目录下
war exploded:表示 IDEA 会将项目按 web 服务的目录结构生成一个部署包,直接存放在指定的输出目录下,不会将部署包打成 war 包

添加工件

工件是依赖于项目产生的,所以添加工件的时候你需要选择对应的项目模块。而且添加项目工件时,必须先添加 Exploded 类型的工件,才能添加 war 类型的工件。
在这里插入图片描述
添加了某个项目的 Exploded 类型的工件后,你才能添加该项目的 Archive 类型的工件:
在这里插入图片描述

部署项目

添加了项目的工件构建方式后,在 tomcat 的 deployment 中就可以选择添加了,如下图所示:
在这里插入图片描述
服务器配置中,若 deployment 没有添加任何工件,会显示一个红色 ×
在这里插入图片描述

exploded 工件的部署

若你选择的是 exploded 项目工件,IDEA 会根据工件类型来构建工件,也就是构建部署包,构建的部署包会存放在指定输出目录下(/Users/liaowenxiong/Documents/IdeaProjects/java-exercises/out/artifacts),不会打成 war 包,也不会存放在 tomcat 的 webapps 目录下;

接着会生成一个 xml 配置文件,这个 xml 文件以虚拟目录命名,存放在 IDEA 一个特定的目录下(/Users/liaowenxiong/Library/Caches/JetBrains/IntelliJIdea2020.3/tomcat/0e0b39f5-0ff8-4713-ab72-81b276953084/conf/catalina/localhost)。在这个文件中配置标签 <Context> 的 docBase 属性的值,而这个属性值就是部署包的路径。

注意:
1.以 exploded 工件部署的,把工件列表中的 exploded 工件删除了,再次部署时会删除 conf/catalina/localhost目录下的 xml 文件,导致部署失败。但是删除 war 工件不会影响 exploded 工件的部署。

在这里插入图片描述

2.将 tomcat 配置文件下的 deployment 相关部署工件删除,再次部署的时候会删除 conf/catalina/localhost目录下的 xml 文件,导致部署失败。

在这里插入图片描述

war 工件的部署

如果你选择的是 war 工件,那么 IDEA 会根据 web 服务的目录结构生成部署包,然后打成 war 包,war 包会存放在指定的工件输出目录下;

接着会生成一个 xml 配置文件,这个 xml 文件以虚拟目录命名,存放在 IDEA 一个特定的目录下(/Users/liaowenxiong/Library/Caches/JetBrains/IntelliJIdea2020.3/tomcat/0e0b39f5-0ff8-4713-ab72-81b276953084/conf/catalina/localhost)。在这个文件中配置标签 <Context> 的 docBase 属性的值,而这个属性值就是 war 文件的路径。

接着 tomcat 会去解析 xml 文件,发现是 war 文件,则会将 war 包解压到服务器的 webapps 目录下,而且解压后的目录根据 Applicaiton context URL 的名称来命名。部署就完成了。

注意:
1.以 war 工件部署的,把工件列表中的 exploded 工件删除,再次部署时失败,且工件输出目录下的 war 包会被删除,conf/catalina/localhost 下的 xml 文件也会被删除。但是 webapps 目录的部署包依旧存在,我们此时通过命令终端启动服务器后,项目可以照常访问,但是通过 IDEA 启动的 tomcat 要停止掉。

2.以 war 工件部署的,把工件列表中的 war 工件删除,再次部署时失败,conf/catalina/localhost 下的 xml 文件会被删除,但是工件输出目录下的 war 包和 webapps 下的部署包依旧存在,我们此时通过命令终端启动服务器后,项目可以照常访问,但是通过 IDEA 启动的 tomcat 要停止掉。

3.将 tomcat 配置文件下的 deployment 相关部署工件删除,再次部署失败,且会删除 conf/catalina/localhost目录下的 xml 文件。但是工件输出目录下的 war 文件和 webapps 目录下的部署包依旧存在。但是无法正常访问项目。有趣的是,这个 xml 文件其实和部署 war 工件没有关系,在删除了 xml 文件的情况下,只要确保 webapps 目录下有项目的部署包,我们此时通过命令终端启动服务器后,项目可以照常访问,但是通过 IDEA 启动的 tomcat 要停止掉。

手动部署项目

这里的手动部署项目是指不借助 IDEA 等开发工具来启动 tomcat 和部署项目。

war 包部署

1.使用工具生成部署包,或者自己根据 web 服务的目录结构生成一份部署包,然后打成 war 包;

2.接着把 war 包放置在某个目录下,通常是放在项目的 /out/artifacts/ 目录下或者放在模块根目录下的 target/ 目录下;

3.接着你要在 /Users/liaowenxiong/Applications/apache-tomcat-8.5.73/conf/Catalina/localhost 目录下创建一个以虚拟目录命名的 xml 文件,文件中的标签 <Context> 的属性 docBase 的值设为 war 文件的路径,如下所示:

<Context path="/servlet_demo" docBase="/Users/liaowenxiong/Documents/IdeaProjects/java-exercises/out/artifacts/servlet_demo_war/servlet-demo_war.war" />

xml 文件配置好之后,启动 tomcat,tomcat 会自动找到 war 文件,并将其释放到 webapps 目录下。

特别说明:
tomcat 有个监听器,这个监听器会定时解析 conf/Catalina/localhost 目录下的 xml 文件,发现 xml 文件中的 <Context/> 的 docBase 属性保存的是 war 文件的路径,就会自动将其释放到 webapps 目录下,如果 webapps 目录下已经存在该目录,则不会释放。

注意:
war 这种部署方式,实际上只是通过 xml 文件来告诉 tomcat war 文件的位置,让 tomcat 找到 war 文件,然后将其释放到 webapps 目录下。所以这种部署,真正起作用的是把部署包放置在 tomcat 的webapps 目录下,就已经完成部署了。xml 文件是可以不需要的,war 包也是可以不需要的。

exploded 部署

1.使用工具生成部署包,或者自己根据 web 服务的目录结构生成一份部署包;
2.接着把部署包放置在某个目录下,通常是放在项目的 /out/artifacts/ 目录下或者放在模块根目录下的 target/ 目录下;
3.接着你要在 /Users/liaowenxiong/Applications/apache-tomcat-8.5.73/conf/Catalina/localhost 目录下创建一个以虚拟目录命名的 xml 文件,文件中的标签 <Context> 的属性 docBase 的值设为部署包的路径,如下所示:

<Context path="/servlet_demo" docBase="/Users/liaowenxiong/Documents/IdeaProjects/java-exercises/out/artifacts/servlet_demo_war_exploded" />

这样就部署完成了,启动服务器就可以正常访问了。

部署有关的操作

deploy/redeploy(部署/重新部署)

部署前会先构建项目和构建工件(部署包),如果已经构建过工件,则会检测编译输出目录及webapp目录的文件是否有变动,有的话则会更新部署包相关的文件。没有变动过,则不会更新。

1.如果Java代码修改过,会更新编译输出目录(默认是 target/classes)下的字节码文件,也会更新部署包中的字节码文件
2.开发项目中新增 Java 文件(无论复制新增还是正常新建),会更新编译输出目录下的字节码文件,也会更新部署包中的字节码文件
3.开发项目中删除 Java 文件,会更新编译输出目录下的字节码文件,也会更新部署包中的字节码文件
4.resources 目录下的资源文件新增了,分为两种情况,如果是正常创建的文件会更新到编译输出目录下,也会更新到部署包中的 classes 目录下;如果是复制新增的文件则不会

5.resources 目录下的资源文件删除了,会更新到编译输出目录下的相关文件,也会更新部署包中的 classes 目录下的相关文件

6.resources 目录下的资源文件修改了,会更新到编译输出目录下的相关文件,也会更新部署包中的 classes 目录下的相关文件

7.resources 目录下的子目录删除了,编译输出目录的相关目录也会删除,但是部署包中的 classes 目录下的相关子目录会保留,只是内容清空了

8.webapp 目录下的静态资源文件修改过,会更新部署包中的相关文件
9.webapp 目录下的静态资源文件删除了,会更新部署包中的相关文件
10.webapp 目录下的静态资源文件新增了,分为两种情况,如果是复制新增的文件,则不会更新到部署包中;如果是正常新建的文件则会更新到部署包中

rerun/run(重启服务器/启动服务器)

启动服务器后会自动部署项目(前提是已经在 tomcat 的配置文件中的 Deployment 添加部署工件);如果已经部署过则会重新部署项目。启动服务器触发的部署和重新部署,其实和手动触发 deploy/redeploy 效果相同。

1.如果Java代码修改过,会更新编译输出目录(默认是 target/classes)下的字节码文件,也会更新部署包中的字节码文件
2.开发项目中新增 Java 文件(不论是复制新增还是正常新建),会更新编译输出目录下的字节码文件,也会更新部署包中的字节码文件
3.开发项目中删除 Java 文件,会更新编译输出目录下的字节码文件,也会更新部署包中的字节码文件

4.resources 目录下的资源文件新增了,分为两种情况,如果是正常创建的文件会更新到编译输出目录下,也会更新到部署包中的 classes 目录下;如果是复制新增的文件则不会。

另外新增的空目录不会更新到编译输出目录下,也不会更新到部署包中;复制新增的目录,即使目录含有文件,也不会更新到编译输出目录下,也不会更新到部署包中

5.resources 目录下的资源文件删除了,会更新到编译输出目录下的相关文件,也会更新部署包中的 classes 目录下的相关文件

6.resources 目录下的资源文件修改了,会更新到编译输出目录下的相关文件,也会更新部署包中的 classes 目录下的相关文件

7.resources 目录下的子目录删除了,编译输出目录的相关目录也会删除,但是部署包中的 classes 目录下的相关子目录会保留,只是内容清空了

8.webapp 目录下的静态资源文件修改过,会更新部署包中的相关文件
9.webapp 目录下的静态资源文件删除了,会更新部署包中的相关文件
10.webapp 目录下的静态资源文件新增了,分为两种情况,如果是复制新增的文件,则不会更新到部署包中;如果是正常新建的文件则会更新到部署包中

Update resources(更新静态资源)

1.Java 文件的修改、新增、删除都不会更新到部署包中(在 run 和 debug 模式下)

2.resources 目录的资源文件新增了,分为两种情况,如果是复制新增的文件,则不会更新到部署包中,也不会更新到编译输出目录下;如果是正常新建的文件则会更新到部署包中,也会更新到编译输出目录下(在 run 和 debug 模式下)

3.resources 目录下的资源文件删除了,不会更新部署包中的相关文件;但是会更新编译输出目录下的相关文件(在 run 和 debug 模式下)

4.resources 目录下的资源文件修改了,会更新部署包中的相关文件;也会更新编译输出目录下的相关文件(在 run 和 debug 模式下)

5.webapp 目录下的静态资源文件修改了,会更新部署包中的相关文件(在 run 和 debug 模式下)
6.webapp 目录下的静态资源文件删除了,不会更新部署包中的相关文件(在 run 和 debug 模式下)
7.webapp 目录下的静态资源文件新增了,分为两种情况,如果是复制新增的文件,则不会更新到部署包中;如果是正常新建的文件则会更新到部署包中(在 run 和 debug 模式下)

Update classes and resources(更新字节码文件和静态资源)

1.Java 文件的修改,在 run 模式或者 debug 模式下会更新编译输出目录下的相关字节码文件;也会更新部署包中的相关字节码文件。但是在run模式下,只是更新了部署包中的字节码文件而已,如果这个类已经加载进入内存中了,内存中的 Class 对象还是旧的,所以执行的代码并没有更新。但是在 debug 模式下,不仅会更新部署包中的相关字节码文件,还会更新内存中的 Class 对象,所以执行的是最新的代码。

2.Java 文件的新增(正常新建或者复制新增),在 run 模式或者 debug 模式下会更新到编译输出目录下;也会更新到部署包中

3.Java 文件的删除,在 run 模式或者 debug 模式下会更新编译输出目录下的相关字节码文件;也会更新部署包中的相关字节码文件。但是在 run 模式下只是把部署包中的相关字节码文件删除了,但是已经加载入内存的类对应的 Class 对象并没有被释放,依旧在内存中,所以你依旧可以照常访问相关的资源;而在 debug 模式下,则会把已经加载入内存的类所对应的 Class 对象释放掉,你无法再访问有关的资源。

4.resources 目录的资源文件新增了,分为两种情况,如果是复制新增的文件,在 run 模式或 debug 模式下都不会更新到部署包中,也不会更新到编译输出目录中;如果是正常新建的文件,在 run 模式或 debug 模式下都会更新到部署包中,也会更新到编译输出目录中

5.resources 目录下的资源文件删除了,不会更新部署包中的相关文件;但是会更新编译输出目录下的相关文件(在 run 和 debug 模式下)

6.resources 目录下的资源文件修改了,会更新部署包中的相关文件;也会更新编译输出目录下的相关文件(在 run 和 debug 模式下)

7.webapp 目录下的静态资源文件修改了,会更新部署包中的相关文件(在 run 和 debug 模式下)

8.webapp 目录下的静态资源文件删除了,不会更新部署包中的相关文件(在 run 和 debug 模式下)

9.webapp 目录下的静态资源文件新增了,分为两种情况,如果是复制新增的文件,则不会更新到部署包中;如果是正常新建的文件则会更新到部署包中(在 run 和 debug 模式下)

汇总

-deploy/redeployrun/rerunUpdate resourcesUpdate classes and resourcesBuild ModuleRebuild Module
Java 文件的修改会更新编译输出目录(默认是 target/classes)下的字节码文件,也会更新部署包中的字节码文件会更新编译输出目录(默认是 target/classes)下的字节码文件,也会更新部署包中的字节码文件不会更新到部署包中(在 run 和 debug 模式下)在 run 模式或者 debug 模式下会更新编译输出目录下的相关字节码文件;也会更新部署包中的相关字节码文件。但是在run模式下,只是更新了部署包中的字节码文件而已,如果这个类已经加载进入内存中了,内存中的 Class 对象还是旧的,所以执行的代码并没有更新。但是在 debug 模式下,不仅会更新部署包中的相关字节码文件,还会更新内存中的 Class 对象,所以执行的是最新的代码。会更新编译输出目录(通常是 target/classes)的相关字节码文件。会更新编译输出目录(通常是 target/classes)的相关字节码文件。
Java 文件的删除会更新编译输出目录下的字节码文件,也会更新部署包中的字节码文件会更新编译输出目录下的字节码文件,也会更新部署包中的字节码文件不会更新到部署包中(在 run 和 debug 模式下)在 run 模式或者 debug 模式下会更新编译输出目录下的相关字节码文件;也会更新部署包中的相关字节码文件。但是在 run 模式下只是把部署包中的相关字节码文件删除了,但是已经加载入内存的类对应的 Class 对象并没有被释放,依旧在内存中,所以你依旧可以照常访问相关的资源;而在 debug 模式下,则会把已经加载入内存的类所对应的 Class 对象释放掉,你无法再访问有关的资源。会更新编译输出目录(通常是 target/classes)的相关字节码文件。会更新编译输出目录(通常是 target/classes)的相关字节码文件
Java 文件的新增无论复制新增还是正常新建 Java 文件,会更新编译输出目录下的字节码文件,也会更新部署包中的字节码文件无论复制新增还是正常新建 Java 文件,会更新编译输出目录下的字节码文件,也会更新部署包中的字节码文件不会更新到部署包中(在 run 和 debug 模式下)无论复制新增还是正常新建 Java 文件,在 run 模式或者 debug 模式下会更新到编译输出目录下,也会更新到部署包中无论复制新增还是正常新建的 Java 文件,都会更新到编译输出目录下无论复制新增还是正常新建的 Java 文件,都会更新到编译输出目录下
resources 目录下的文件修改会更新到编译输出目录下的相关文件,也会更新部署包中的 classes 目录下的相关文件会更新到编译输出目录下的相关文件,也会更新部署包中的 classes 目录下的相关文件会更新部署包中的相关文件;也会更新编译输出目录下的相关文件(在 run 和 debug 模式下)会更新部署包中的相关文件;也会更新编译输出目录下的相关文件(在 run 和 debug 模式下)会更新编译输出目录(通常是 target/classes)的相关文件。会更新编译输出目录(通常是 target/classes)的相关文件。
resources 目录下的文件删除会更新到编译输出目录下的相关文件,也会更新部署包中的 classes 目录下的相关文件会更新到编译输出目录下的相关文件,也会更新部署包中的 classes 目录下的相关文件不会更新部署包中的相关文件;但是会更新编译输出目录下的相关文件(在 run 和 debug 模式下)不会更新部署包中的相关文件;但是会更新编译输出目录下的相关文件(在 run 和 debug 模式下)会更新编译输出目录(通常是 target/classes)的相关文件会更新编译输出目录(通常是 target/classes)的相关文件
resources 目录下的文件新增分为两种情况,如果是正常创建的文件会更新到编译输出目录下,也会更新到部署包中的 classes 目录下;如果是复制新增的文件则不会更新到编译输出目录下,也不会更新到部署包中分为两种情况,如果是正常创建的文件会更新到编译输出目录下,也会更新到部署包中的 classes 目录下;如果是复制新增的文件则不会更新到编译输出目录下,也不会更新到部署包中分为两种情况,如果是复制新增的文件,则不会更新到部署包中,也不会更新到编译输出目录下;如果是正常新建的文件则会更新到部署包中,也会更新到编译输出目录下(在 run 和 debug 模式下)分为两种情况,如果是复制新增的文件,则不会更新到部署包中,也不会更新到编译输出目录下;如果是正常新建的文件则会更新到部署包中,也会更新到编译输出目录下(在 run 和 debug 模式下)如果是复制新增的文件,Build Module 不会更新到编译输出目录下;如果是正常新增的文件,Build Module 会更新到编译输出目录下无论是复制新增还是正常新建的文件,都会更新到编译输出目录下
webapp 目录下的文件修改会更新部署包中的相关文件会更新部署包中的相关文件会更新部署包中的相关文件(在 run 和 debug 模式下)会更新部署包中的相关文件(在 run 和 debug 模式下)
webapp 目录下的文件删除会更新部署包中的相关文件会更新部署包中的相关文件不会更新部署包中的相关文件(在 run 和 debug 模式下)不会更新部署包中的相关文件(在 run 和 debug 模式下)
webapp 目录下的文件新增分为两种情况,如果是复制新增的文件,则不会更新到部署包中;如果是正常新建的文件则会更新到部署包中分为两种情况,如果是复制新增的文件,则不会更新到部署包中;如果是正常新建的文件则会更新到部署包中分为两种情况,如果是复制新增的文件,则不会更新到部署包中;如果是正常新建的文件则会更新到部署包中(在 run 和 debug 模式下)分为两种情况,如果是复制新增的文件,则不会更新到部署包中;如果是正常新建的文件则会更新到部署包中(在 run 和 debug 模式下)

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

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

相关文章

php恒等符,php学习笔记(三)操作符与控制结构

php学习笔记(三)操作符与控制结构更新时间&#xff1a;2011年08月06日 20:09:31 作者&#xff1a;好久没更新了&#xff0c;这段时间挺忙的。下面继续php学习 之 操作符与控制结构&#xff1b;一&#xff0e;字符串插入为了给开发人员处理字符串值提供最大的灵活性&#xff0…

spring框架三层架构_Spring框架架构

spring框架三层架构这是Spring Framework Architecture的概述。 了解Spring Framework的各个组成部分如何组织以及如何相互联系。 如果您想了解什么是Spring框架及其功能&#xff0c;请阅读Spring框架简介 。 总览 Spring是一个模块化框架 。 它不是作为一个软件包或多个模块捆…

IntelliJ IDEA for Mac如何管理SDK/JDK,模块如何设置SDK/JDK?

文章目录管理 IDE 中的 SDK设置模块依赖的 SDK管理 IDE 中的 SDK 设置模块依赖的 SDK

php 数组是否属于迭代器,数组的迭代器属性Iterator介绍

[导读]数组默认有迭代器属性数组默认有迭代器属性var arr [111,222,333];var aa arr[Symbol.iterator]();aa.next(); // { value: 111, done: false }aa.next(); // { value: 222, done: false }aa.next(); // { value: 333, done: false }aa.next(); // { value: undefined,…

elk 聚合日志_使用ELK堆栈进行日志聚合

elk 聚合日志1.简介 随着微服务的使用&#xff0c;创建稳定的分布式应用程序和摆脱许多遗留问题变得很容易。 但是微服务的使用也带来了一些挑战&#xff0c; 分布式日志管理就是其中之一。 由于微服务是隔离的&#xff0c;因此它们不共享数据库和日志文件&#xff0c;因此实时…

Java对象如何实现比较规则

文章目录一、Comparable二、Comparator示例代码一、Comparable public interface Comparable 此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序&#xff0c;类的 compareTo 方法被称为它的自然比较方法。 实现此接口的对象列表&#xff08;和数组…

python教材目录,python 目录

python在安装的时候&#xff0c;就自带了很多模块&#xff0c;我们把这些模块称之为标准库&#xff0c;其中&#xff0c;有一个是使用频率比较高的&#xff0c;就是 os 。这个库中方法和属性众多&#xff0c;有兴趣的看官可以参考官方文档&#xff1a;https://docs.python.org/…

quartus状态机生成_生成器作为(快速失败)状态机

quartus状态机生成这个想法是几周前在设计“生成器”类时想到的&#xff0c;该类必须将输入发送给封装的Writer 。 实际上&#xff0c;它是Builder模式。 但是&#xff0c;规则有些复杂&#xff0c;用户必须以某种方式调用add...()方法&#xff0c;才能正确生成输出。 不用说&…

除法算式的正确表述

12 4 3&#xff0c;这个关系表达式叫作除法算式&#xff0c;表述为 12 除以 4 等于 3&#xff1b;也可以表述为 4 除 12 等于 3。

elk 日志管理_具有ELK的APIGEE API网关日志管理(弹性搜索,Logstash和Kibana)

elk 日志管理在本文中&#xff0c;我们将看到如何使用 Elastic Search &#xff0c; Logstash 和 Kibana 管理APIGEE API网关生成的日志 。 下图突出显示了日志数据如何流经ELK堆栈以进行数据可视化和监视。 作为API网关的一部分&#xff0c;我们将使用MessageLogging策略在代…

php输出分组,ThinkPHP 项目分组中的模板输出

模板输出启用了项目分组后&#xff0c;模板输出路径同原来相比有一些差别。默认输出当使用 $this->display() 指令输出默认模板时&#xff0c;输出的模板路径加上了分组名&#xff1a;TPL/模板默认主题/分组名/模块名/操作名模板后缀// 例子&#xff1a;Tpl/default/Admin/U…

平方根/立方根/根式

文章目录平方根/二次方根/二次根立方根/三次方根/三次根平方根/二次方根/二次根 如果一个正数 x 的平方等于 a&#xff0c;即 x2x^2x2 a&#xff0c;那么这个正数 x 就叫 做 a 的算术平方根&#xff08;算术二次方根&#xff09;&#xff0c;记作 a\sqrt{a}a​ &#xff0c;读…

使用junit进行单元测试_使用JUnit5对DynamoDB应用程序进行单元测试

使用junit进行单元测试在上一篇文章中&#xff0c;我描述了新的Java 2 AWS开发工具包&#xff0c;它为调用不同AWS服务的Java客户端提供了非阻塞IO支持。 在本文中&#xff0c;我将介绍一种用于单元测试AWS DynamoDB调用的方法。 有几种方法可以启动DynamoDB的本地版本– 1. …

h5jumppage.php,h5使用webviewjsbridge跟原生交互,点击标签调用2次webview

问题描述使用vue循环一个标签列表&#xff0c;点击列表里面的标签&#xff0c;调用app给的跳转页面的方法&#xff0c;第一次跳转页面后&#xff0c;点击返回按钮回到本页面&#xff0c;再次点击列表里面的标签&#xff0c;调用了2次webview&#xff0c;只有第一次点击的时候正…

Servlet的学习笔记

文章目录基本介绍入门步骤执行原理Servlet 生命周期线程安全问题解决方式Servlet 注解配置Servlet 继承与实现体系基本介绍 servlet&#xff0c;server applet&#xff0c;服务器端小程序 servlet 是一个接口&#xff0c;定义了 Java 类被浏览器访问&#xff08;tomcat 识别&…

spring框架介绍_Spring框架介绍

spring框架介绍这是Spring框架和Spring核心概念的简介。 在本教程中&#xff0c;我们将介绍Spring Framework的主要优点和功能。 在随后的教程中&#xff0c;我们将学习有关Spring和Spring Boot的更多信息。 总览 我们知道&#xff0c; Spring框架是Java开发人员中最受欢迎的应…

Java注解(Annotation)的学习

文章目录注解定义作用分类API 文档注解JDK 预定义的注解自定义注解注解的格式注解的本质注解的属性属性的返回值类型属性的特点属性的赋值元注解TargetRetentionDocumentedInherited解析注解总结注解定义 注解( Annotation)&#xff0c;也叫元数据。一种代码级别的说明。它是 …

oracle数据库硬恢复,Oracle数据库的可恢复性设置

整理自《Oracle 11g OCP/OCA 认证指南》001为了保证数据库的最大可恢复性&#xff0c;必须多路复用控制文件&#xff1b;必须多路复用联机重做日志&#xff1b;必须以归档日志模式运行数据库&#xff0c;并多路复用归档日志文件&#xff1b;最后必须作常规备份。002 保护控制文…

rest api如何创建_创建一个安全的Spring REST API

rest api如何创建“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕&#xff1f; 尝试使用Okta API进行托管身份验证&#xff0c;授权和多因素身份验证。 “如果有用&#xff0c;它将被修改。” 那些智慧的话来自我的QA老师…

IntelliJ IDEA 的 Build Project/Build Module/构建项目/构建模块/构建工程

文章目录Build ModuleRebuild ModuleBuild Module&#xff0c;构建模块。所谓“构建”&#xff0c;就是“构建”包及字节码文件&#xff0c;其实就是编译源码文件的动作了。所以 Build Module&#xff0c;就是把 src 目录的源代码文件以及 resources 下的资源文件&#xff0c;构…