首页 > 其他分享 >SpringBoot

SpringBoot

时间:2023-03-01 18:45:38浏览次数:40  
标签:SpringBoot age springframework org import public benson

简介

SprintBoot是一款快速开发框架,能够帮助我们快速整合第三方框架

  • 不同于SSM项目繁琐的xml配置,SpintBoot去除了xml配置
  • 全部采用注解化的方式配置
  • 内嵌Tomcat,运行就会启动Tomcat。不需要打包成war包再启动Tomcat
  • SpringBoot框架默认的情况下spring-boot-starter-web已经帮助我们整合好SpingMVC框架

快速入门

创建Maven工程


pom.xml

<?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.mayikt</groupId>
    <artifactId>springboot-helloworld</artifactId>
    <version>1.0-SNAPSHOT</version>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.8.RELEASE</version>
    </parent>
    <dependencies>
    <!--Spring SpringMVC  -->
   <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
   </dependency>
</dependencies>

<!--
spring-boot-starter-parent
在pom.xml中引入spring-boot-start-parent,spring官方的解释叫什么stater poms,它可以提供dependency management,也就是说依赖管理,
引入以后在申明其它dependency的时候就不需要version了,后面可以看到。
-->

    <!--
    spring-boot-starter-web
    -->

</project>

@RestController的作用

在main的java目录下新建package,com.benson.service

不写controller是因为它还有视图层,规范写service

SpringBoot的启动方式



如果用的是@Controller,要记得在getUser方法上@ResponseBody

再新建一个service
MemberService.java

package com.benson.service;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MemberService {
    @RequestMapping
    public String getMember(){
        return "member";
    }
}

此刻回到测试类执行程序,肯定是访问不到/getMember的,因为只设置了HelloworldService
可以在HelloworldService.java那设置扫包注解

@ComponentScan("com.benson.service")//扫描service这个包下所有类

最常用的启动方式

在Service类所在的包下新建个启动类,就是Application.java也可以加APP.java,名字不重要
而Service类就不需要写@EnableAutoConfiguration和@ComponentScan了
HelloworldService.java

package com.benson.service;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloworldService {
    /**
     * @RestController 与@Controller之间区别
     * 如果在类上加上@RestController,该类中所有SpringMVCUrl接口映射都是返回json格式
     * 它的效果就是在每个方法上加上@ResponseBody注解 返回json格式
     * @RestController 是我们SpringMVC提供 而不是Springboot提供
     * <p>
     * Rest 微服务接口开发中 Rest风格 数据传输格式json格式 协议http协议
     * <p>
     * Controller 控制层注解 SpringMVCUrl接口映射 默认的情况下返回页面跳转
     * @Controller 如果需要返回json格式的情况下需要使用@ResponseBody注解
     */
    @RequestMapping("/getUser")
    public String getUser(){
        return "benson";
    }
}

MemberService.java

package com.benson.service;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MemberService {
    @RequestMapping("/getMember")
    public String getMember(){
        return "member";
    }
}

Application.java

package com.benson.service;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
/* @SpringBootApplication
* 将@EnableAutoConfiguration和@ComponentScan组合在一起
* @ComponentScan的范围是当前启动类所在的包或子包
* */
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }
}

整合静态资源访问

我们在开发Web应用的时候,需要引用大量的js、css、图片等静态资源。

直接往resources里放一张图片,然后访问,发现会404

在resources下新建static目录,再往里面放一张图片

yml和properties配置

properties


实际开发中绝大多数时候使用的是yml配置,配置文件放在resources下
application.properties(默认名字一定要是application)

benson.name=benson
benson.age=18


yml

properties繁琐在每次都要写benson
application.yml

benson:
  name: benson
  age: 18

属性:后要加空格,编译器好识别 name:空格benson

整合模板引擎thymeleaf

<!--引入thymeleaf的依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

application.yml

###ThymeLeaf配置
spring:
  thymeleaf:
    #prefix:指定模板所在的目录
    prefix: classpath:/templates/
    #check-tempate-location: 检查模板路径是否存在
    check-template-location: true
    #cache: 是否缓存,开发模式下设置为false,避免改了模板还要重启服务器,线上设置为true,可以提高性能。
    cache: true
    suffix:  .html
    encoding: UTF-8
    mode: HTML5

渲染是控制器层做的事,所以新建个controller包,controller层负责页面的跳转,service层负责业务逻辑

要完成通过渲染来将对象的值扔到页面上,所以再建个实体类entity包。把启动类APP扔到benson包下
再在resources建个templates目录用来存放模板文件

ThymeleafController.java

package com.benson.controller;

import com.benson.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;

@Controller
public class ThymeleafController {
    @RequestMapping("/MyThymeleaf")
    public String MyThymeleaf(HttpServletRequest request){
        request.setAttribute("user",new User("benson",18));
        return "MyThymeleaf";
    }
}

User.java

package com.benson.entity;

 public class User {
    private String userName;
    private Integer age;

    public User(String userName, Integer age) {
        this.userName = userName;
        this.age = age;
    }

    public String getUserName() {
        return userName;
    }

    public Integer getAge() {
        return age;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

myThymeleaf.html

<!DOCTYPE html>
<!--需要在HTML文件中加入以下语句: -->
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Show User</title>
</head>
<body>
<table>
    姓名:<span th:text="${user.userName}"></span>
    年龄:<span th:text="${user.age}"></span>
</table>
</body>
</html>


原生的HttpServletRequest会导致idea在html会误报,可以把参数从对象扔到Map里

循环、判断语句


整合JdbcTemplate

建表

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(32) NOT NULL COMMENT '用户名称',
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

引入pom

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.21</version>
        </dependency>

配置yml

    datasource:
      url: jdbc:mysql://localhost:3306/test
      username: root
      password: 123456
      driver-class-name: com.mysql.jdbc.Driver

UserService.java

package com.benson.service;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserService {

    @Autowired
    private JdbcTemplate jdbcTemplate;//拿到jdbc的模板

    @RequestMapping("/insertUser")
    public String insertUser(String userName, Integer age) {
        int update = jdbcTemplate.update("insert into users values (null,?,?)", userName, age);
        /*null是因为直接insert into要写全所有字段,id自增所以null来表示
         * ?,?来防止sql注入*/
        return update > 0 ? "success" : "failed";
    }
}

注意!mysql驱动要改到8.0版本,不然识别不了密码

整合mybatis

标签:SpringBoot,age,springframework,org,import,public,benson
From: https://www.cnblogs.com/ben10044/p/17169310.html

相关文章

  • SpringBoot过滤器获取请求Body
    packagecom.example.springboot.core;importlombok.extern.slf4j.Slf4j;importorg.springframework.stereotype.Component;importjavax.servlet.http.HttpServle......
  • SpringBoot自定义拦截器和跨域配置冲突的问题
    跨域配置完成以后,又进行拦截器的配置,发现跨域配置失效,以下是原配置@ConfigurationpublicclassCORSConfigimplementsWebMvcConfigurer{@BeanpublicWebMv......
  • SpringBoot Actuator RCE 漏洞总结
    一、SpringBootenv获取*敏感信息 当我们直接访问springboot站点时,可以看到某些password字段填充了*通过${name}可以获取明文字段  2.配置不当导致敏感信息......
  • springboot 自动装配之@ConditionalOnClass,@ConditionalOnMissingClass
    @ConditionalOnClass表示如果有后面的类,那么就加载这个自动配置@ConditionalOnMissingClass如果没有后面的类,才自动配置这2个注解对实现自动配置很重要。@Configuration......
  • SpringBoot整合Spring Security
    1快速入门在项目中直接引入SpringSecurity的依赖<!--springSecurity--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-bo......
  • SpringBoot 访问html
    1、pom.xml文件配置<dependency><!--页面模板依赖--><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</a......
  • springboot+mybatis+redis+mysql项目搭建,含示例Demo
    转载自:https://blog.csdn.net/qq_40772342/article/details/105049322========== redis在web开发中使用的场景很多,其中缓存是其中一个很重要的使用场景,之所以用作缓存,......
  • springboot整合shiro
    1.什么是ShiroShiro是一个基于Java的安全框架,它提供了身份验证、授权、加密和会话管理等安全功能,可以帮助Java应用程序实现安全性。2.根据Shiro的基本使用了解其基本......
  • SpringBoot全局异常封装:AOP增强
    api请求错误返回json,页面请求错误跳转报错页面:自动装配、异常通知两个方法Java异常类错误无法避免,通常由于系统原因造成。如IOError,注意不是IOException,原因可能是......
  • springboot处理乱码问题原理
    我们在用spring-springmvc时,需要配置一个过滤器 CharacterEncodingFilterCharacterEncodingFilterfilter=newOrderedCharacterEncodingFilter();filter.setEncodin......