本文主要是介绍control 返回静态html 及 restcontroller与controller的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我们来对比下restController和controller的区别:
@RestController is a stereotype annotation that combines @ResponseBody and @Controller.
意思是:
@RestController注解相当于@ResponseBody + @Controller合在一起的作用。
1)如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。
例如:本来应该到success.html页面的,则其显示success.
2)如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
3)如果需要返回json或者xml或者自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解
spring boot直接返回静态html
通常spring boot的一般教程的例子都是通过模板来返回页面,比如thymeleaf或者freemarker,但是直接返回html的例子比较少。本文参考文章SpringBoot : How to display static html file in Spring boot MVC application。说明如何让spring boot直接返回html。
一般来说resources/static
或者resources/public
文件夹可以用来提供js
,css
,图片等文件访问。不经过配置,直接返回html
会报404错误。提供静态html访问主要需要如下配置(懒得翻译了。。。)
You should create a class that extends
WebMvcConfigurerAdapter
Your class should have
@Configuration
annotation.You class should not have
@EnableMvc
annotation.Override
addViewControllers
method and add your mapping.Override
configurePathMatch
method and update suffix path matching
其实,添加如下配置类就好了
@Configuration
public class MvcConfigurer extends WebMvcConfigurerAdapter { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/error").setViewName("error.html"); registry.setOrder(Ordered.HIGHEST_PRECEDENCE); }@Override public void configurePathMatch(PathMatchConfigurer configurer) { super.configurePathMatch(configurer); configurer.setUseSuffixPatternMatch(false); }
}
这篇关于control 返回静态html 及 restcontroller与controller的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!