听说springboot很久了,今天就上手来玩玩,以下是我开始玩的记录。
首先就是创建一个springboot 的一个quickstart的项目。
创建项目
完成项目的创建还不够,此时你的maven项目中依赖文件还没有导入,你需要将pom.xml
文件配置如下,当然==name==根据自己配置,然后右键项目找到maven
中 reimport
,成功的话项目中会出现很多springboot
的依赖包1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28<name>Springboot_Test</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<!-- spring boot-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<dependencies>
<!--spring boot 配置web依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
测试
首先创建一个HelloController类,当创建好之后,我们运行该项目,然后在浏览器访问localhost://8080/hello
会会出现Hello,Spring boot
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class HelloController {
"hello") (
public String hello(){
return "Hello,Spring boot";
}
public static void main(String[] args) {
//启动springboot项目
SpringApplication.run(HelloController.class,args);
}
}
启动方式
one
第一种方法就是上面的测试写法,将main函数写在controller中,但是这样写的弊端就是一个控制器中只有一个main,一次只能启动一个controller,因此这样的写法是不推荐。
two
第二种方法其实采用的原理就是包扫描,
首先创建一个App类,如下:
1 | //自动配置spring,当然,这里有的话其他文件中就不需要在写 |
注解解释:@EnableAutoConfiguration
注解的作用在于让 Spring Boot 根据应用所声明的依赖来对 Spring 框架进行自动配置,这就减少了开发人员的工作量。
注解@RestController
和@RequestMapping
由 Spring MVC 提供,用来创建 REST 服务。这两个注解和 Spring Boot 本身并没有关系。
Spring Boot依赖介绍
1 | spring-boot-starter 核心 POM,包含自动配置支持、日志库和对 YAML 配置文件的支持。 |
web开发介绍
静态资源的访问
在我们开发Web应用的时候,需要引用大量的js、css
图片等静态资源。Spring Boot
默认提供静态资源目录位置需置于classpath
下,目录名需符合如下规则:
/static
/public
/resources
/META-INF/resources
示例:
我们可以在src/main/resources/目录下创建static/imgs,在该位置放置一个图片文件。启动程序后,尝试访问http://localhost:8080/imgs/d.jpg。如能显示图片,配置成功。
自动返回json格式数据
注解说明:@RestController
相当于Controller 提供restful风格@RequestMapping("login")
映射路径@ResponseBody
响应体-自动返回json格式字符串1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class UserController {
"login") (
public Map<String,Object> login(String username,String password){
Map<String,Object> map = new HashMap<String,Object>();
if("lxk".equals(username) && "123".equals(password)){
map.put(username,password);
}else {
map.put("success",1);
map.put("errMsg","");
}
return map;
}
}
http://localhost:8080/login?username=lxk&password=123
当运行时,我们访问该链接时浏览器打印如下:{"lxk":"123"}
全局捕获异常
- @ExceptionHandler 表示拦截异常
- @ControllerAdvice
controller 的一个辅助类,最常用的就是作为全局异常处理的切面类,可以指定扫描范围,
约定了几种可行的返回值,如果是直接返回 model 类的话,需要使用 - @ResponseBody 进行 json 转换
示例:
在刚才的方法中,定义一个算术异常,int i=10/0;
如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class UserController {
"login") (
public Map<String,Object> login(String username,String password){
Map<String,Object> map = new HashMap<String,Object>();
int i=10/0;
if("lxk".equals(username) && "123".equals(password)){
map.put(username,password);
}else {
map.put("success",1);
map.put("errMsg","");
}
return map;
}
}
定义异常捕获类1
2
3
4
5
6
7
8
9
10
11
12//切面
public class GlobalException {
"exceptionHander") (
(RuntimeException.class)
public Map<String,Object> exceptionHander(){
Map<String,Object> map = new HashMap<String, Object>();
map.put("1","101");
map.put("errmsg","系统错误");
return map;
}
}
http://localhost:8080/login?username=lxk&password=123
当运行时,我们访问该链接时浏览器打印如下:
{"1":"101","errmsg":"系统错误"}
渲染web页面
模板引擎
在动态 HTML
实现上Spring Boot
依然可以完美胜任,并且提供了多种模板引擎的默认配置支持,所以在推荐的模板引擎下,我们可以很快的上手开发动态网站。Spring Boot
提供了默认配置的模板引擎主要有以下几种:
- Thymeleaf
- FreeMarker
- Velocity
- Groovy
- Mustache
Springboot+freemarker
Spring Boot
建议使用这些模板引擎,避免使用JSP,若一定要使用JSP将无法实现Spring Boot的多种特性,具体可见后文:支持JSP的配置
当你使用上述模板引擎中的任何一个,它们默认的模板配置路径为:src/main/resources/templates。当然也可以修改这个路径,具体如何修改,可在后续各模板引擎的配置属性中查询并修改。
既然说到FreeMarker,那我就说说FreeMaker的使用
Freemarker的使用
第一步:引入依赖包
在 pom.xml
中的dependencies
中加入以下依赖后,我们查看是否加入成功,选中pom.xml
右键选择maven
中的reimport
。1
2
3
4
5<!-- 引入freeMarker的依赖包. -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
第二步:写控制器
创建一个StudentController
控制类,Student
的模板类
1 | public class Student { |
1 |
|
第三步:创建.ftl模板文件
在src/main/resources/创建一个templates文件夹,后缀为.ftl
1 |
|
运行项目成功后,访问http://localhost:8080/stu/list
会出现预期结果,关于freeMarker后续请查阅相关资料进行学习.