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.