显示我创建的index.html网页时遇到问题。转到localhost:8080时,我一直收到的输出是字符串值“index”,而不是网页本身。/templates目录的图像和本地主机提供的结果可以在下面找到(超链接)

@Controller
public class IndexController {

        @RequestMapping("/")
        @ResponseBody
        public String index() {
            return "index";
        }
}

template_directory
localhost:8080_result

最佳答案

从 Controller 方法addNewBooking(...)中删除@ResponseBody。使用@ResponseBody,您告诉Spring将方法的结果映射到HTTP响应主体,以便浏览器将其显示为纯文本(如果要使用Spring开发RESTful API,则需要此文本)。在使用Spring MVC时,您想返回一个 View ,因此不需要@ResponseBody

编辑1:对我写的内容的详细说明。

使用Spring Web,您可以选择两种方式来编写应用:

  • 使用JSPsThymeleaf templatesFreemaker templates-> Spring MVC模式
  • 编写服务器端呈现的应用程序
  • 例如编写RESTful后端一个单页应用程序(如ReactJs或Angular),该应用程序从RESTful后端
  • 获取其数据

    对于选择1,您可以使用@Controller注释 Controller ,并提供几个端点,您的Spring应用程序将使用这些端点响应服务器端渲染器模板。您的所有 Controller 都返回一个String,它是您要传输到浏览器的模板的名称。 Spring将使用String之类的index名称,并返回例如呈现给请求的index.jsp。一个示例可能如下所示:
    @Controller
    public class IndexController {
    
            @RequestMapping("/")
            public String index() {
                return "index";
            }
    }
    

    对于选择2,您可以使用@RestController 注释您的 Controller ,同时将@Controller@ResponseBody注释在一起(从技术上来说@RestController只是@Controller和`@ResponseBody的组合)。通过这种设置,您告诉Spring使用 Controller 方法的返回类型并对其进行解析,例如用Jackson转换为JSON,并将其放入HTTP正文中。如果您在浏览器中访问此类端点,则会得到
    对象的JSON表示形式。看下面的例子:
    @RestController
    public class IndexController {
    
            @RequestMapping("/persons")
            public List<Person> getPersons() {
                // ... some service calls/database access to get all persons
                return personList;
            }
    }
    

    人员类:
    public class Person {
       private String name;
       private int age;
    
       // getter and setter ...
    
    }
    

    如果现在访问http://localhost:8080/persons,您将获得以下输出:
    [
      {
        "name": "John Doe",
        "age": 1337
      },
      {
        "name": "Peter Parker",
        "age": 12
      }
    ]
    

    总结一下解释:如果要提供Views(服务器端渲染的HTML页面),则必须使用@Controller,并且您的 Controller 方法必须返回模板的名称。如果计划构建RESTful应用程序,请同时使用@RestController@Controller@ResponseBody的组合。

    关于html - 使用@Controller显示index.html页面| Spring 靴,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48575559/

    10-11 22:28
    查看更多