一、简介

springboot是java的开源框架之一,简化spring的大量重复工作(spring.xml的配置,spring和第三框机集成需要的配置,重复jar的添加)通过特定配置进行项目的配置,不需要开发人员定义样板化的配置,实现项目的快速开发。

二、特点

1.可以创建独立的spring应用程序,基于他的maven,可以创建可执行的jar、war。
2.内嵌tomcat或jetty等servlet容器
3.自动配置spring容器,比如自动注入,自动扫描等
4.无代码生成,不需要xml配置
5.提供自动配置的“starter”项目对象模型(POMS)以简化maven配置

三、创建springboot应用的简要过程

1.创建springboot项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.springboot的依赖说明(pom.xml)

<?xml version="1.0" encoding="UTF-8"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<!--自己项目的父项目,当前使用的springboot的版本-->
-<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/>
<!-- lookup parent from repository -->
</parent>
<groupId>com.yd.app</groupId>
<artifactId>01-springboot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>01-springboot</name>
<description>Demo project for Spring Boot</description>
-<properties>
<java.version>1.8</java.version>
</properties>
-<dependencies>
<!--集成了springwebmvc的依赖-->
-<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--集成了tomcat,内嵌的tomcat-->
-<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!--springboot集成单元内测-->
-<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
-<exclusions>
-<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
-<build>
-<plugins>
-<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

3.springboot项目的目录结构

在这里插入图片描述

4.实例:客户端提交任意整数,服务器计算结果,将结果响应到客户端

/***
 * 创建springbmvc的controller
 * RestController=Controller+ResponseBody
 * @RestController 能将controller纳入spring容器
 *  还能controller的异步响应
 */
//@Controller
@RestController
public class SpringbootController {

    /***
     * 处理两个数相加的请求
     */
    @RequestMapping("/add")
    public Integer add(Integer x,Integer y){
        return x+y;
    }
}

5.项目启动


在浏览器中输入 localhost:8080/add:x=1&y=1访问

四、springboot项目配置

1.创建过程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.配置application.properties

#tomcat的访问端口
server.port=8081
#项目的访问上下文
server.servlet.context-path=/boot
#get请求方式的中文乱码处理
server.tomcat.uri-encoding=UTF-8

3.启动springboot项目

在这里插入图片描述

4.通过application.yml进行项目配置

server:
  port: 8082  #配置tomncat端口号
  servlet:
    context-path: /bt  #配置上下文
  tomcat:
    uri-encoding: UTF-8 #get请求中文乱码处理
#以上的配置都是给系统中类的属性在赋值

5.创建实习类(在pojo包里)

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * 自定义Users实体类
 * 在application.yml中对Uesrs类的属性赋值
 */
@ConfigurationProperties(
        prefix = "users", //指定配置文件中配置项的前缀
        ignoreUnknownFields = true
)
@Component  //将Users纳入spring容器中
public class Users {
    private String name;
    private String pwd;
    private String address;
//生成get/set/toString方法
}

6.配置application.yml

#给自动以类的属性赋值
users:
  name: zhagnsan
  pwd: 9527
  address: beijing
  age: 23

7.创建controller

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UsersController {
    //注入Users
    @Autowired
    private Users users;
    /***
     * 处理显示用户信息的请求
     */
    @RequestMapping("/show")
    public String showUsers(){
        return users.toString();
    }
}

访问用户信息:localhost:8082/bt/show

8.springboot集成Junit(可自动装载spring容器)

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;

@SpringBootTest
class ApplicationTests {
   /***
    * junit在启动的时候加载了spring容器
    * junit在启动的时候加载了appliaction.yml
    */
   @Autowired
   private Users users;
   @Test
   void contextLoads() {
      System.out.println(users);
   }
}

四、springboot对象jsp的支持

1.项目构建

在这里插入图片描述
在这里插入图片描述

2.在pom.xml文件当中添加jsp解析器依赖

<!-- JSTL -->
<dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>jstl</artifactId>
</dependency>
<!-- jsp解析器 -->
<dependency>
   <groupId>org.apache.tomcat.embed</groupId>
   <artifactId>tomcat-embed-jasper</artifactId>
</dependency>

3.在webapp/users下创建index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        for(int x=1;x<=10;x++){
            out.print("<hr color='red' width='"+x*50+"'/>");
        }
    %>
</body>
</html>

访问localhost:8080/users/index.jsp

五、springboot项目中添加拦截器(interceptor)

1.项目搭建

在这里插入图片描述

2.创建controller


@RestController
public class UserController {
    /***
     * 处理用户信息查询的请求
     */
    @RequestMapping("/show")
    public String show(){
        return "这是个人信息....";
    }
}

3.配置application.yml

server:
  port: 8081
  servlet:
    context-path: /user

4.创建premissionInterceptor拦截器

/***
 *通过实现HandlerInterceptor接口,自定义拦截器
 */
public class PremisssionInterceptor implements HandlerInterceptor{

    /***
     * 实现接口中定义的方法
     * @param request
     * @param response
     * @param handler
     * @return
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //获得客户端提交的凭证
        String token = request.getParameter("token");
        if(!StringUtils.isEmpty(token)){
            if(token.equals("123456")){
                System.out.println("token="+token);
                //权限验证通过,进行放行到Controller
                return true;
            }
        }
        response.setContentType("text/html;charset=UTF-8");
        //给客户端响应
        response.getWriter().write("权限不足.....");
        return false;
    }
}

5.配置自定义拦截器


//将该类纳入spring容器
@Configuration
public class ConfigBean implements WebMvcConfigurer {
    /**
     * 将自定义的拦截器添加到springboot框架中
     * @param registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new PremisssionInterceptor()).addPathPatterns("/**");
    }
}

localhost:8081/user/shw?token=123456 ——>这是个人信息…
localhost:8081/user/shw?token=123 ——>权限不足

六、springboot静态资源的处理

静态资源存放在resources/static当中,拦截器中静态资源需要放行

//将该类纳入spring容器
@Configuration
public class ConfigBean implements WebMvcConfigurer {
    /**
     * 将自定义的拦截器添加到springboot框架中
     * @param registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new PremisssionInterceptor())
                .addPathPatterns("/**") //配置需要拦截取得路径
                .excludePathPatterns("/images/**"); //指定不需要拦截的路径
    }
}

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐