零基础学习java------40---------Maven(maven的概念,安装,maven在eclipse中使用),springboot(spring整合springmvc(注解),spring整合mybatis(常见的配置文件)),前端页面(bootstrap软件)
一 maven
1. Maven的相关概念
1.1 项目开发中遇到的问题
(1)都是同样的代码,为什么在我的机器上可以编译执行,而在他的机器上就不行?
(2)为什么在我的机器上可以正常打包,而配置管理员却打不出来?
(3)项目组加入了新的人员,我要给他说明编译环境如何设置,但是让我挠头的是,有些细节我也记不清楚了。
(4)我的项目依赖一些jar包,我应该把他们放哪里?放源码库里?
(5)这是我开发的第二个项目,还是需要上面的那些jar包,再把它们复制到我当前项目的svn库里吧
(6)现在是第三次,再复制一次吧 ----- 这样真的好吗?
(7)我写了一个数据库相关的通用类,并且推荐给了其他项目组,现在已经有五个项目组在使用它了,今天我发现了一个bug,并修正了它,我会把jar包通过邮件发给其他项目组,这不是一个好的分发机制,太多的环节可能导致出现bug
(8)项目进入测试阶段,每天都要向测试服务器部署一版。每次都手动部署,太麻烦了。
1.2 解决方案
需要一个工具进行项目管理,对项目中的jar包进行管理、jar包的版本管理、项目的打包的流程管理。实现一步构建
(1)Ant:
可以对项目进行构建。缺少生命周期的管理,需要自己手工定义。需要自己定义一个build.xml,缺少jar包的管理。对工程的目录结构没有约束
(2)Maven
拥有约定,知道你的代码在哪里,该放到哪里去。拥有一个生命周期,例如执行mvn install就可以自动执行编译,测试,打包等构件过程,只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮你处理其他事情
1.3 什么是maven
maven翻译为“专家”,“内行”。Maven是基于 项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具
Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。
Maven主要有两个功能:
(1)项目构建
(2)依赖管理
1.4 什么是构建
maven定义的工程构建生命周期:
编译的时候会有些中间文件,当你再次编译时就要将这些文件清理掉,所以在编译前会有清理这一步
1.5 Maven的模型
2. Maven的安装
第一步:安装jdk
第二步:把maven解压缩
第三步:配置环境变量MAVEN_HOME.
E:\development\apache-maven\apache-maven-3.6.2-bin\apache-maven-3.6.2
第四步:在path中添加%MAVEN_HOME%/bin
第五步:测试
Mvn -v测试
3. maven在eclipse中使用
3.1 在eclipse中安装maven
Window---->preferences得到如下图
点击apply and close即可
User Settings 用户自定义设置
3.2 创建maven工程
(1)第一种形式:java项目
最终可得到如下形式的项目:
(2)第二种形式:web项目
前面步骤同上
得到如下项目
配置pom.xml文件
若想添加mysql的jar包,可以直接在依赖处添加mysql的依赖坐标(有网的情况下,否则就得配置本地仓库)
在pom.xml的依赖处添加mysql的依赖坐标,如下图
3.3 创建本地仓库
maven安装包--->conf---->setting.xml
由于每次下载jar包都需要去外网下载,网速会很慢,所以可以配置访问阿里云的镜像(国内),这样下载相应的包速度就很快
这样setting.xml文件就算设置好了,接下来直接在eclipse中添加配置文件:windows-preference-Maven里面的User-Settings,里面有一个是全局设置,一个是用户设置,最后一个是本地仓库位置(前面两个配置好,update后会自动填写),把两个设置都改为你的settings路径就行了
Could not read settings.xml
Could not read settings.xml 字面上的意思是读取不了这个文件,说明你的文件里面的内容有问题
1、编码问题:内容里面最好不要有中文,配置完之后一定要以 utf-8 的形式保存
2、空格问题:允许换行,但是不允许有多个空格的出现
3、配置仓库路径的时候不要用的是 / 符号
一开始,本地仓库是个空的文件夹,当我们创建一个项目时,本地仓库中就会自动多一些jar包,如下图
若想将项目放到本地仓库,可以如下操作
二. springboot
springboot是spring的一个全新的框架,其能简化项目搭建过程和开发效率
1. 整合spring和springmvc
1.1 整合流程:
(1)使用maven构建web项目
(2)在pom文件中添加springboot的父工程依赖(必须)
(3)添加webstarter的依赖
说明:Spring Boot提供了很多”开箱即用“的依赖模块,都是以spring-boot-starter-xx作为命名的。举个例子来说明一下这个起步依赖的好处,比如组装台式机和品牌机,自己组装的话需要自己去选择不同的零件,最后还要组装起来,期间有可能会遇到零件不匹配的问题。耗时又消力,而品牌机就好一点,买来就能直接用的,后续想换零件也是可以的。相比较之下,后者带来的效果更好点(这里就不讨论价格问题哈),起步依赖就像这里的品牌机,自动给你封装好了你想要实现的功能的依赖。就比如我们之前要实现web功能,引入了spring-boot-starter-web这个起步依赖。
(4)编写启动类
@SpringBootApplication
public class AppStart {
public static void main(String[] args) {
SpringApplication.run(AppStart.class, args);
}
}
(5)编写控制器
@Controller
public class PageController {
@RequestMapping("/")
public String index() {
return "index.html";
}
}
注意:springboot默认存放静态资源的地方为src/main/resources下的static文件夹
点击启动类,开启springboot(不需要再点击tomcat开启了), 浏览器中输入请求:http://localhost:8080/(此处url不需要输入项目名,因为以前是一个tomcat中包含多个项目,此处只有一个)
1.2 注解
1.2.1
特殊的类,可以写在类上,方法上,属性是哪个,具有特殊的含义
@Controller @Service @Repository(即@Component): 用于spring容器加载相关类的
@Mapper: mybatis为接口和sql语句创建代理对象
1.2.2 :@SpringBootApplication (这是一个组合注解)
a 标明此类是本项目的快捷配置启动类
b 可以自动的扫描当前类所在的包以及子包中的所有的添加Component 注解的Controller,service,mapper的类
c 根据项目中的jar包自动完成必要配置
1.2.3 @Configuration :替代xml配置
此处Configuration上为什么要有@Component注解?
框架可以在代码中(类)完成自动配置或者自定义的配置,在这些配置类需要交给容器管理,所以需要此注解进行包的扫描
2. 整合mybatis操作数据库
1.1 大致流程
(1)添加依赖,mysql的驱动
(2)application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/db_demo1?useSSL=false&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=feng
spring.datasource.driverClassName=com.mysql.jdbc.Driver mybatis.type-aliases-package=com._51doit.pojo
此处也可以改用.yml文件
spring
datasource
url = jdbc:mysql://localhost:3306/db_demo?useSSL=false&characterEncoding=UTF-8
username = root
password = root
driverClassName = com.mysql.jdbc.Driver
(3)Controller---->service---->mapper
controller
service
mapper
pom.xml文件
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com._51doit</groupId>
<artifactId>spring_boot</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>spring_boot Maven Webapp</name>
<url>http://maven.apache.org</url>
<!-- spring boot -->
<!-- 父級依赖 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath />
</parent>
<dependencies>
<!-- 起步依賴 spring-boot-starter-xx -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- jsp spring boot 默认不支持jsp,所以加此依赖 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!-- jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<scope>compile</scope>
</dependency> <!-- dao -->
<!-- mysql驱动 -->
<!-- mybatis -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency> <!--tools 自动重新启动项目 代码重新编译 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<finalName>spring_boot</finalName>
</build>
</project>
1.2 常见的配置文件
1.2.1 .xml
(1)标签的形式,层级结构,语法严谨,有约束
(2)解析方式:
a. document 对象解析,好处可以操作任意的元素,其是加在到内存中所以不能解析大文件
b. sax 逐行解析,不能操作任意的元素,可以解析大文件
1.2.2 properties
key=value的形式
Properties类解析
1.2.3 .yml配置文件
spring
datasource
url = jdbc:mysql://localhost:3306/db_demo?useSSL=false&characterEncoding=UTF-8
username = root
password = root
driverClassName = com.mysql.jdbc.Driver
零基础学习java------40---------Maven(maven的概念,安装,maven在eclipse中使用),springboot(spring整合springmvc(注解),spring整合mybatis(常见的配置文件)),前端页面(bootstrap软件)的更多相关文章
- 音乐出身的妹纸,零基础学习JAVA靠谱么
问:表示音乐出身的妹纸一枚 某一天突然觉得身边认识的是一群程序员 突然想 要不要也去试试... 众好友都觉得我该去做个老师,可是我怕我会误人子弟,祸害祖国下一代..... 要不要 要不要 学Ja ...
- 总结了零基础学习Java编程语言的几个基础知识要点
很多Java编程初学者在刚接触Java语言程序的时候,不知道该学习掌握哪些必要的基础知识.本文总结了零基础学习Java编程语言的几个基础知识要点. 1先了解什么是Java的四个方面 初学者先弄清这 ...
- Maven插件的简介,安装及在eclipse中配置
1.Maven简介 1.Maven介绍 Maven是一个基于项目对象模型(POM:project object model)的概念的纯java开发的开源的项目管理工具.Maven把我们的工程抽像一个对 ...
- IDEA + maven 零基础构建 java agent 项目
200316-IDEA + maven 零基础构建 java agent 项目 Java Agent(java 探针)虽说在 jdk1.5 之后就有了,但是对于绝大多数的业务开发 javaer 来说, ...
- 零基础学习hadoop到上手工作线路指导(编程篇)
问题导读: 1.hadoop编程需要哪些基础? 2.hadoop编程需要注意哪些问题? 3.如何创建mapreduce程序及其包含几部分? 4.如何远程连接eclipse,可能会遇到什么问题? 5.如 ...
- Android零基础入门第40节:自定义ArrayAdapter
原文:Android零基础入门第40节:自定义ArrayAdapter ListView用起来还是比较简单的,也是Android应用程序中最重要的一个组件,但其他ListView可以随你所愿,能够完成 ...
- 零基础学Java第一节(语法格式、数据类型)
本篇文章是<零基础学Java>专栏的第一篇文章,从本篇文章开始,将会连更本专栏,带领大家将Java基础知识彻底学懂,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! ...
- 【零基础学习iOS开发】【转载】
原文地址:http://www.cnblogs.com/mjios/archive/2013/04/24/3039357.html 本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开 ...
- 李洪强iOS开发之【零基础学习iOS开发】【01-前言】01-开篇
从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过IT领域,也不管你是理科生还是文科生,只要你对iOS开发感兴趣,都可以来阅读此专题.我尽量以通俗易懂的语言,让每个人都能够看懂 ...
随机推荐
- dart系列之:dart语言中的特殊操作符
dart系列之:dart语言中的特殊操作符 目录 简介 普通操作符 类型测试操作符 条件运算符 级联符号 类中的自定义操作符 总结 简介 有运算就有操作符,dart中除了普通的算术运算的操作符之外,还 ...
- 一个校验接口引发的思考--我真的了解Response吗
一个校验接口 最近,我需要对接一个外部接口,基本功能是:校验指定的门店是否完善了货运信息.接口大致是这样的: POST https://******/Dealer/CheckCarrier Heads ...
- Java学习(九)
今天先学习了内联框架的知识,使用iframe的标签,还有超链接的知识. 做了个小实践 <!DOCTYPE html> <head> <meta charset=" ...
- Python 爬取 拉钩
... from urllib import request from urllib import parse from urllib.error import URLError import jso ...
- python实现高斯滤波
一,定义 核是:3 *3 均值滤波 二,高斯函数 Y方向的方差与X方向的一致.处理后图像看起来更模糊(滤波明显)的话,核要更大. (三)代码实现 (四)核计算 (五)图像产生高斯噪声循环代码实 ...
- C语言通过指针数组和二维数组读取文件
1 # include <stdio.h> 2 # include <stdlib.h> 3 # include <time.h> 4 # include < ...
- 使用 kubeadm 部署
上一章中,我们用 minikube 去搭建单机集群,并且创建 Deployment.Service(在三章中讲解),本篇将介绍利用 kubeadm 部署多节点集群,并学会 安装以及使用 kuberne ...
- Apache ShardingSphere 5.0.0 内核优化及升级指南
经过近两年时间的优化和打磨,Apache ShardingSphere 5.0.0 GA 版终于在本月正式发布,相比于 4.1.1 GA 版,5.0.0 GA 版在内核层面进行了大量的优化.首先,基于 ...
- 关于前端项目cookie的获取
最近项目在做切换,2.0要升级到3.0,遇到跨域问题,使用的是nginx 进行对端口拦截请求其他地址,另外有的服务还要登录权限,之前没看到有这个,后来加上获取cookie的请求 var v3_toke ...
- Hbuilder/Uniapp 格式化的时候,很多属性会排列在一行,如何结局?
因为自己遇到这个问题,然后百度了很久都得不到解决办法,所以解决问题以后在博客园写下此文,希望能帮助到更多人! //在jsbeautifyrc.js里面的html中加入这个,就OK了 "wra ...