本篇针对初学java、对web和框架尚不了解的小白,将讲解如何使用IDEA搭建第一个springboot web项目,并了解springboot基本使用知识。
本篇将使用IDEA搭建一个springboot,还不会用IDEA参看:https://www.cnblogs.com/weibanggang/p/9395702.html
注:IDEA专业版并非免费的(不过现在也有了社区免费版),网上有很多破解教程,上述链接也有;不过如果你是学生,很容易在IDEA的官网上申请到学生认证,可以免费使用正版到毕业,教程略。
maven是包管理工具,许多项目开发往往需要java基础包之外的依赖包,导入其他依赖包往往很麻烦,尤其有些依赖包还需要依赖其他包,你需要一起导入,使用maven,只用在项目下的pom.xml文件中写下所需依赖包的名字和版本,maven就会自动下载并将依赖包导入到项目中。
幸运的是如今的IDEA也内置了maven,你不用专门下载和配置它。
在浏览器敲入网址就可访问到网站,你所敲入的网址被称为url,什么是url?参看https://www.cnblogs.com/littlek1d/p/9548075.html
浏览器将url发出,跟据url中IP地址找到对应的服务器,跟据url中的端口,web程序再跟据url的虚拟目录找到对应的方法执行,执行结束后返回html页面或者直接数据给浏览器,就完成了一次交互。
框架一个半成品项目,为了便于程序员开发,框架将经常用到、重复使用的方法集成起来,同时框架往往还会封装一些优秀的设计理念,如什么作用的类应放在什么位置,什么类型对象应被什么类型的对象调用等等,这导致使用框架往往在设计类和类之间关系时需要符合该框架特定的习惯,所以在用框架时你会常听到xx类、配置文件。
1、使用注解,注解是以@开头,写在java类、方法或者参数前用于标识这块代码属性的特殊代码;
2、使用配置文件,在配置文件中写下那些包的类属于哪种类;
3、使用命名规范,有些框架为了更少做配置,要求类或方法的名字按照他要求的格式写,框架就可根据不同格式分辨代码的类型。
springboot是对web开发常用三件套spring+springMVC+mybatis的封装,所以使用的MVC模式,MVC模式参看https://www.runoob.com/design-pattern/mvc-pattern.html
所以一个springboot往往有以下目录:
由于maven是外国软件,下载依赖包往往是从外国网站下载,这样速度会非常慢,甚至可能会出错,在maven的配置文件中添加国内镜像网站的配置,它就会从该国内网站下载依赖包
(1)点击IDEA的file->Setting
(2)可以看到maven的配置文件的位置如果是初次使用maven,一般这个文件是不存在的,不要自己创建,可以在IDEA的安装目录下找到一个maven配置文件,如D:\Software_installation\IntelliJ IDEA 2018.3.1\plugins\maven\lib\maven3\conf\settings.xml (我的IDEA安装目录是D:\Software_installation\IntelliJ IDEA 2018.3.1),将这个文件复制到上面看到的路径下,或者将上图中划线部分修改为你刚刚找到的settings.xml文件路径(修改要先勾选右边的Override选择,不然无法修改)
(3)打开这个文件,查找字符串
<!-- 阿里云仓库 -->
alimaven
central
aliyun maven
http://maven.aliyun.com/nexus/content/repositories/central/
添加依赖包,不使用mybatis、数据库时只需选择web的Spring Web,不要选择mybatis的包,
否则使用时,mybatis的jar包中的方法会查找连接数据库所需的类和xml文件,而我们是没有写这些的,会导致报错。
创建完成后,等待maven将依赖包下载完成,会有如下目录结构,DemoApplication是自动生成的起始类,有main方法,会自动加载到启动项中,可直接启动这个web程序了,但还无法通过浏览器访问。
注:如果你之前看过springMVC等其他框架或者原生java web的教程,可能会想在启动项中配置一个Tomcat,事实上不用,springboot出现的目的就是简化springMVC的开发复杂度,它基本上只有一个配置文件,可以在同一个文件中写各种sping、mybaits的配置,也内置了Tomcat的代码,只要执行DemoApplication,无需安装Tomcat,就可以运行。
package com.example;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class TestController {
@RequestMapping("/test")
public String test(){
return "hello.html";
}
}
注解@Controller用表示一个类是控制类
注解@RequestMapping("/test") 用于匹配url,其参数"/test"就是url的虚拟目录,比如当浏览器访问http://127.0.0.1:8080/test 时,就会执行这个被标识的方法
方法返回一个html文件的名字,web程序将返回这个html文件,由浏览器接收显示成网页。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
hello word!
</body>
</html>
控制类方法返回的文件名对应文件默认相对路径在resourecs的templates文件夹下,可以通过修改配置文件修改默认路径。
>
>org.springframework.boot >
>spring-boot-starter-thymeleaf >
>
点击IDEA有下角自动弹出的提示,import Changs,maven会开始下载新添加的依赖包。
127.0.0.1是本地IP,表示要访问自己电脑;
8080端口是springboot默认使用的端口,可以通过修改配置文件application.properties,向文件中添加语句
server.port=80
可修改端口为80。
如果项目运行报错,有一种可能是端口冲突,一个端口对应一个联网应用,如果对应多个,服务器会无法知道来自网络的数据是传给哪个web程序,可以通过shell命令查询当前设备哪个端口没有被占用,用上述配置修改端口。
package com.example;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class TestController {
@ResponseBody
@RequestMapping("/test")
public String test(String str){
return str;
}
}
注解@ResponseBody标识方法直接返回给浏览器字符串,而非前端页面。
形参String str接收url中的参数,参数名称需和url中的参数相同,
注:url中传递的参数都是字符串类型,控制类方法的形参可以为其他类型如int、Date等,springboot会自动将字符串类型转化为这些类型,但要保证值可以转化,否则会报错。