spring boot return string instead of .html file
@Controller
VS @RestController
@Controller
is used to mark classes as Spring MVC Controller.@RestController
is a convenience annotation that does nothing more than adding the@Controller
and@ResponseBody
annotations.
So in your case just removing the @ResponseBody
annotation from the welcome()
method in HomeController.java, should be enough to get the desired output.
Also have a look at this Spring Guide displaying how to Serve Web Content with Spring MVC
When you use annotation @ResponseBody
, you actually tell spring to not try to find a view with the returned name. If you want the html, just remove the annotation from the controller method.
I had this same problem. There was no way to return an html just by returning a String with the name of the html file. For me, it only worked using ModelAndView, in your case it would look like this:
@RequestMapping("/")
public ModelAndView welcome() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("bakara");
return modelAndView;
}
Some people say that problems like this occurs because the jdk version. I use jdk14.
By Default Spring Boot Looks For your html templates in templates
folder static
folder is for your other files like css and js
.Try moving your html files in src/main/resources/templates
folder and remove @ResponseBody
from your controller method and remove this from your application properties spring.mvc.view.prefix=/static
. I hope it will work.