出上图大纲:
还有
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 官网
2 如何安装 IDEA
3 IDEA 破解
3.1将 jar 包拷贝到 idea 安装完毕的 bin 目录下
3.2修改 idea 的 bin 目录下的配置文件
Idea.exe.vmoptions
Idea64.exe.vmoptions
3.3通过激活码,激活 Idea
4 配置 IDEA
4.1配置字体与大小
4.2配置 Idea 的主题风格
4.3配置 Maven
三、 IDEA 中的项目创建
1 创建 java 项目
1.1启动时创建项目
1.2配置 JDK
1.3选择项目模板
1.4指定项目存放位置以及项目名称
1.5隐藏 IDEA 的项目配置文件
1.6Main 方法的运行方式
1.6.1 点击菜单栏中的运行按钮
1.6.2 点击鼠标的右键,通过菜单中的选项来运行
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 方式的快捷键
4 IDEA 中的代码模板
4.1代码提示模板
4.2设置组件内容模板
4.3注释模板
4.3.1 类注释模板
/**
* @Auther: http://www.bjsxt.com
* @Date: ${DATE}
* @Description: ${PACKAGE_NAME}
* @version: 1.0
*/
4.3.2 方法注释模板
/**
* 功能描述:
* @param: $param$
* @return: $return$
* @auther: $user$
* @date: $date$ $time$ */
引入外部DTD文件
打开file——Settings…(快捷键ctrl+alt+s);
找到Languages&Frameworks——Schemas and DTDs
右侧的External Schemas and DTDs窗口中点击添加按钮。
IDEA编辑器设置完毕后的settings.jar
简介
每次重装系统后,IDEA的快捷的都要重新设置太麻烦了.
我现在保存该jar包,用于后期一直使用.
导出步骤
1.选中settings
2.导出settings
导入settings.jar
导入的步骤正好是相反.
5 创建 Web 工程
5.1创建工程
5.4去掉参数标记
5.5配置项目访问路径
5.5.1 默认访问路径问 /
5.5.2 修改访问路径
四、 创建 Maven 项目
1 配置 Maven
2 创建普通 Maven 项目
2.1创建项目
2.2配置项目构建插件
-DarchetypeCatalog=internal
3 普通 Maven 项目开发过程
3.1需求
将 jsp 中的表单数据提交到 servlet 中,并在控制台打印表单信息。
3.2在项目中创建目录
3.3修改目录类
3.4编写业务
3.4.1 修改 pom 文件
3.5启动 Maven 的 Tomcat 插件
本地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 项目结构
2 创建项目
3 创建子模块
DepencyManagement和dependencies的区别
在父pom的 里引入的依赖子项目会继承,也就说,只要在父pom的里引入的东西,子项目就可以直接用
负责管理子项目的依赖版本。也就是说,在这里引入的依赖,子项目不会继承,子项目要用到的依赖还是要子项目自己去进行引入,但是,子项目在引用时是没有版本号的,版本号在父pom的 里定义好了。
1、DepencyManagement应用场景
当我们的项目模块很多的时候,我们使用Maven管理项目非常方便,帮助我们管理构建、文档、报告、依赖、scms、发布、分发的方法。可以方便的编译代码、进行依赖管理、管理二进制库等等。
由于我们的模块很多,所以我们又抽象了一层,抽出一个itoo-base-parent来管理子项目的公共的依赖。为了项目的正确运行,必须让所有的子项目使用依赖项的统一版本,必须确保应用的各个项目的依赖项和版本一致,才能保证测试的和发布的是相同的结果。
在我们项目顶层的POM文件中,我们会看到dependencyManagement元素。通过它元素来管理jar包的版本,让子项目中引用一个依赖而不用显示的列出版本号。Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在这个dependencyManagement元素中指定的版本号。
这样做的好处:统一管理项目的版本号,确保应用的各个项目的依赖和版本一致,才能保证测试的和发布的是相同的成果,因此,在顶层pom中定义共同的依赖关系。同时可以避免在每个使用的子项目中都声明一个版本号,这样想升级或者切换到另一个版本时,只需要在父类容器里更新,不需要任何一个子项目的修改;如果某个子项目需要另外一个版本号时,只需要在dependencies中声明一个版本号即可。子类就会使用子类声明的版本号,不继承于父类版本号。
2、Dependencies
相对于dependencyManagement,所有生命在dependencies里的依赖都会自动引入,并默认被所有的子项目继承。
父类模块
<?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 的命令说明
8.3.3 Tomcat 插件使用
8.3.3.1 第一种方式
在子项目中配置 tomcat 插件要求所有的聚合工程必须要安装。
8.3.3.2 第二种方式
在父项目中配置 tomcat 插件不要求所有的工程必须要安装。
10 Idea 中的项目打包
10.1Maven 项目的打包处理
10.2非 Maven 项目的打包处理