Springboot-Web开发一
目录
2.4、@MatrixVariable("xxx")矩阵变量
1.2、给类加上RestController或者给方法上加上@ResponseBody注解
1、SpringMVC自动配置
Spring Boot 自动配置好了SpringMVC
以下是SpringBoot对SpringMVC的默认配置:(WebMvcAutoConfiguration)
Inclusion of ContentNegotiatingViewResolver and BeanNameViewResolver beans.
自动配置了ViewResolver(视图解析器:根据方法的返回值得到视图对象(View),视图对象决定如何渲染(转发?重定向?))
ContentNegotiatingViewResolver:组合所有的视图解析器的;
如何定制:我们可以自己给容器中添加一个视图解析器;自动的将其组合进来;
Support for serving static resources, including support for WebJars (see below).静态资源文件夹路径,webjars
Static index.html support. 静态首页访问
Custom Favicon support (see below). favicon.ico
自动注册了 of Converter, GenericConverter, Formatter beans.
Converter:转换器; public String hello(User user):类型转换使用Converter
Formatter 格式化器; 2017.12.17===Date;
2、简单功能分析
2.1、静态资源访问
1、静态资源目录
只要静态资源放在类路径下: /static
(or /public
or /resources
or /META-INF/resources
访问 : 当前项目根路径/ 静态资源名
原理: 静态映射/**。
请求进来,先去找Controller看能不能处理。不能处理的所有请求又都交给静态资源处理器。静态资源也找不到则响应404页面。
修改静态资源默认路径:
spring:
mvc: static-path-pattern: /rk/**
访问 : 当前项目根路径/ rk/ 静态资源名
http://localhost:8080/rk/1.jpg
2.2、自定义首页
静态资源路径下 index.html
-
- 可以配置静态资源路径
- 但是不可以配置静态资源的访问前缀。否则导致 index.html不能被默认访问
-
-
spring:
-
# mvc:
-
# static-path-pattern: /res/** 这个会导致welcome page功能失效
-
2.3自定义 Favicon(网站图标)
favicon.ico放在静态资源目录下即可
2.4、静态资源配置原理
- pringBoot启动默认加载 xxxAutoConfiguration 类(自动配置类)
- SpringMVC功能的自动配置类 WebMvcAutoConfiguration,生效
@ConditionalOnMissingBean({xxx.class}):表示没有xxx.class该组件才会注入到容器中
3、请求参数处理
1、rest使用与原理
- @xxxMapping;
- Rest风格支持(使用HTTP请求方式动词来表示对资源的操作)
-
- 以前:/getUser 获取用户 /deleteUser 删除用户 /editUser 修改用户 /saveUser 保存用户
- 现在: /user GET-获取用户 DELETE-删除用户 PUT-修改用户 POST-保存用户
-
- 核心Filter;HiddenHttpMethodFilter
-
-
- 用法: 表单method=post,隐藏域 _method=put
- SpringBoot中手动开启
-
前端页面:
-
<body>
-
测试REST风格
-
<form action="/user" method="post">
-
<input value="REST-POST 提交" type="submit">
-
</form>
-
<form action="/user" method="get">
-
<input value="REST-GET 提交" type="submit">
-
</form>
-
<form action="/user" method="post">
-
<input name="_method" type="hidden" value="PUT">
-
<input value="REST-PUT 提交" type="submit">
-
</form>
-
<form action="/user" method="post">
-
<input name="_method" type="hidden" value="DELETE">
-
<input value="REST-DELETE 提交" type="submit">
-
</form>
-
</body>
后端controller:
-
public class restController {
-
-
public String getUser(){
-
return "GET-张三";
-
}
-
-
-
public String saveUser(){
-
return "POST-张三";
-
}
-
-
-
-
public String putUser(){
-
return "PUT-张三";
-
}
-
-
-
public String deleteUser(){
-
return "DELETE-张三";
-
}
-
}
2、请求参数
2. 1、@PathVariable("xxx")
可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariable(“xxx“)
@PathVariable Map<String,String>//获取所有URL中的参数
访问路径URL中的参数必须要和@PathVariable("xxx")中的参数名一样,否则获取不到值
2. 2、@RequestHeader("xxx")
获取请求头xxx的信息
@RequestHeader Map<String,String> 这个是获取所有请求头的信息
-
-
public class ParameterTest {
-
-
public Map<String,Object> getParam(
-
String header,//只获取User-Agent这一个
-
Map<String,String>header2//获取所有的请求头
-
){
-
Map<String,Object> map=new HashMap<>();
-
map.put("header",header);
-
map.put("header2",header2);
-
return map;
-
}
-
}
2. 3、@RequestParam("xxx")
获取表单中传递过来的参数就是URL中age=5&sex=男,这样的参数
@RequestParam Map<String,String> //获取表单中所有的参数
-
-
public class ParameterTest {
-
-
public Map<String,Object> getParam(
-
Map<String,String> parms,//获取所有URL中传递过来的参
-
Integer age,//获取表单中传递的参数
-
String sex
-
){
-
Map<String,Object> map=new HashMap<>();
-
map.put("parms",parms);
-
map.put("age",age);
-
map.put("sex",sex);
-
return map;
-
}
-
}
2. 4、@MatrixVariable("xxx")矩阵变量
矩阵变量,Springboot默认是禁用了矩阵变量功能,需要在手动开启
-
-
public class WebConfig implements WebMvcConfigurer {
-
//实现了WebMvcConfigurer接口,重写了ConfigurePathMatch方法
-
public void configurePathMatch(PathMatchConfigurer configurer) {
-
UrlPathHelper urlPathHelper=new UrlPathHelper();
-
//不移除;后面的内容 矩阵变量功能就可以生效
-
urlPathHelper.setRemoveSemicolonContent(false);
-
configurer.setUrlPathHelper(urlPathHelper);
-
}
-
}
使用:
-
///school/student;name=rk;age=20;hoby=study,playgame,listen"
-
//注意path是路变量
-
public Map student(
-
String name,
-
Integer age,
-
List<String> hoby){
-
Map<String,Object> map=new HashMap<>();
-
map.put("username",name);
-
map.put("userage",age);
-
map.put("userhoby",hoby);
-
return map;
-
}
4、响应数据与内容协商
1、响应JSON
1.1、引入jackson.jar
-
-
<dependency>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-starter-json</artifactId>
-
<version>2.3.4.RELEASE</version>
-
<scope>compile</scope>
-
</dependency>
1.2、给类加上RestController或者给方法上加上@ResponseBody注解
-
-
public class TestController {
-
-
-
public book test(){
-
book book1=new book();
-
book1.setId(1);
-
book1.setName("雪中悍刀行");
-
book1.setPrice(234);
-
return book1;
-
}
-
}
2、 响应xml
2.1、引入xml jar包
-
<dependency>
-
<groupId>com.fasterxml.jackson.dataformat</groupId>
-
<artifactId>jackson-dataformat-xml</artifactId>
-
</dependency>
2.2、使用postman测试返回json和xml
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgbicag
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13