Yur*_*yan 6 html spring spring-mvc spring-boot
显示我创建的 index.html 网页时出现问题。转到 localhost:8080 时,我一直收到的输出是字符串值“index”,而不是网页本身。可以在下面找到 /templates 目录的图像和从 localhost 给出的结果(超链接)
@Controller
public class IndexController {
@RequestMapping("/")
@ResponseBody
public String index() {
return "index";
}
}
Run Code Online (Sandbox Code Playgroud)
@ResponseBody从您的控制器方法 addNewBooking(...) 中删除。随着@ResponseBody你告诉Spring您的方法的结果映射到HTTP响应主体等浏览器中显示它为纯文本(你需要这个,如果你想开发RESTful API中使用Spring)。当您使用 Spring MVC 时,您想要返回一个视图,因此您不需要@ResponseBody.
编辑 1:对我所写内容的详细解释。
有了Spring Web你有两个选择来写你的应用程序:
JSPs, Thymeleaf templates, Freemaker templates->Spring MVC模式编写服务器端呈现的应用程序对于选项 1,您使用@Controller多个端点对控制器进行注释,并提供多个端点,您的 Spring 应用程序将在这些端点上使用您的服务器端渲染器模板进行响应。您的所有控制器都返回 a String,这是您要传输到浏览器的模板的名称。Spring 将采用String类似的名称index,并将返回例如呈现index.jsp给请求。一个示例可能如下所示:
@Controller
public class IndexController {
@RequestMapping("/")
public String index() {
return "index";
}
}
Run Code Online (Sandbox Code Playgroud)
对于选择 2,您使用@RestController OR您@Controller和@ResponseBody一起注释您的控制器(从技术上讲,@RestController它只是@Controller和 `@ResponseBody的组合)。通过这个设置,你告诉 Spring 使用你的控制器方法返回类型并解析它,例如用 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;
}
}
Run Code Online (Sandbox Code Playgroud)
人物类:
public class Person {
private String name;
private int age;
// getter and setter ...
}
Run Code Online (Sandbox Code Playgroud)
如果您现在访问,http://localhost:8080/persons您可以获得以下输出:
[
{
"name": "John Doe",
"age": 1337
},
{
"name": "Peter Parker",
"age": 12
}
]
Run Code Online (Sandbox Code Playgroud)
总结一下解释:如果您想提供视图(服务器端呈现的 HTML 页面),您必须使用@Controller并且您的控制器方法必须返回模板的名称。如果计划建立一个RESTful应用程序,使用@RestController或组合@Controller并@ResponseBody在一起。
就像其他人提到的那样,您需要做的第一件事是@ResponseBody从控制器方法中删除注释。
其次,模板目录中的静态内容应移动到
src/main/resources/static. 该templates目录用于提供需要在服务器端呈现的内容(例如 Thymeleaf)。
然后,您可以直接从控制器提供内容。
@Controller
public class IndexController {
@RequestMapping("/")
public String index() {
return "index.html";
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13365 次 |
| 最近记录: |