Idea实战使用

Idea实战使用_第1张图片
出上图大纲:
还有
1setting配置导出导入
2.常见错误分析
3.引入指定DTD文件

一、 IDEA 介绍

1 IDEA 简介

IDEA 全称 IntelliJ IDEA,是用于 java 语言开发的集成环境(也可用于其他语言),IntelliJ在业界被公认为最好的 java 开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS 整合、代码审查、 创新的 GUI 设计等方面的功能可以说是超常的。 IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。
对于 IDEA,JetBrans 公司提出的最新口号是:Capable and Ergomomic IDE for JVM ,翻译过来就是面向 JVM、功能强大且符合人体工程学的 IDE。面向 JVM 的是指该 IED 支持 Java、 Scale 等运行于 JVM 之上的所有语言。

2 IDEA 版本说明

IDEA 共分为两大版本
商业版:旗舰版功能强大
免费版:社区版功能单一

3 IDEA 特点

所提倡的是智能编码,是减少程序员的工作

3.1智能的选取

在很多时候我们要选取某个方法,或某个循环或想一步一步从一个变量到整个类慢慢扩充着选取,IDEA 就提供这种基于语法的选择,在默认设置中 Ctrl+W,可以实现选取范围的不断扩充,这种方式在重构的时候尤其显得方便。

3.2丰富的导航模式

IDEA 提供了丰富的导航查看模式,例如 Ctrl+E 显示最近打开过的文件,Ctrl+N显示你希望显示的类名查找框(该框同样有智能补充功能,当你输入字母后 IDEA 小风 Java 实战系列教程将显示所有候选类名)。在最基本的 project 视图中,你还可以选择多种的视图方式。

3.3历史记录功能

不用通过版本管理服务器,单纯的 IDEA 就可以查看任何工程中文件的历史记录,在版本恢复时你可以很容易的将其恢复。
JUnit 的完美支持

3.4对重构的优越支持

IDEA 是所有 IDE 中最早支持重构的,其优秀的重构能力一直是其主要卖点之一。

3.5编码辅助

Java 规范中提倡的 toString()、hashCode()、equals()以及所有的 get/set 方法,你可以不用进行任何的输入就可以实现代码的自动生成,从而把你从无聊的基本方法编码中解放出来。

3.6灵活的排版功能

基本所有的 IDE 都有重排版功能,但仅有 IDEA 的是人性的,因为它支持排版模式的定制,你可以根据不同的项目要求采用不同的排版方式。
XML 的完美支持
xml 全提示支持:所有流行框架的 xml 文件都支持全提示,谁用谁知道。

3.7动态语法检测

任何不符合 java 规范、自己预定义的规范、累赘都将在页面中加亮显示。

3.8代码检查

对代码进行自动分析,检测不符合规范的,存在风险的代码,并加亮显示。

3.9对 JSP 的完全支持

不需要任何的插件,完全支持 JSP。

3.10智能编辑

代码输入过程中,自动补充方法或类。

3.11EJB 支持

不需要任何插件完全支持 EJB(6.0 支持 EJB3.0)

3.12列编辑模式

用过 UtralEdit 的肯定对其的列编辑模式赞赏不已,因为它减少了很多无聊的重复工作,而 IDEA 完全支持该模式,从而更加提高了编码效率。

3.13预置模板

预置模板可以让你把经常用到的方法编辑进模板,使用时你只用输入简单的几个字母就可以完成全部代码的编写。例如使用比较高的 public static voidmain(String[] args){}你可以在模板中预设 pm 为该方法,输入时你只要输入 pm 再按代码辅助键,IDEA 将完成代码的自动输入。

3.14完美的自动代码完成

智能检查类中的方法,当发现方法名只有一个时自动完成代码输入,从而减少剩下代码的编写工作。

3.15版本控制完美支持

集成了目前市面上常见的所有版本控制工具插件,包括 git、svn、github,让开发人员在编程的工程中直接在 intellij idea 里就能完成代码的提交、检出、解决冲突、查看版本控制服务器内容等等。

3.16不使用代码的检查

自动检查代码中不使用的代码,并给出提示,从而使代码更高效。

3.17智能代码

自动检查代码,发现与预置规范有出入的代码给出提示,若程序员同意修改自动完成修改。例如代码:String str = "Hello Intellij " + “IDEA”; IDEA 将给出优化提示,若程序员同意修改 IDEA 将自动将代码修改为:String str = “Hello Intellij IDEA”;

3.18正则表达式的查找和替换功能

查找和替换支持正则表达式,从而提高效率。

3.19JavaDoc 预览支持

支持 JavaDoc 的预览功能,在 JavaDoc 代码中 Ctrl+Q 显示 JavaDoc 的结果,从而提高 doc 文档的质量。

3.20程序员意图支持

程序员编码时 IDEA 时时检测你的意图,或提供建议,或直接帮你完成代码。不需要再使用 CTR+S 不停的保存代码

二、 IDEA 安装

IDEA 版本:ideaIU-2017.3.1

1 IDEA 官网

Idea实战使用_第2张图片

2 如何安装 IDEA

Idea实战使用_第3张图片
Idea实战使用_第4张图片
Idea实战使用_第5张图片

3 IDEA 破解

3.1将 jar 包拷贝到 idea 安装完毕的 bin 目录下

Idea实战使用_第6张图片

3.2修改 idea 的 bin 目录下的配置文件

Idea.exe.vmoptions
Idea64.exe.vmoptions
Idea实战使用_第7张图片
Idea实战使用_第8张图片
Idea实战使用_第9张图片

3.3通过激活码,激活 Idea

Idea实战使用_第10张图片

4 配置 IDEA

Idea实战使用_第11张图片

4.1配置字体与大小

Idea实战使用_第12张图片

4.2配置 Idea 的主题风格

Idea实战使用_第13张图片

4.3配置 Maven

Idea实战使用_第14张图片

三、 IDEA 中的项目创建

1 创建 java 项目

1.1启动时创建项目

Idea实战使用_第15张图片

1.2配置 JDK

Idea实战使用_第16张图片

1.3选择项目模板

Idea实战使用_第17张图片

1.4指定项目存放位置以及项目名称

Idea实战使用_第18张图片

1.5隐藏 IDEA 的项目配置文件

Idea实战使用_第19张图片

1.6Main 方法的运行方式

1.6.1 点击菜单栏中的运行按钮

Idea实战使用_第20张图片

1.6.2 点击鼠标的右键,通过菜单中的选项来运行

Idea实战使用_第21张图片

2 快捷键使用

2.1CTR+N 搜索类
2.2CTR+SHIT+N 搜索文件
2.3CTR+ALT+空格 代码提示(类似于 ALT+/)
2.4ALT+F7 查询在某处使用
2.5CTR+Q 查看代码提示及内容
2.6CTR+B 查看类的声明 还可以直接按住:CTR 再点击鼠标
(和 eclipse 的用
2.7法是一样的)
2.8CTR+F12 查看文件列表(File Structure)
2.9SHIFT+F6 重命名。
2.10ALT+INSERT :生成 getter 和 setter 的方法
2.11CTR+ALT+T 选中某一个段代码进行 try catch
2.12CTR+SHIT+空格 :新建类时 在 new 后面使用 (提示自
动创建类)
2.13CTR+ALT+B :查看接口或者抽象类的子类。
2.14CTR+SHIT+/ :注释(整体注释)
2.15CTR+/ :行注释
2.16CTR+D :换行 并复制
2.17CTR+Y : 删除当前行
2.18 alt+1 回到项目窗口
2.19 esc 回到代码窗口
Shift + F10 运行当前类
Alt + Shift + F10 选择一个类执行run/debug/coverage(测试用例覆盖率)操作
Shift + Ctrl + ;运行最近使用过的测试类
Run Anything 这个需要自定义 可以执行任何可执行类、测试方法
大小写转换

  • Ctrl + Shift + U
    ctrl +d 复制当前行
    ctrl+y 删除当前行
    ctrl+z撤销
    shift+ctrl+z 取消撤销操作
    ctrl + alt + v 自动填充变量
    ctrl+f12 查看当前类的大纲
    Ctrl+Shift+上下键 上下移动代码
    ctrl+shift+alt+u 在一个类里面查看类的继承关系 ctrl + h 也可以查看类似的
    ctrl+alt + h 点击方法然后执行 ctrl+alt + h 查看方法的调用层级
    断点
    普通断点
    条件断点
    Evaluate Expression (断点求值)
    run to cursor (跳到光标处进行断点)
    set value (断点过程中修改值) debug下面的窗口 右键改的值,然后点击set value
    高效定位
    项目之间的跳转
  • 界面位置Windows - > Next/Prev Proj…
  • 上一个项目Alt + Ctrl + [
  • 下一个项目Alt + Ctrl + ]
    文件之间跳转
  • Ctrl + E
    上次编辑的地方/跳转回来
  • Navigate -> Last Edit Location
  • Navigate -> Next Edit Location
    上次浏览的地方/当前位置浏览之后浏览过的地方
  • Ctrl + Alt + 左箭头/右箭头
    打开的类上面安旭跳转 alt+左箭头或者右箭头

重命名 Shift + F6

  • 可以重构类名、函数名、文件名等
    更改函数签名 Ctrl + F6 同意重构调用方法 (或者在方法调用的地方修改后 alt+enter直接修改方法)
    3提取为局部变量 Ctrl + Alt + V
  • refactor -> Extract -> variable
    4提取为静态不可变变量
  • Ctrl + Alt + C
  • public static final
  • refactor -> Extract -> constant
    5提取为内部区域变量
  • Ctrl + Alt + F
  • private static final
  • refactor -> Extract -> field
    6提取成员变量为当前方法的参数
  • Ctrl + Alt + P
  • refactor -> Extract -> parameter
    7提取方法
  • Ctrl + Alt + M
  • refactor -> Extract -> Method
    自动补全函数括号、分号、当前行缩进
    Ctrl + Shift + Enter
    Show Intention Action(Alt + Enter智能提示)

3 使用 Eclipse 方式的快捷键

Idea实战使用_第22张图片

4 IDEA 中的代码模板

4.1代码提示模板

Idea实战使用_第23张图片
Idea实战使用_第24张图片

4.2设置组件内容模板

Idea实战使用_第25张图片

4.3注释模板

4.3.1 类注释模板

Idea实战使用_第26张图片

/**

*	@Auther: http://www.bjsxt.com

*	@Date: ${DATE}

*	@Description: ${PACKAGE_NAME}

*	@version: 1.0

*/

4.3.2 方法注释模板

Idea实战使用_第27张图片

/**

*	功能描述:

*	@param: $param$

*	@return: $return$

*	@auther: $user$

*	@date: $date$ $time$ */

引入外部DTD文件

打开file——Settings…(快捷键ctrl+alt+s);
找到Languages&Frameworks——Schemas and DTDs
Idea实战使用_第28张图片
右侧的External Schemas and DTDs窗口中点击添加按钮。
Idea实战使用_第29张图片
Idea实战使用_第30张图片

IDEA编辑器设置完毕后的settings.jar

简介

每次重装系统后,IDEA的快捷的都要重新设置太麻烦了.
我现在保存该jar包,用于后期一直使用.
导出步骤
1.选中settings
Idea实战使用_第31张图片
2.导出settings
Idea实战使用_第32张图片
导入settings.jar
导入的步骤正好是相反.

5 创建 Web 工程

5.1创建工程

Idea实战使用_第33张图片
Idea实战使用_第34张图片

5.4去掉参数标记

Idea实战使用_第35张图片

5.5配置项目访问路径

5.5.1 默认访问路径问 /

5.5.2 修改访问路径

Idea实战使用_第36张图片
Idea实战使用_第37张图片

四、 创建 Maven 项目

1 配置 Maven

Idea实战使用_第38张图片

2 创建普通 Maven 项目

2.1创建项目

Idea实战使用_第39张图片
Idea实战使用_第40张图片

2.2配置项目构建插件

-DarchetypeCatalog=internal

Idea实战使用_第41张图片

3 普通 Maven 项目开发过程

3.1需求

将 jsp 中的表单数据提交到 servlet 中,并在控制台打印表单信息。

3.2在项目中创建目录

Idea实战使用_第42张图片

3.3修改目录类

Idea实战使用_第43张图片

3.4编写业务

3.4.1 修改 pom 文件
3.5启动 Maven 的 Tomcat 插件

Idea实战使用_第44张图片
本地maven仓库清理(.bat)

set REPOSITORY_PATH=D:\repository
rem 正在搜索...
for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do (
    del /s /q %%i
)
rem 搜索完毕
pause

五、 创建 Maven 的聚合工程

1 项目结构

Idea实战使用_第45张图片

2 创建项目

Idea实战使用_第46张图片
Idea实战使用_第47张图片

3 创建子模块

Idea实战使用_第48张图片
Idea实战使用_第49张图片
Idea实战使用_第50张图片
Idea实战使用_第51张图片

DepencyManagement和dependencies的区别

在父pom的 里引入的依赖子项目会继承,也就说,只要在父pom的里引入的东西,子项目就可以直接用

负责管理子项目的依赖版本。也就是说,在这里引入的依赖,子项目不会继承,子项目要用到的依赖还是要子项目自己去进行引入,但是,子项目在引用时是没有版本号的,版本号在父pom的 里定义好了。

1、DepencyManagement应用场景

当我们的项目模块很多的时候,我们使用Maven管理项目非常方便,帮助我们管理构建、文档、报告、依赖、scms、发布、分发的方法。可以方便的编译代码、进行依赖管理、管理二进制库等等。
由于我们的模块很多,所以我们又抽象了一层,抽出一个itoo-base-parent来管理子项目的公共的依赖。为了项目的正确运行,必须让所有的子项目使用依赖项的统一版本,必须确保应用的各个项目的依赖项和版本一致,才能保证测试的和发布的是相同的结果。
在我们项目顶层的POM文件中,我们会看到dependencyManagement元素。通过它元素来管理jar包的版本,让子项目中引用一个依赖而不用显示的列出版本号。Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在这个dependencyManagement元素中指定的版本号。

这样做的好处:统一管理项目的版本号,确保应用的各个项目的依赖和版本一致,才能保证测试的和发布的是相同的成果,因此,在顶层pom中定义共同的依赖关系。同时可以避免在每个使用的子项目中都声明一个版本号,这样想升级或者切换到另一个版本时,只需要在父类容器里更新,不需要任何一个子项目的修改;如果某个子项目需要另外一个版本号时,只需要在dependencies中声明一个版本号即可。子类就会使用子类声明的版本号,不继承于父类版本号。

2、Dependencies
相对于dependencyManagement,所有生命在dependencies里的依赖都会自动引入,并默认被所有的子项目继承。
Idea实战使用_第52张图片
父类模块

<?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.xql</groupId>
  <artifactId>manager</artifactId>
  <packaging>pom</packaging>
  <version>1.0-SNAPSHOT</version>
  <modules>
    <module>manager-pojo</module>
    <module>manager-mapper</module>
    <module>manager-service</module>
    <module>manager-web</module>
  </modules>

  <name>Maven</name>
  <!-- 对依赖的坐标的版本做集中管理 -->
  <properties>
    <junit.version>4.12</junit.version>
    <struts.version>2.3.16.3</struts.version>
    <mybatis.version>3.1.1</mybatis.version>
    <pagehelper.version>5.1.2</pagehelper.version>
    <oracle.version>11.2.0.2.0</oracle.version>
    <servlet.version>3.1.0</servlet.version>
    <log4j.version>1.2.7</log4j.version>
    <jstl.version>1.2.1</jstl.version>
    <jsp.version>2.0</jsp.version>
    <tomcat.version>2.2</tomcat.version>
  </properties>
  <!-- 依赖jar包配置 -->
  <dependencyManagement>
    <dependencies>
      <!-- 配置单元测试 -->
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
      </dependency>
      <!-- 配置Servlet -->
      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>${servlet.version}</version>
        <scope>provided</scope>
      </dependency>
      <!-- 配置struts2核心jar -->
      <!-- 配置struts2核心jar -->
      <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>${struts.version}</version>
      </dependency>

      <!-- 配置struts2核心jar -->
      <dependency>
        <groupId>org.apache.struts.xwork</groupId>
        <artifactId>xwork-core</artifactId>
        <version>${struts.version}</version>
      </dependency>

      <!-- 配置struts2缺失jar -->
      <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.3</version>
      </dependency>

      <!-- mybatis核心jar -->
      <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>${mybatis.version}</version>
      </dependency>

      <!-- ojdbc连接数据库驱动 -->
      <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc5</artifactId>
        <version>${oracle.version}</version>
      </dependency>

      <!-- log4j.jar包 -->
      <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j.version}</version>
      </dependency>
      <!-- 配置jstl标签库 -->
      <dependency>
        <groupId>org.apache.taglibs</groupId>
        <artifactId>taglibs-standard-spec</artifactId>
        <version>${jstl.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.taglibs</groupId>
        <artifactId>taglibs-standard-impl</artifactId>
        <version>${jstl.version}</version>
      </dependency>
      <!-- mybatis分页插件jar包 -->
      <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper</artifactId>
        <version>${pagehelper.version}</version>
      </dependency>
      <!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
      <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.10</version>
      </dependency>
      <!-- https://mvnrepository.com/artifact/javax.activation/activation -->
      <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>activation</artifactId>
        <version>1.1.1</version>
      </dependency>
      <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-email -->
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-email</artifactId>
        <version>1.4</version>
      </dependency>
      <!-- https://mvnrepository.com/artifact/javax.mail/mail -->
      <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.4.1</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <!-- 配置资源拷贝插件 -->
  <build>
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
        <include>**/*.xml</include>
        </includes>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.xml</include>
        </includes>
      </resource>
    </resources>
    <!-- 配置tomcat插件 -->
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat7-maven-plugin</artifactId>
          <version>${tomcat.version}</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

子类pojo

<?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">
    <parent>
        <artifactId>manager</artifactId>
        <groupId>com.xql</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>manager-mapper</artifactId>

    <name>manager-mapper</name>
    <!-- jar包依赖配置 -->
    <dependencies>
        <!-- 实体类 -->
        <dependency>
            <groupId>com.xql</groupId>
            <artifactId>manager-pojo</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!-- oracle -->
        <!-- ojdbc连接数据库驱动 -->
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc5</artifactId>
        </dependency>
        <!-- mybatis核心jar -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
        </dependency>
        
    </dependencies>
</project>

3、区别
dependencies即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)

dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。

Maven约定优于配置

   它提出这一概念,为项目提供合理的默认行为,无需不必要的配置。提供了默认的目录 

src ——> 源代码和测试代码的根目录

main 应用代码的源目录

java 源代码

resources 项目的资源文件

test 测试代码的源目录

java 测试代码

resources 测试的资源文件

target 编译后的类文件、jar文件等

对于Maven约定优于配置的理解,一方面对于小型项目基本满足我们的需要基本不需要自己配置东西,使用Maven已经配置好的,快速上手,学习成本降低;另一方面,对于不满足我们需要的还可以自定义设置,体现了灵活性。配置大量减少了,随着项目变的越复杂,这种优势就越明显。

8.3.2 Maven 的命令说明

Idea实战使用_第53张图片

8.3.3 Tomcat 插件使用

8.3.3.1 第一种方式

在子项目中配置 tomcat 插件要求所有的聚合工程必须要安装。

8.3.3.2 第二种方式

在父项目中配置 tomcat 插件不要求所有的工程必须要安装。

10 Idea 中的项目打包

10.1Maven 项目的打包处理

Idea实战使用_第54张图片

10.2非 Maven 项目的打包处理

Idea实战使用_第55张图片
Idea实战使用_第56张图片
Idea实战使用_第57张图片
Idea实战使用_第58张图片
Idea实战使用_第59张图片

六、 IDEA 的其他常用功能

1 IDEA 中 SVN 的使用

1.1提交项目代码

1.1.1 上传代码时可以指定忽略一些上传目录

Idea实战使用_第60张图片

== 未完待续 ====

你可能感兴趣的:(Idea实战使用)