SpringBoot常用知识点及22问

常用知识

web常用配置

**一些基础的配置项**
# 异步请求超时时间(单位为毫秒)
spring.mvc.async.request-timeout=5000

# 是否使用请求参数(默认参数为"format")来确定请求的媒体类型
spring.mvc.contentnegotiation.favor-parameter=false

# 是否使用URL中的路径扩展来确定请求的媒体类型
spring.mvc.contentnegotiation.favor-path-extension=false

# 设置内容协商向媒体类型映射文件扩展名。例如,YML/YAML
spring.mvc.contentnegotiation.media-types.*=

# 当启用favor-parameter参数是,自定义参数名
spring.mvc.contentnegotiation.parameter-name=

# 日期格式配置,如 yyyy-MM-dd
spring.mvc.date-format=yyyy-MM-dd HH:mm:ss

# 是否让frameworkServlet doService方法支持TRACE请求
spring.mvc.dispatch-trace-request=false

# 是否启用 FrameworkServlet doService 方法支持OPTIONS请求
spring.mvc.dispatch-options-request=true

# 如果配置为false,那么它将忽略模型重定向的场景
spring.mvc.ignore-default-model-on-redirect=true

# 默认国际化选项,默认取 Accept-Language
spring.mvc.locale=Accept-Language

# 国际化解析器,如果需要固定可以使用fixed
spring.mvc.locale-resolver=accept_header

# 是否启用警告日志异常解决
spring.mvc.log-resolved-exception=false

# 启用Spring Web服务Servlet的优先顺序配置
spring.mvc.servlet.load-on-startup=-1

# 指定静态资源路径
spring.mvc.static-path-pattern=/**

# 如果请求找不到处理器,是否抛出NoHandlerFoundException异常
spring.mvc.throw-exception-if-no-handler-found=false

spring.mvc.view.prefix=/WEB-INF/pages/
spring.mvc.view.suffix=.jsp

# 设置国际化消息是否总是采用格式化,默认是false
spring.message.always-use-message-format=false

# 设置国际化属性名称,如果多个可以使用逗号分隔,默认为messages
spring.message.basename=message

# 设置国际化消息缓存超时秒数,默认为永久不过期,如果0表示每次都重新加载
spring.message.cache-duration=60

spring.message.encoding=UTF-8

数据校验

JSR-303验证主要是通过注解的方式进行的。在要使用的地方加上@Valid来启用验证机制


```java
// 非空判断,message是提示信息
@NotNull(message="id不能为空")

// 只能是将来日期
@Future(message="需要一个将来日期")

// 日期格式化转换
@DateTimeFormat(pattern="yyyy-MM-dd")

// 浮点数最小值
@DecimalMin(value="0.0")

// 浮点数最大值
@DecimalMax(value="100000.00")

// 整数的最小值
@Min(value= 1,message="最小值")

// 整数的最大值
@Max(value=88,message="最大值")

// 限定范围整形
@Range(min = 1,max=888,message="范围在1-888")

// 邮箱验证
@Email(message="邮件格式错误")

// 字符串长度要达到20到30之间
@Size(min=20,max=30)

静态资源扫描优先级

(1) webjars 访问路径:localhost:8080/webjars/ 很少使用这个

(2) resources、static(默认创建)、public 访问路径:localhost:8080/

Spring Boot 配置文件扫描优先级

优先级
1:当前项目下的 config文件夹中的配置文件 优先级
2:当前项目路径的根目录的配置文件 优先级
3:resource资源文件下的 config 文件夹中的配置文件 优先级
4:resource资源路径下的配置文件(默认创建的配置文件)

spring常用数据源及其mybatis

1.使用springboot自带的hikari数据源
2.使用阿里巴巴的德鲁伊数据源优势是有监控等
以下是使用这数据源对数据进行操作

@RestController
public class Datesource1 {
    //使用springBoot写好的模板Bean来用 里面包含了DataSource
    @Autowired
    JdbcTemplate jdbcTemplate;

    @RequestMapping("/query")
    //没有实体类数据库中的东西怎么获取 通过map
    public List<Map<String,Object>> data() throws SQLException {
        String sql="select * from user ";
        return jdbcTemplate.queryForList(sql);
    }

    @RequestMapping("/addUser/{id}/{username}")
    public String addUser(@PathVariable int id,@PathVariable String username){
        String sql="insert into user(id,username) values(?,?)";
        //问号传参两种方式 直接往jdbcTemplate中写,或者放入Object集合中
        Object[] object = new Object[2];
        object[0]=id;
        object[1]=username;
        jdbcTemplate.update(sql,object);
        return "添加成功";
    }

}

设置德鲁伊的监控功能

@Configuration
public class Datesource2 {

    //将这里与配置文件中的配置连接起来
    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DataSource druidDataSource(){
        return new DruidDataSource();
    }

    //后台监控
    @Bean
    public ServletRegistrationBean statViewServlet(){
        ServletRegistrationBean<Servlet> bean = new ServletRegistrationBean<>(new StatViewServlet(),"/druid/*");

        //配置后台登录的账号密码
        HashMap<String, String> initParameters = new HashMap<>();
        initParameters.put("loginUsername","root");
        initParameters.put("loginPassword","254438");
        //设置谁可以访问
        initParameters.put("allow","");
        //禁止谁可以访问
//        initParameters.put("","ip");

        bean.setInitParameters(initParameters);
        return  bean;
    }

    //过滤器
    @Bean
    public FilterRegistrationBean filterRegistrationBean(){
        FilterRegistrationBean<Filter> filter = new FilterRegistrationBean<>();
        filter.setFilter(new WebStatFilter());

        //可以过滤那些请求
        HashMap<String, String> initParameters = new HashMap<>();
        //这些东西不进行统计
        initParameters.put("exclusions","*.js,*.css,/druid/*");
        filter.setInitParameters(initParameters);

        return filter;
    }
}

mybatis
1.因此要在pojo中使用@mapper注解
2.建立mapper.xml对对应的mapper接口进行注册
3.将mapper.xml放入配置文件

关于Springboot的22个问题

springFactory 中的xxxConfiguration 与properties是boot为我们配置好的方法 我们可以直接使用
要想改变其中的参数 在我们的application中添加我们想要的即可

github

问题1 如何在进入网站时,就是登录页面

在controller中设置这样的映射器
@RequestMapping(value = {"/",“login.html”})
—或者在WebMvcConfigurer中设置 与上同理 简单跳转建议使用这种

问题2

如何放静态资源(js css)通过**
—所有页面的静态资源都需使用thymeleaf 记得在页面中引入他
—如使用了过滤器拦截所有请求 记得放静态资源通过

问题3无法解决 国际化如何解决

问题4登录拦截器

一个方法继承HandlerInterceptor 然后放到WebMvcConfigurer的addInterceptors下

问题5如何restful传值 form如何restful传值

---关于restful风格传参
---th:href=@{/emp/{id}(id=${emp.getId()})}
---th:href=@{/emp/{id}/(id=${emp.getId()})}

th:href=@{/emp/+${emp.getId()}}

问题6拦截器中的 /** /*区别

/** 包括路径及其子路径 /*只包括下一个路径

问题7 themeleaf提取模板

在想要提取的代码下使用fragment组件化 然后可以通过th:replace"路径名::组件名"在其他页面中使用

问题8 templates包下的其他包命该怎么取

随便 可以建一个公共的包叫commons

问题9 后端传递的数据是一个集合 需要遍历后放到model中吗

可以不用 直接把集合传给前端 在前端遍历输出

问题10 通过重定向后还可以读出model中的数据吗

不可以

问题11如何在前端处理时间 如何设置后端接收格式

前端使用th:${#dates.format(时间,格式)} 后端使用 spring.mvc.format.date=yyyy-MM-dd 设置

问题12如何让表单变得好看些

可以使用这个类修饰 class=“table table-striped table-sm”

问题13如何通过button去跳转网页 不用js

若不用js 可以用a伪装成一个button <a class="btn btn-sm btn-primary">按钮

问题14 在使用超链接时 / 和没有/ 路径的区别是

: /是从根目录下查找 没有/是从当前目录下加上链接地址进行查找

问题15 没解决如何使 处于哪个导航栏 就让那个导航栏变色

问题16 thymeleaf 中便利时 子元素是一个标签如何遍历

再要遍历多次的这个标签上使用th:each

问题17 在表单中使用value赋值 然后在表单中修改后 value的值会变吗

问题18如何让链接再服务器之间跳转

显式使用forward: 请求转发 不会走视图解析器

问题19如何设置一个错误页面

你把404.html直接放到error包下 会自动识别

问题20Spring Boot的参数配置优先级

  1. 命令行参数
  2. 来自java:comp/env的JNDI属性
  3. Java系统属性(System.getProperties())
  4. 操作系统环境变量
  5. Randowm ValuePropertySource配置的 random.*属性值
  6. jar包外部的application-{profile}.properties或application.yaml 带(spring.profile)配置文件
  7. jar包内部的application-{profile}.properties或application.yaml 带(spring.profile)配置文件
  8. jar包外部的application-{profile}.properties或application.yaml 不带(spring.profile)配置文件
  9. jar包内部的application-{profile}.properties或application.yaml 不带(spring.profile)配置文件

问题21在配置文件中修改mvc视图解析器

spring:
  mvc:
    view: 
      prefix: /MATE-INF/pages/
      suffix: .jsp 

问题22 application.proprtties和application.yaml设置一样的配置谁优先级高

application.proprtties高

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Boot 是一个基于 Spring 框架的开发框架,旨在简化 Java 应用程序的开发过程。它提供了自动配置、约定优于配置和快速启动等特性,使得开发者能够更快地搭建和部署应用程序。 以下是 Spring Boot 的一些详细知识点: 1. 自动配置(Auto-configuration):Spring Boot 通过使用自动配置来减少开发者的配置工作量。它根据 classpath 下的依赖来推断和配置应用程序的各种组件,如数据库连接、消息队列、Web 服务器等。 2. 约定优于配置(Convention over Configuration):Spring Boot 遵循约定大于配置的原则,通过默认的约定和命名规则来减少配置。开发者只需按照规定的方式组织代码和资源文件,Spring Boot 就能自动完成相关的配置。 3. 快速启动(Quick Start):Spring Boot 提供了一个快速启动的机制,只需编写一个主类,添加相应的注解和依赖,即可快速创建一个可执行的 Spring Boot 应用程序。 4. 内嵌容器(Embedded Container):Spring Boot 可以将应用程序打包为可执行的 JAR 文件,并且内置了常用的 Servlet 容器(如Tomcat、Jetty等),使得应用程序可以直接通过命令行或脚本启动,而无需外部容器。 5. 配置管理(Configuration Management):Spring Boot 提供了多种配置方式,包括 properties 文件、YAML 文件、环境变量、命令行参数等,方便开发者对应用程序的配置进行管理和切换。 6. Spring Boot Starter:Spring Boot Starter 是一组预定义的依赖关系,用于快速集成常见的技术栈(如数据库、消息队列、安全认证等),开发者只需添加相应的 Starter 依赖,即可获得相关的功能。 7. Actuator:Spring Boot Actuator 是 Spring Boot 的一个模块,提供了对应用程序的监控和管理功能,包括健康检查、性能指标、运行时信息等。 8. Spring Boot CLI:Spring Boot CLI 是一个命令行工具,可以快速创建和运行 Spring Boot 应用程序,方便开发者进行快速原型开发和测试。 除了上述知识点,Spring Boot 还提供了很多其他功能和特性,如集成测试、日志管理、安全认证等。学习 Spring Boot 可以帮助开发者提高开发效率,简化应用程序的配置和部署过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值