IDEA2022版教程下(快键键总结、Debug断点调试总结、22版本idea创建各种工程、关联数据库、常用插件)

news2024/11/19 7:47:58

8.快捷键的使用

8.1 常用快捷键

1 通用型(复制,黏贴,剪贴…)

说明快捷键
复制代码-copyctrl + c
粘贴-pastectrl + v
剪切-cutctrl + x
撤销-undoctrl + z
反撤销-redoctrl + shift + z
保存-save allctrl + s
全选-select allctrl + a

2 提高编写速度(上)

说明快捷键解释
智能提示-editalt + enter1:出错后提示的解决办法 / 2:光标放到new xxx();最后,会自动接收变量
提示代码模板-insert live templatectrl+j使用代码模板的时候,如果忘记了可以查看所有的代码模板
使用xx块环绕-surround with …ctrl+alt+t使用if分支,for循环,try-catch包裹代码
调出生成getter/setter/构造器等结构-generate …alt+insert或者直接在页面右键–generate
自动生成返回值变量-introduce variable …ctrl+alt+v类似于alt + enter生成代码的返回值
复制指定行的代码-duplicate line or selectionctrl+d在每行代码的最后可以直接复制这一行代码
删除指定行的代码-delete linectrl+y在每行代码的最后可以直接删除这一行代码
切换到下一行代码空位-start new lineshift + enter鼠标光标不用放到代码后面在换行
切换到上一行代码空位-start new line before currentctrl +alt+ enter鼠标光标不用放到代码后面在换行
向上移动代码-move statement upctrl+shift+↑光标停留在每行代码的最后,向上移动代码,只能在方法内
向下移动代码-move statement downctrl+shift+↓光标停留在每行代码的最后,向下移动代码,只能在方法内
向上移动一行-move line upalt+shift+↑同上,只不过移动范围更大了,可以超出方法
向下移动一行-move line downalt+shift+↓同上,只不过移动范围更大了,可以超出方法
方法的形参列表提醒-parameter infoctrl+p查看方法中可用的参数类型有哪些,第一次创建方法时会自动提示,但是一旦移动光标后再移动回来就不显示了,这时可以使用此快捷键

3 提高编写速度(下)

说明快捷键解释
批量修改指定的变量名、方法名、类名等-renameshift+f6选中需要修改的名字使用快捷键直接输入新名字即可
抽取代码重构方法-extract method …ctrl+alt+m把选中的代码,重新放到一个新的方法中。抽取静态的方法 新方法仍为静态的,抽取非静态方法中的代码新方法为非静态的
重写父类的方法-override methods …ctrl+o查看可以重写的所有父类方法
实现接口的方法-implements methods …ctrl+i查看可以实现所有父接口的方法
选中的结构的大小写的切换-toggle casectrl+shift+u
批量导包-optimize importsctrl+alt+o用不着,之前设置过自动导包了

4 类结构、查找和查看源码

说明快捷键解释
如何查看源码-go to class…ctrl + 选中指定的结构 或 ctrl+n前提是在页面上写了相关代码 / 凭空搜索代码,页面不用写
显示当前类结构,支持搜索指定的方法、属性等-file structurectrl+f12显示当前页面的所有属性和方法,之后可以直接输入名字进行搜索
退回到前一个编辑的页面-backctrl+alt+←一层层的查看源码,使用此快捷键可以回退到上一级查看源码的位置
进入到下一个编辑的页面-forwardctrl+alt+→回退到查看上一级源码之后,在想要进去下一级源码的位置
打开的类文件之间切换-select previous/next tabalt+←/→左右切换页面显示的导航栏窗口
光标选中指定的类,查看继承树结构-Type Hierarchyctrl+h查看选中类的继承结构
查看方法文档-quick documentationctrl+q查看代码的文档注释,不用快捷键也行 直接光标方到代码上就会自动显示
类的UML关系图-show uml popupctrl+alt+u光标放到代码上,使用此快捷键会以关系图的方式展示继承结构
定位某行-go to line/columnctrl+g页面有很多行代码,使用此快捷键输入想要看的行号,光标会自动定位到此行号
回溯变量或方法的来源-go to implementation(s)ctrl+alt+b光标放到变量名或者方法名的位置上,使用此快捷键可以直接定位到在哪个位置 定义的变量或方法
折叠方法实现-collapse allctrl+shift+ -折叠类中所有的方法,之后点击页面上的"+"可以打开其中想要查看的方法
展开方法实现-expand allctrl+shift+ +展开类中所有的方法

5 查找、替换与关闭

说明快捷键解释
查找指定的结构ctlr+f查找在页面中使用到此关键字的地方,之后使用上下箭头一个个的查看 (还适用于world、记事本等等)
快速查找:选中的Word快速定位到下一个-find nextctrl+L使用ctlr+f 可以使用此快捷键进行查找使用此关键字的位置,类似于上下箭头
查找与替换-replacectrl+r可以一个个的查找决定哪一个需要替换和不替换,也可以直接替换所有 (还适用于world、记事本等等)
直接定位到当前行的首位-move caret to line starthome光标定位到当前行的头部
直接定位到当前行的末位 -move caret to line endend光标定位到当前行的尾部
查询当前元素在当前文件中的引用,然后按 F3 可以选择ctrl+f7定义一个变量后,使用此快捷键可以查看下面在哪使用到了此变量,之后使用F3一个个的向下跳转
全项目搜索文本-find in path …ctrl+shift+f可以查看在整Pproject工作空间下或者整个Module下那个位置使用了此代码。如果此快捷键失效,查看是否和输入法的热键冲突
关闭当前窗口-closectrl+f4略,不仅仅适用于idea,还适用于其它窗口

6 调整格式

说明快捷键解释
格式化代码-reformat codectrl+alt+L代码写的格式比较混乱,在页面上使用此快捷键会自动对齐
使用/取消单行注释-comment with line commentctrl + /选中代码后,第一次使用是添加,再次使用是取消
使用/取消多行注释-comment with block commentctrl + shift + /选中代码后,第一次使用是添加,再次使用是取消
选中数行,整体往后移动-tabtab
选中数行,整体往前移动-prev tabshift + tab

8.2 查看快捷键

1、已知快捷键操作名,未知快捷键

在这里插入图片描述

2、已知快捷键,不知道对应的操作名

在这里插入图片描述

8.3 自定义快捷键

在这里插入图片描述

8.4 使用其它平台快捷键

苹果电脑或者是用惯Eclipse快捷的,可以选择其他快捷键插件。

在这里插入图片描述

9. IDEA断点调试(Debug)

9.1 为什么需要Debug

编好的程序在执行过程中如果出现错误,该如何查找或定位错误呢?简单的代码直接就可以看出来,但 如果代码比较复杂,就需要借助程序调试来查找错误了。

运行编写好的程序时,可能出现的几种情况:
> 情况1:没有任何bug,程序执行正确!

====================如果出现如下的三种情况,都有必要使用debug=============================
> 情况2:运行以后,出现了错误或异常信息。但是通过日志文件或控制台,显示了异常信息的位置。
> 情况3:运行以后,得到了结果,但是结果不是我们想要的。
> 情况4:运行以后,得到了结果,结果大概率是我们想要的。但是多次运行的话,可能会出现不是我们想要的情况。
        比如:多线程情况下,处理线程安全问题。

9.2 Debug的步骤

Debug(调试)程序步骤如下:
1、添加断点
2、启动调试
3、单步执行
4、观察变量和执行流程,找到并解决问题

1、添加断点

在源代码文件中,在想要设置断点的代码行的前面的标记行处,单击鼠标左键就可以设置断点,在相同 位置再次单击即可取消断点。

在这里插入图片描述

2、启动调试

IDEA提供多种方式来启动程序(Launch)的调试,分别是通过菜单(Run –> Debug)图标(“绿色臭虫”)等等
在这里插入图片描述

3、单步调试工具介绍

在这里插入图片描述

或 (Debugger:可以查看里面的变量值。 Console:断点的控制台,可以查看System输出的值
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

9.3 多种Debug情况介绍

1、行断点

  • 断点打在代码所在的行上。执行到此行时,会停下来。
    在这里插入图片描述
package com.atguigu.debug;
/**
* ClassName: Debug01
* Package: com.atguigu.debug
* Description: 演示1:行断点 & 测试debug各个常见操作按钮
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 18:44
* @Version 1.0
*/
public class Debug01 {
	public static void main(String[] args) {
		//1.
		int m = 10;
		int n = 20;
		System.out.println("m = " + m + ",n = " + n);
		swap(m, n);
		System.out.println("m = " + m + ",n = " + n);
		
		//2.
		int[] arr = new int[] {1,2,3,4,5};
		System.out.println(arr);//地址值
		
		char[] arr1 = new char[] {'a','b','c'};
		System.out.println(arr1);//abc
	}
	
	public static void swap(int m,int n){
		int temp = m;
		m = n;
		n = temp;
	}
}

2、方法断点

  • 断点设置在方法的声明上,默认当进入时(调用这个方法时),断点可以被唤醒。
    注意:方法上的断点是棱形
    在这里插入图片描述

  • 也可以设置在方法退出时,断点也被唤醒 (在断点上右键进行设置—在 Method exit后面进行打钩)
    在这里插入图片描述

  • 在多态的场景下,在父类接口的方法上打断点,会自动调入到子类实现类的方法
    注意:可以在源码中也加上断点进行测试。
    在这里插入图片描述

package com.atguigu.debug;
import java.util.HashMap;
/**
* ClassName: Debug02
* Package: com.atguigu.debug
* Description: 演示2: 方法断点
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 21:15
* @Version 1.0
*/
public class Debug02 {
	public static void main(String[] args) {
		//1.
		Son instance = new Son();
		instance.test();
		
		//2.
		Father instance1 = new Son();
		instance1.test();
		
		//3.
		Consumer con = new ConsumerImpl();
		con.accept("atguigu");
		
		//4.
		HashMap map = new HashMap();
		map.put("Tom",12);
		map.put("Jerry",11);
		map.put("Tony",20);
	}
}

class Father{
	public void test(){
		System.out.println("Father : test");
	}
}

class Son extends Father{
	public void test(){
		System.out.println("Son : test");
	}
}

interface Consumer{
	void accept(String str);
}

class ConsumerImpl implements Consumer{
	@Override
	public void accept(String str) {
		System.out.println("ConsumerImple:" + str);
	}
}

3、字段断点

  • 类的属性声明上打断点,默认对属性的修改操作进行监控
    打钩Field access:表示在获取变量时也会跳转到此断点
    在这里插入图片描述
package com.atguigu.debug;
/**
* ClassName: Debug03
* Package: com.atguigu.debug
* Description: 演示3:字段断点
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 21:34
* @Version 1.0
*/
public class Debug03 {
	public static void main(String[] args) {
		Person p1 = new Person(3);
		System.out.println(p1);
	}
}

class Person{
	private int id = 1;
	private String name;
	private int age;
	
	public Person() {
	}
	
	{
		id = 2;
	}
	
	public Person(int id) {
	this.id = id;
	}
	
	public Person(int id, String name, int age) {
		this.id = id;
		this.name = name;
		this.age = age;
	}
	
	public int getId() {
		return id;
	}
	
	public void setId(int id) {
		this.id = id;
	}
	
	public String getName() {
		return name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public int getAge() {
		return age;
	}
	
	public void setAge(int age) {
		this.age = age;
	}
	
	@Override
	public String toString() {
		return "Person{" +
		"id=" + id +
		", name='" + name + '\'' +
		", age=" + age +
		'}';
	}
}

4、条件断点

package com.atguigu.debug;
/**
* ClassName: Debug04
* Package: com.atguigu.debug
* Description: 演示4:条件断点
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 21:49
* @Version 1.0
*/
public class Debug04 {
	public static void main(String[] args) {
		int[] arr = new int[]{1,2,3,4,5,6,7,8,9,10,11,12};
		for (int i = 0; i < arr.length; i++) {
			int target = arr[i];
			System.out.println(target);
		}
	}
}

针对上述代码,在满足arr[i] % 3 == 0的条件下,执行断点。(行断点上右键进行设置
在这里插入图片描述
在这里插入图片描述

5、异常断点

  • 对异常进行跟踪。如果程序出现指定异常,程序就会执行断点,自动停住。
    解释:程序出现异常,执行此断点。
package com.atguigu.debug;
import java.util.Date;
/**
* ClassName: Debug05
* Package: com.atguigu.debug
* Description: 演示5:异常断点
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 22:01
* @Version 1.0
*/
public class Debug05 {
	public static void main(String[] args) {
		int m = 10;
		int n = 0;
		int result = m / n;
		System.out.println(result);
		// Person p1 = new Person(1001);
		// System.out.println(p1.getName().toUpperCase());
	}
}

通过下图的方式,对指定的异常进行监控:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

6、线程调试

  • 上面的调试都是在单线程中进行断点调试,实际开发中如何在多线程中调试呢???
package com.atguigu.debug;
/**
* ClassName: Debug06
* Package: com.atguigu.debug
* Description: 演示6:线程调试
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 22:46
* @Version 1.0
*/
public class Debug06 {
	public static void main(String[] args) {
		test("Thread1");
		test("Thread2");
	}
	public static void test(String threadName) {
		new Thread(
			() -> System.out.println(Thread.currentThread().getName()),
			threadName
			).start();
		}
}
  • 目的:在主线程中调用2个线程,现在只想要针对一个线程进行调试。
  • eg:"Thread2".equals(Thread.currentThread().getName());,获取当前线程的名字如果名字等于Thread2时,就停下。
    在这里插入图片描述
  • 结果为:所有的Thread1都显示出来了,如果在进行下一步单步调试会一次次执行循环输出Thread2
    在这里插入图片描述

7、强制结束

package com.atguigu.debug;

/**
*ClassName: Debug07
*Package: com.atguigu.debug
*Description: 演示7:强制结束
*
*@Author: 尚硅谷-宋红康
* @Create: 2022/10/20 23:15
*@Version 1.0
*/
public class Debug07 {
	public static void main(String[] args) { 
		System.out.println("获取请求的数据"); 
		System.out.println("调用写入数据库的方法"); insert();
		System.out.println("程序结束");
	}
	
	private static void insert() { 
		System.out.println("进入insert()方法"); 
		System.out.println("获取数据库连接");
		System.out.println("将数据写入数据表中"); 
		System.out.println("写出操作完成"); 
		System.out.println("断开连接");
	}
}
  • 场景:前端页面的数据发送给后台,后台再把数据写入到数据库的过程,在此过程进行调试。
  • eg:针对insert方法进行断点调试,在进入到insert方法之后的获取数据库连接就找到了错误,下一步就是把数据写到数据库,不想要把这个错误的数据写到数据库,所以需要在当前断点的位置(获取数据库连接)结束断点不在向下执行(之前的结束是执行完程序进行结束)。
    在这里插入图片描述
    在这里插入图片描述
  • 效果:可以看到insert()方法中结束断点的后面都没有执行,就跳出了。
    在这里插入图片描述

9.4 自定义调试数据视图

package com.atguigu.debug;
import java.util.HashMap;
/**
* ClassName: Debug08
* Package: com.atguigu.debug
* Description: 演示8:用户自定义数据视图
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 23:21
* @Version 1.0
*/
public class Debug08 {
	public static void main(String[] args) {
		HashMap<Integer,String> map = new HashMap<>();
		map.put(1,"高铁");
		map.put(2,"网购");
		map.put(3,"支付宝");
		map.put(4,"共享单车");
		System.out.println(map);
	}
}

设置如下:

在这里插入图片描述

  • 即:可以设置Debug窗口需要显示那些数据。

在这里插入图片描述

9.5 常见问题

问题:使用Step Into时,会出现无法进入源码的情况。如何解决? (即:使用向下的蓝箭头只能进入到自定义的方法中,怎么进入到源码提供的方法中呢???

方案1:使用 force step into 即可 (单步执行,会进入到方法,方法可以来自核心类库的源码----使用向下的红箭头)

方案2:点击Setting -> Build,Execution,Deployment -> Debugger -> Stepping
把Do not step into the classess中的 java.*javax.* 取消勾选即可。(把蓝箭头向下的功能修改为和红箭头向下的功能相同,即 蓝箭头既可以进入到自定义的方法 也可以进入到源码的方法中
在这里插入图片描述

小结:

经验:初学者对于在哪里加断点,缺乏经验,这也是调试程序最麻烦的地方,需要一定的经验。 简单来说,在可能发生错误的代码的前面加断点。如果不会判断,就在程序执行的起点处加断点。

10.创建不同类型的工程

10.1 创建Java工程

在工程上,右键- New - Module,如下:
在这里插入图片描述

指明Java工程的名称及使用的JDK版本:
在这里插入图片描述

创建包:
在这里插入图片描述

提供包名:
在这里插入图片描述

在包下创建类,即可:
在这里插入图片描述

提供类名:
在这里插入图片描述

测试代码:
在这里插入图片描述

点击运行即可:
在这里插入图片描述

10.2 创建静态 Java Web工程

  1. 创建静态web
    在这里插入图片描述
  2. 创建html页面
    在这里插入图片描述
  3. 使用谷歌运行
    在这里插入图片描述
    在这里插入图片描述

10.3 创建动态 Java Web工程

1、IDEA中配置Tomcat

在IDEA中配置Tomcat之前,需要保证已经安装并配置了Tomcat的环境变量。如果没有安装并配置,可以 参考《 尚硅谷_宋红康_Tomcat8.5快速部署.docx 》配置完成以后,在命令行输入:catalina run 。能够启动tomcat,则证明安装配置成功。

下面看如何在IDEA中配置:
在这里插入图片描述

配置Tomcat Server的位置:
在这里插入图片描述

这里配置Tomcat的名称以及配置应用服务器的位置。根据自己Tomcat的安装位置决定。
在这里插入图片描述

配置好后,如下图所示:
在这里插入图片描述

2、创建Web工程

在这里插入图片描述

选择New Module,指明当前工程的名称:
在这里插入图片描述

选中当前创建的工程,添加框架支持:
在这里插入图片描述

选择:Web Application,选择Create web.xml,如下:

在这里插入图片描述

3、配置web工程并运行

在这里插入图片描述
在这里插入图片描述

部署当前的web项目:
在这里插入图片描述

选择第2项:
在这里插入图片描述

可以修改Application context,如下:修改访问的工程名
在这里插入图片描述

配置当前web工程的详细信息,如下:
在这里插入图片描述

配置好后,可以直接运行:

在这里插入图片描述

4、乱码的解决

如果Tomcat日志出现乱码,需要配置:
在这里插入图片描述

解决方案:
1)点击Help => Edit custom VM Options,在最后面添加

-Dfile.encoding=UTF-8

在这里插入图片描述

2)在当前Tomcat实例中配置 VM option,添加

-Dfile.encoding=UTF-8

在这里插入图片描述

在第二步的Startup/Connection页签的Run和Debug添加一个key为 JAVA_TOOL_OPTIONS , value为-Dfile.encoding=UTF-8的环境变量
在这里插入图片描述
在这里插入图片描述

3)保存后重启IDEA,可以发现控制台中文乱码显示正常了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10.4 创建Maven Java工程

1、Maven的介绍

在这里插入图片描述

Maven是一款自动化构建工具,专注服务于Java平台的 项目构建依赖管理 。在JavaEE开发的历史上构建工具的发展也经历了一系列的演化和变迁:

Make→Ant→Maven→Gradle→其他……

构建环节:
在这里插入图片描述
①清理:删除以前的编译结果,为重新编译做好准备。
②编译:将Java源程序编译为字节码文件。
③测试:运行单元测试用例程序,确保项目在迭代开发过程中关键点的正确性。
④报告:测试程序的结果。
⑤打包:将java项目打成jar包;将Web项目打成war包。
⑥安装:将jar包或war包安装到本地仓库中。
⑦部署:将jar或war从Maven仓库中部署到Web服务器上运行。

2、Maven的配置

maven的下载 – 解压 – 环境变量的配置这里就不赘述了,需要的参考03-资料\05-Maven的配置中的《尚硅谷_Maven的配置_V2.0.docx》。下面直接整合Maven。选择自己Maven的目录,和settings文件,然后配置自己的仓库reposiroty。
在这里插入图片描述

3、Maven Java工程的创建(使用骨架)

在这里插入图片描述

指明当前maven工程的名称、模板等信息。这里要求一个项目组的jdk版本必须一致。
通过坐标,就可以定位仓库中具体的jar包。如下:

在这里插入图片描述
在这里插入图片描述
删除自动生成的包结构:
在这里插入图片描述

新创建的maven 的java工程缺少相应的resources文件目录,需要创建如下:
在这里插入图片描述
在这里插入图片描述

指明main下resources的文件目录类型:
在这里插入图片描述

类似的操作test目录下,提供resources即可。

这里说明Maven的java工程的目录结构:
在这里插入图片描述

工程名
	src
	----main
	--------java
	--------resources
	----test
	--------java
	--------resources 
	pom.xml
  • main目录用于存放主程序。
  • test目录用于存放测试程序。
  • java目录用于存放源代码文件。
  • resources目录用于存放配置文件和资源文件。

4、Maven Java工程的创建(不使用骨架)

在这里插入图片描述
在这里插入图片描述

5、编写代码及测试

第1步:创建Maven的核心配置文件pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        
		<groupId>com.atguigu.maven</groupId>
		<artifactId>maven-01</artifactId>
		<version>1.0-SNAPSHOT</version>
		
		<dependencies>
			<dependency>
				<groupId>junit</groupId>
				<artifactId>junit</artifactId>
				<version>4.12</version>
				<scope>test</scope>
			</dependency>
			
			<dependency>
				<groupId>mysql</groupId>
				<artifactId>mysql-connector-java</artifactId>
				<version>8.0.18</version>
				</dependency>
		</dependencies>

</project>

第2步:编写主程序代码
在src/main/java/com/atguigu/java目录下新建文件HelloMaven.java

package com.atguigu.java;
/**
* ClassName: HelloMaven
* Package: com.atguigu.java
* Description:
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 18:20
* @Version 1.0
*/
public class HelloMaven {
	public String sayHello(String message) {
		return "Hello, " + message + "!";
	}
}

第3步:编写测试代码
在/src/test/java/com/atguigu/java目录下新建测试文件HelloMavenTest.java

package com.atguigu.java;
import org.junit.Test;
/**
* ClassName: HelloMavenTest
* Package: com.atguigu.java
* Description:
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 18:21
* @Version 1.0
*/
public class HelloMavenTest {
	@Test
	public void testHelloMaven() {
		HelloMaven helloMaven = new HelloMaven();
		System.out.println(helloMaven.sayHello("Maven"));
	}
}

第4步:运行几个基本的Maven命令
在这里插入图片描述

目录下也会有对应的生命周期。其中常用的是:clean、compile、package、install。

比如这里install,如果其他项目需要将这里的模块作为依赖使用,那就可以install。安装到本地仓库的位置。
在这里插入图片描述

10.5 创建Maven Web工程

1、创建Maven的Web工程步骤(使用骨架)

  1. 打开idea,在工作空间下创建模块。
    在这里插入图片描述

  2. 使用Maven Archetype(骨架),并指明Maven的web工程的名称、模板、坐标。如下:
    在这里插入图片描述

  3. 在控制台输出BUILD SUCCESS表示构建成功。(前提是需要联网
    在这里插入图片描述

  4. 删除pom.xml中多余的插件,从war的下面开始删,删除到只剩一个</project>,注意更新jar包。
    在这里插入图片描述

  5. 可以看到使用骨架创建的maven -web缺少目录:main/java、main/resources,以及test/java、test/resources
    在这里插入图片描述

  6. 根据提示进行补全即可:
    首先 补全main目录下的:
    在这里插入图片描述
    在这里插入图片描述
    然后 在补齐src目录下的test包:
    在这里插入图片描述
    在这里插入图片描述

  7. 最终成果展示
    在这里插入图片描述

2、创建Maven的Web工程步骤(不使用骨架)

  1. 打开idea,在工作空间下创建模块,选择不使用骨架的方式进行创建。在这里插入图片描述

  2. 可以看到缺少webapp目录结构
    在这里插入图片描述

  3. 补全步骤:

    • 在pom.xml文件中修改打包方式为war包(<packaging>war</packaging>),并刷新jar包。
      在这里插入图片描述
    • 鼠标双击项目中的java
      在这里插入图片描述
      在这里插入图片描述
    • 借助IDEA生成web.xml(项目名\src\main\webapp\WEB-INF\web.xml
      在这里插入图片描述
    • 设置 Web 资源的根目录
      在这里插入图片描述
      在这里插入图片描述
  4. 补全后的效果:
    在这里插入图片描述

3、在Tomcat上进行部署:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

配置部署的详细信息:

在这里插入图片描述

4、乱码的解决

如果Tomcat日志出现乱码,需要配置:
在这里插入图片描述

解决方案:
1)点击Help => Edit custom VM Options,在最后面添加

-Dfile.encoding=UTF-8

在这里插入图片描述

2)在当前Tomcat实例中配置 VM option,添加

-Dfile.encoding=UTF-8

在这里插入图片描述

在第二步的Startup/Connection页签的Run和Debug添加一个key为 JAVA_TOOL_OPTIONS , value为-Dfile.encoding=UTF-8的环境变量
在这里插入图片描述
在这里插入图片描述

3)保存后重启IDEA,可以发现控制台中文乱码显示正常了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、开发jsp依赖jar包

1、找不到HttpServlet错误
如果看到JSP报错:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path可以加入如下依赖解决。

<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>servlet-api</artifactId>
	<version>2.5</version>
	<scope>provided</scope>
</dependency>

2、EL表达式没有提示问题
${pageContext}这个EL表达式中通过pageContext对象访问reuqest属性时本身是应该有提示的,但如果没有的话加入下面依赖即可。

<dependency>
	<groupId>javax.servlet.jsp</groupId>
	<artifactId>jsp-api</artifactId>
	<version>2.1.3-b06</version>
	<scope>provided</scope>
</dependency>

同时,针对index.jsp文件,修改一下文件头信息为:

<%@page language="java" pageEncoding="utf-8" contentType="text/html;UTF-8" %>

11.关联数据库

11.1 关联方式

找到数据库选项:
在这里插入图片描述

添加指定数据库:
在这里插入图片描述

配置MySQL数据库的详细信息:

在这里插入图片描述

表面上很多人认为配置 Database 就是为了有一个 GUI 管理数据库功能,但是这并不是 IntelliJ IDEA 的Database 最重要特性。数据库的 GUI 工具有很多,IntelliJ IDEA 的 Database 也没有太明显的优势。

IntelliJ IDEA 的 Database 最大特性就是对于 Java Web 项目来讲,常使用的 ORM 框架,如 Hibernate、Mybatis 有很好的支持,比如配置好了 Database 之后,IntelliJ IDEA 会自动识别 domain 对象与数据表的关系,也可以通过 Database 的数据表直接生成 domain 对象等。

11.2 常用操作

在这里插入图片描述

  • 图标1:同步当前的数据库连接。这个是最重要的操作。配置好连接以后或通过其他工具操作数据库以后,需要及时同步(保证数据的一致性)
  • 图标2:配置当前的连接 (打开之前配置连接数据库信息的界面)
  • 图标3:断开当前的连接 (使用图标1刷新后会重新进行连接)
  • 图标4:显示相应数据库对象的数据 (选中表后,点击此图表会显示当前选中表中的数据)
  • 图标5:编辑修改当前数据库对象 (打开创建表的sql语句,可以进行修改)

展示ER图
在这里插入图片描述

可以导出文件:
在这里插入图片描述

12.IDEA常用插件

打开插件市场:
在这里插入图片描述
在这里插入图片描述

推荐1(安):Alibaba Java Coding Guidelines 检查规范

在这里插入图片描述

阿里巴巴Java编码规范检查插件,检测代码是否存在问题,以及是否符合规范。

安装插件步骤:
选择一个合适版本的插件:
在这里插入图片描述
有些插件想要生效需要重启idea:
在这里插入图片描述

让安装的插件失效和卸载插件:
在这里插入图片描述

使用:在类中,右键,选择编码规约扫描,在下方显示扫描规约和提示。根据提示规范代码,提高代码 质量。

在这里插入图片描述
在这里插入图片描述

推荐2:jclasslib bytecode viewer

在这里插入图片描述

可视化的字节码查看器。
使用:

  1. 在 IDEA 打开想研究的类。
  2. 编译该类或者直接编译整个项目( 如果想研究的类在 jar 包中,此步可略过)。
  3. 打开“view” 菜单,选择“Show Bytecode With jclasslib” 选项。
  4. 选择上述菜单项后 IDEA 中会弹出 jclasslib 工具窗口。

在这里插入图片描述

英文设置:使idea出现的导航信息都变为英文(安装后使用插件的地方都由原来的中文变为英文)
在 Help -> Edit Custom VM Options …,加上

-Duser.language=en

推荐3(安):Translation 用来翻译

在这里插入图片描述

注册翻译服务(有道智云、百度翻译开放平台、阿里云机器翻译)帐号,开通翻译服务并获取其应用ID 和密钥 绑定应用ID和密钥:偏好设置(设置) > 工具 > 翻译 > 常规 > 翻译引擎 > 配置…

使用:鼠标选中文本,点击右键即可自动翻译成多国语言。

注:请注意保管好你的应用密钥,防止其泄露。

安装插件:
在这里插入图片描述
设置翻译引擎:如果没有秘钥,需要先进行注册秘钥。
在这里插入图片描述
在这里插入图片描述
创建应用,生成秘钥信息:
在这里插入图片描述
在这里插入图片描述
复制秘钥信息:
在这里插入图片描述
填写生成的秘钥信息:
在这里插入图片描述

测试:选中代码右键----translate(翻译)

在这里插入图片描述

在这里插入图片描述

推荐4:GenerateAllSetter

在这里插入图片描述

实际开发中还有一个非常常见的场景: 我们创建一个对象后,想依次调用 Setter 函数对属性赋值,如果属性较多很容易遗漏或者重复。

在这里插入图片描述

可以使用这 GenerateAllSetter 提供的功能,快速生成对象的所有 Setter 函数(可填充默认值),然后自己再跟进实际需求设置属性值。

插件5(安):Rainbow Brackets 括号颜色

在这里插入图片描述

给括号添加彩虹色,使开发者通过颜色区分括号嵌套层级,便于阅读
在这里插入图片描述

推荐6:CodeGlance Pro

在这里插入图片描述

在编辑器右侧生成代码小地图,可以拖拽小地图光标快速定位代码,阅读行数很多的代码文件时非常实 用。
在这里插入图片描述

推荐7:Statistic

在这里插入图片描述

代码统计工具。

在这里插入图片描述
在这里插入图片描述

推荐8:Presentation Assistant

在这里插入图片描述

显示快捷键操作的按键
在这里插入图片描述

推荐(安)9:Key Promoter X 鼠标-对应快键键

在这里插入图片描述

快捷键提示插件。当你执行鼠标操作时,如果该操作可被快捷键代替,会给出提示,帮助你自然形成使 用快捷键的习惯,告别死记硬背。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

推荐10:JavaDoc

在这里插入图片描述

用于生成多个文档注释。

alt+insert ,执行操作:
在这里插入图片描述

推荐11: LeetCode Editor

在这里插入图片描述

在这里插入图片描述

在 IDEA 里刷力扣算法题

推荐12(安):GsonFormatPlus json生成对象

在这里插入图片描述

根据 json 生成对象。

使用:使用alt + s 或 alt + insert调取。
在这里插入图片描述

举例:

{
	"name": "tom",
	"age": "18",
	"gender": "man", "hometown": {
		"province": "河北省",
		"city": "石家庄市",
		"county": "正定县"
	}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
查看生成的对应关系,如果不合适可以双击进行修改
在这里插入图片描述
生成的代码效果:
在这里插入图片描述

package com.cn;

/**
 * ClassName: TestJson
 * Package: com.cn
 * Description:
 *
 * @Author xxx
 * @Create 2023/5/4 12:57
 * @Version 1.0
 */
public class TestJson {


    private String name;
    private Integer age;
    private String gender;
    private HometownDTO hometown;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public HometownDTO getHometown() {
        return hometown;
    }

    public void setHometown(HometownDTO hometown) {
        this.hometown = hometown;
    }

    /**
     * 生成的静态内部类
     */
    public static class HometownDTO {
        private String province;
        private String city;
        private String county;

        public String getProvince() {
            return province;
        }

        public void setProvince(String province) {
            this.province = province;
        }

        public String getCity() {
            return city;
        }

        public void setCity(String city) {
            this.city = city;
        }

        public String getCounty() {
            return county;
        }

        public void setCounty(String county) {
            this.county = county;
        }
    }
}

插件13:Material Theme UI

在这里插入图片描述

对于很多人而言,写代码时略显枯燥的,如果能够安装自己喜欢的主题将为开发工作带来些许乐趣。
IDEA 支持各种主题插件,其中最出名的当属 Material Theme UI。

在这里插入图片描述

安装后,可以从该插件内置的各种风格个选择自己最喜欢的一种。

插件14:安装汉化和lombak(安)插件

对于初学者,好多IDEA的配置, 都是英文不是特别熟悉.因此官方提供了汉化补丁,从此使用无压力 ,个人感觉好用.
包含chinese和lombok都安装一下.安装好之后重启IDEA即可.

文件—设置 (快捷键:ctrl +alt+s) chinese lombak
在这里插入图片描述

插件15:spring Assistant插件

破解版默认安装了这个插件,社区版需要手动安装。
在这里插入图片描述

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

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

相关文章

【C++学习】文件操作

程序运行时产生的数据都属于临时数据&#xff0c;程序一旦运行结束都会被释放。 通过文件可以将数据持久化。 C中对文件操作要包含头文件 <fstream> 文本类型分为两种&#xff1a; 1.文本文件 ---文件以文本的ASCII码形式存在计算机中 2.二进制文件---文件以文本…

低代码,一招制敌,解决职场人的的办公难题

“站在巨人的肩膀上让你事半功倍”&#xff0c;本文阐释如何使用低代码工具成倍提高生产力&#xff0c;不管是个人还是企业&#xff0c;值得一看&#xff0c;都将受益。 作为一个卑微的打工人&#xff0c;以下任何一个场景都会让我头皮发麻&#xff1a; 领导要你30分钟内汇总…

Excel高频 (IF,Countif,Sum,rank,max,min) 函数使用教程

工作中经常会用到IF判断&#xff0c;COUNTIF按条件统计个数&#xff0c;SUM求和&#xff0c;RANK排名次&#xff0c;MAX求最大,MIN求最小&#xff0c;AVERAGE求平均等函数&#xff0c;读书屋办公教程网将通过这篇文章采用图文结合的形式详细讲解Excel这几个函数的用法。 一、 判…

2023 年 3 月青少年机器人技术等级考试理论综合试卷(二级)

2023 年 3 月青少年机器人技术等级考试理论综合试卷&#xff08;二级&#xff09; 一、单选题(共 30 题&#xff0c;共 60 分) 1.关于后轮驱动车说法正确的是&#xff1f;&#xff08; &#xff09; A. 发动机放在车的后部 B.起步加速比前轮驱动车更好 C.传动效率比前轮驱动车高…

iview-admin首页的图表数据渲染问题

iview-admin的首页有几个图表&#xff0c;应该是作者自己封装的&#xff0c;有个问题是在mounted时&#xff0c;从后台获取数据&#xff0c;应该把图表根据数据重新渲染一下。 <chart-bar id"myChart" style"height: 260px;" :value"barData"…

操作系统基本原理

目录 第二章、操作系统基本原理1、操作系统概述2、进程管理2.1、进程的状态2.2、前趋图2.3、进程的同步与互斥2.4、PV操作2.5、PV操作题目2.6、PV操作与前驱图2.7、死锁问题2.8、死锁的预防与避免&#xff08;银行家算法&#xff09; 3、存储管理3.1、分区存储组织3.2、页式存储…

vue如何将图片转换为webp并前端展示

1. 首先把图片转换为webp格式 1.1 可以进入cmd后&#xff0c;pip安装pillow pip install Pillow --trusted-host mirrors.cloud.tencent.com1.2 save为webp格式&#xff0c;即可得到webp格式图片 ... from PIL import Image img Image.open(background1.jpeg).convert(RGB…

干货分享|一款让企业知识管理变得简单高效的工具软件

互联网发展到下半场&#xff0c;很多企业都开始进行数字化转型&#xff0c;在这个过程中&#xff0c;很多企业都忽视了极为重要的一点——企业的知识管理。如今信息化的时代&#xff0c;可以说企业的知识管理是引领企业数字化转型、进行创新的关键。 企业知识管理的实质就是对…

后端Springboot框架搭建APi接口开发(第三章末)

前两章节讲述了如何通过APi接口实现对数据库的查询操作 这章主要讲述&#xff0c;Stringboot对数据库数据的查询、新增、修改、删除操作 第一节&#xff1a;数据库查询 首先编写UserMapper.xml。定义SQl语句 文件结构&#xff1a;demo\src\main\java\com\example\demo\mapp…

蓝牙耳机什么牌子的好用?测评员分享目前最值得入手的蓝牙耳机

蓝牙耳机的出现让我们日常生活更加便利&#xff0c;与有线耳机相比少了束缚&#xff0c;而随着蓝牙耳机市场的成熟&#xff0c;涌现了超多品牌&#xff0c;让大家不知道蓝牙耳机什么牌子的好用&#xff0c;我这几年已经测评过50多款蓝牙耳机&#xff0c;今天将要分享目前最值得…

【类和对象】(上)

系列文章目录 文章目录 系列文章目录&#x1f451; 前言&#x1f451; 一、什么是类&#xff0c;什么是对象&#x1f451; 二、类的引入&#x1f451; 三、类的定义&#x1f451;三、1.类的两种定义方式&#xff1a; &#x1f451; 四、类的内存计算&#x1f451;五、this指针&…

Flutter学习之旅 - 页面布局Padding、Column、Flex、Expanded

文章目录 Padding线性布局组件(Column和Row)水平布局组件(Row)垂直布局组件(Column) 弹性布局(Flex&Expanded)ExpandedFlex 达到父元素的尺寸 Padding class MyHomePage extends StatelessWidget {const MyHomePage({Key? key}) : super(key: key);overrideWidget build(…

ATA-2000系列高压放大器介绍

ATA-2000系列是一款理想的可放大交、直流信号的高压放大器。最大差分输出1600Vp-p(800Vp)高压&#xff0c;可以驱动高压型负载。电压增益数控可调&#xff0c;一键保存常用设置&#xff0c;为您提供了方便简洁的操作选择&#xff0c;同时双通道高压放大器输出还可同步调节&…

FastJson序列化导致的 “$ref“

前言&#xff1a; 刚转后端没多久&#xff0c;在通过RPC调用其他组的服务的时候&#xff0c;其他组对接的同学说&#xff0c;你的入参是有问题的&#xff0c;然后他把入参发我&#xff0c;类似于下面的 json&#xff1a; {"addressMO": {"roomNumber": &…

795. 前缀和(C++和Python3)——2023.5.5打卡

文章目录 QuestionIdeasCode Question 输入一个长度为 n 的整数序列。 接下来再输入 m 个询问&#xff0c;每个询问输入一对 l,r 。 对于每个询问&#xff0c;输出原序列中从第 l 个数到第 r 个数的和。 输入格式 第一行包含两个整数 n 和 m 。 第二行包含 n 个整数&#…

哪种类型蓝牙耳机佩戴最舒服?公认佩戴舒适度高的蓝牙耳机

随着都市人生活水准的提高&#xff0c;人们开始享受起生活&#xff0c;观察身边的事物&#xff0c;佩戴蓝牙耳机能够满足自身基本通勤需求&#xff0c;现阶段不少蓝牙耳机质量越来越好&#xff0c;并且在功能、体验、技术上都具有相当的优势&#xff0c;性价比极高&#xff0c;…

Window下的反弹shell

什么是正向shell? 正向shell&#xff1a;控制端主动发起连接请求去连接被控制端&#xff0c;中间网络链路不存在阻碍。 反向shell&#xff1a;被控制端主动发起连接去请求连接控制&#xff0c;通常被控端由于防火墙受限制、权限不足、端口被占用等问题导致被控端不能正常接收…

短视频矩阵管理营销系统.源代码

一、短视频矩阵系统一般拥有以下几个主要功能&#xff1a; 1. 视频拍摄和剪辑功能&#xff0c;让用户轻松制作和发布短视频内容。 2. 视频分发和推广功能&#xff0c;矩阵管理发布、将制作好的短视频内容推送到各大短视频平台&#xff0c;实现效果最大化。 3. 数据监测和分析…

计算机三级嵌入式系统开发 知识点笔记

目录为搜索词&#xff0c;详情看每一节后图片 思维导图已上传&#xff0c;点击这里下载 嵌入式系统开发 全部章节图片第一章 嵌入式系统概论1.1SoCIP核 1.21.2.1ASCIIGB2312GB18030UTF8UTF16超文本字符形状两种描述方法 1.2.2数字图像 1.2.3音频 1.3传输介质分为 有线通信 和 无…

Windows下安装MySQL数据库+Navicat (从完全卸载到安装使用图文详细步骤,附安装包)

目录 第一章&#xff1a;如何完全卸载干净mysql教程&#xff08;三个步骤完全卸载&#xff09;1&#xff09;步骤一&#xff1a;卸载程序2&#xff09;步骤二&#xff1a;删除文件3&#xff09;步骤三&#xff1a;删除注册表信息 第二章&#xff1a;下载软件两种方式1&#xff…