SpringBoot相关配置
8.1 配置
- Spring MVC的配置是通过继承
WebMvcConfigurerAdapter类并重载其方法实现的; - 前几个教程已做了得配置包括
- 01点睛Spring MVC 4.1-搭建环境 配置viewResolver
- 03点睛Spring MVC 4.1-REST 静态资源映射
- 04点睛Spring MVC 4.1-拦截器 配置拦截器
- 06点睛Spring MVC 4.1-文件上传 配置multipartResolver
- 07点睛Spring MVC4.1-ContentNegotiatingViewResolver 配置ContentNegotiatingViewResolver
8.2 演示
8.2.1 配置路径匹配参数
在Spring MVC中路径参数如果带
.的话,.后面的值将被忽略,本例演示配置configurePathMatch不忽略点后面的参数;演示控制器
@RequestMapping("/configPath/{test}")
public @ResponseBody String configPath(@PathVariable String test){
return "request value:"+test;
}
- 运行:访问http://localhost:8080/testSpringMVC/configPath/xx.yy

- 在继承
WebMvcConfigurerAdapter的DemoMVCConfig类中重载configurePathMatch
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
configurer.setUseSuffixPatternMatch(false);
}
- 再次运行:访问访问http://localhost:8080/testSpringMVC/configPath/xx.yy

8.2.2 快捷定义ViewController
- 我们经常涉及到页面转向,但没任何处理业务的时候,快捷的页面转向定义会节省好多代码;
- 在views目录下建一个任意的
test.jsp - 常规的方案是这样写的
@RequestMapping("/mytest")
public String test(){
return "test";
}
- 在继承
WebMvcConfigurerAdapter的DemoMVCConfig类中重载addViewControllers
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/mytest").setViewName("/test");
//添加更多
}
- 以上效果等同,均会指向views下的test.jsp
8.2.3 配置HttpMessageConverter
HttpMessageConverter是对http的request和response进行自动转换配置
HttpMessageConverter可重载下面两个方法任意一个configureMessageConverters:重载会覆盖掉spring mvc默认注册的多个HttpMessageConverterextendMessageConverters:仅添加一个自定义的HttpMessageConverter,不覆盖默认注册的HttpMessageConverter
通过对上面的讲述,我们一般是重载
extendMessageConverters方法;下面我们演示使用js向spring mvc发送自定义格式的字符串(属性用-隔开),通过自定义的
HttpMessageConverter自动转换成对象,然后通过HttpMessageConverter输出指定格式到浏览器测试javabean
- Person
package com.wisely.domain;
public class Person {
private String firstName;
private String lastName;
public Person(String firstName, String lastName) {
super();
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
- 自定义
HttpMessageConverter:WiselyMessageConverter
package com.wisely.converters; import java.io.IOException;
import java.nio.charset.Charset; import org.springframework.http.HttpInputMessage;
import org.springframework.http.HttpOutputMessage;
import org.springframework.http.MediaType;
import org.springframework.http.converter.AbstractHttpMessageConverter;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.http.converter.HttpMessageNotWritableException;
import org.springframework.util.StreamUtils; import com.wisely.domain.Person; public class WiselyMessageConverter extends AbstractHttpMessageConverter<Person> { //自定义媒体类型
public WiselyMessageConverter(){
super(new MediaType("application", "x-wisely", Charset.forName("UTF-8")));
}
//从request里获得构造Person实例的数据
@Override
protected Person readInternal(Class<? extends Person> clazz,
HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {
String temp = StreamUtils.copyToString(inputMessage.getBody(), Charset.forName("UTF-8"));
String[] tempArr = temp.split("-");
return new Person(tempArr[0],tempArr[1]);
} //只支持Person类
@Override
protected boolean supports(Class<?> clazz) {
return Person.class.isAssignableFrom(clazz);
} //将person实例转换成你想要的字符串格式
@Override
protected void writeInternal(Person person, HttpOutputMessage outputMessage)
throws IOException, HttpMessageNotWritableException {
String out = "hello:" +person.getFirstName() + "-" + person.getLastName();
outputMessage.getBody().write(out.getBytes());
} }
- 配置
WiselyMessageConverter
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
WiselyMessageConverter converter = new WiselyMessageConverter();
converters.add(converter);
}
注释掉上例的configureContentNegotiation,这里会自动将媒体类型变为text/html
// 配置ContentNegotiationManager,在无后缀名情况下默认为jsp view resolver
// @Override
// public void configureContentNegotiation(
// ContentNegotiationConfigurer configurer) {
// //忽略请求的header信息,并将contentType置为text/html
// configurer.ignoreAcceptHeader(true).defaultContentType(
// MediaType.TEXT_HTML);
// }
- 测试控制器
@RequestMapping(value = "/convert", produces = { "application/x-wisely" })
public @ResponseBody Person convert(@RequestBody Person person) {
return person;
}
- 测试页面:test.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<div id="resp"></div><input type="button" onclick="req();" value="请求"/>
<script src="js/jquery.js" type="text/javascript"></script>
<script>
function req(){
$.ajax({
url: "convert",
data: "wang-yunfei",//注意此处的格式
type:"POST",
contentType:"application/x-wisely",
success: function(data){
$("#resp").html(data);
}
});
} </script>
</body>
</html>
- 运行效果


SpringBoot相关配置的更多相关文章
- 【持续更新】springboot相关配置
@Configuration public class MyWebMvcConfig implements WebMvcConfigurer { //注册了新的访问路径 @Override publi ...
- springboot配置server相关配置&整合模板引擎Freemarker、thymeleaf&thymeleaf基本用法&thymeleaf 获取项目路径 contextPath 与取session中信息
1.Springboot配置server相关配置(包括默认tomcat的相关配置) 下面的配置也都是模板,需要的时候在application.properties配置即可 ############## ...
- SpringBoot数据源相关配置
数据源配置 单数据源 配置步骤 引入依赖:H2数据库驱动.JDBC依赖.acturator(运维).web模块(用于测试).lambok(使用@Slf4j打印日志). 直接配置所需的Bean,注入容器 ...
- SpringBoot cache-control 配置静态资源缓存 (以及其中的思考经历)
昨天在部署项目时遇到一个问题,因为服务要部署到外网使用,中间经过了较多的网络传输限制,而且要加载arcgis等较大的文件,所以在部署后,发现页面loading需要很长时间,而且刷新也要重新从服务器下载 ...
- 补习系列(10)-springboot 之配置读取
目录 简介 一.配置样例 二.如何注入配置 1. 缺省配置文件 2. 使用注解 3. 启动参数 还有.. 三.如何读取配置 @Value 注解 Environment 接口 @Configuratio ...
- SpringBoot自动配置源码调试
之前对SpringBoot的自动配置原理进行了较为详细的介绍(https://www.cnblogs.com/stm32stm32/p/10560933.html),接下来就对自动配置进行源码调试,探 ...
- SpringBoot自定义属性配置以及@ConfigurationProperties注解与@Value注解区别
我们可以在application.properties中配置自定义的属性值,为了获取这些值,我们可以使用spring提供的@value注解,还可以使用springboot提供的@Configurati ...
- springboot日志配置
默认情况下,spring boot使用的是LogBack日志系统.在spring-boot-starter-web和spring-boot-starter中都已经默认依赖了logging的工具包. 如 ...
- SpringBoot 核心配置
1. 入口类和 @SpringBootApplication Spring Boot的项目一般都会有*Application的入口类,入口类中会有main方法,这是一个标准的Java应用程序的入口方法 ...
随机推荐
- Spring Boot 2 实践记录之 Powermock 和 SpringBootTest
由于要代码中使用了 Date 类生成实时时间,单元测试中需要 Mock Date 的构造方法,以预设其行为,这就要使用到 PowerMock 在 Spring Boot 的测试套件中,需要添加 @Ru ...
- 在AbpZero中hangfire后台作业的使用——开启hangfire
AbpZero框架已经集成了hangfire,但它默认是关闭的,我们可以在运行站点下的Startup.cs文件中把这行代码注释取消就行了,代码如下: //Hangfire (Enable to ...
- jquery.cookie.js 删除cookie
简单交代一下背景:asp.net页面的上的切换登录按钮的点击事件实现cookie的删除. 但是好像没办法直接删除,通过网上提供的方法,可以使用jquery.cookie.js 来操作cookie的创建 ...
- 如何使用socket进行java网络编程(四)
在上一篇的结尾,提到过用来处理每一个服务端accept到的socket,我们由原来最开始的单线程改成了多线程去处理,但是对每一个接收到的socket都new一个thread去处理,这样效率太低,我们需 ...
- 【OCP 062新题】OCP题库更新出现大量新题-9
9.You ran this command on a source database: $> expdp hr/hr DIRECTORY=dumpdir DUMPFILE=empl.dmp V ...
- js代码上的优化
例1 if ( config.url === '/web/teacher/classes' || config.url === '/web/teacher/students || config.u ...
- 当需要给<span>标签设宽度
span{ display: inline-block; width: 100px; } 当需要实现横排单行文字,用到span并且想设宽度的时候, 用以上css来实现.
- jQuery核心函数的四种不同用法
核心函数根据实参的不同,有四种不同的用法. ①传一个函数作为参数 例如:$(function(){}) 作用:和window.onload = function(){}类似,它会在文档加载完成之后运行 ...
- klee的docker镜像中没有gcc环境
sudo apt-get update 密码 klee sudo apt-get install gcc export LD_LIBRARY_PATH=/home/klee/lib/:$LD_LIBR ...
- 安装vue后报错 bash: vue: command not found
今天参照之前写的vue的环境搭建一个新的项目 http://www.cnblogs.com/stella1024/p/7570884.html 安装完vue,并提示成功: $ npm install ...