| tags | ||
|---|---|---|
| projects |
|
本指南将帮助您了解创建带有Spring的“Hello World”网站的过程。
您将构建一个具有静态主页的应用程序,并且将接受HTTP GET请求:
http://localhost:8080/greeting
并用显示HTML的网页响应。HTML的正文包含问候语:
"Hello, World!"
可以在查询字符串中使用可选的“名称”参数定制问候语:
http://localhost:8080/greeting?name=User
“name”参数值重写默认值“World”,并反映在响应中:
"Hello, User!"
在Spring构建Web站点的方法中,HTTP请求由控制器处理。您可以很容易地通过 @Controller 注释来标识这些请求。 在接下来的例子中,GreetingControoler 为/greeting 处理 GET 请求,通过返回 View 的名字,在这个例子中就是“greeting”。`View`负责渲染HTML内容:
src/main/java/hello/GreetingController.java
link:complete/src/main/java/hello/GreetingController.java[role=include]这个控制器简洁明了,但是做了很多。让我们一步一步地分解它。
‘@RequestMapping’ 注解确保 /greeting 的HTTP请求映射到 greeting() 方法上。
|
Note
|
以上例子不指定 GET 和 PUT, POST 等等,因为 @RequestMapping 默认映射所有的HTTP操作。使用 @RequestMapping(method=GET) 缩小这种映射。
|
@RequestParam 绑定查询字符串中的参数到 greeting() 方法的 name 参数中。查询字符串参数并不是 required;如果它在请求中不存在,那么将使用 "World" 这个 defaultValue 。 name 参数的值被添加到一个 Model 对象上,最终使视图模板可以访问它。
方法的主体实现依赖于 视图技术执行服务器端的HTML渲染。在这个例子中是 Thymeleaf 。 Thymeleaf 自动解析 greeting.html 模板,在对 th:text 表达式求值的过程中将控制器中设置的 ${name} 的值渲染到模板中。
src/main/resources/templates/greeting.html
link:complete/src/main/resources/templates/greeting.html[role=include]开发Web应用程序的一个共同特点是编码更改,重新启动应用程序,并刷新浏览器以查看更改。整个过程可以消耗大量的时间。为了加快循环的步骤,春天的启动是一个方便的模块称为 spring-boot-devtools 。
-
启用 热部署
-
切换模板引擎以禁用缓存
-
使livereload自动刷新浏览器
-
基于进化而不是产品的其他合理默认值
虽然可以将此服务打包为一个传统的 WAR 文件用于部署到外部应用服务器,更为简单的方法是创建了一个独立的应用程序。通过一个 good old Java `main()`方法,你能将一切打包成为一个单一的克执行 JAR 文件。在这一过程中,您使用Spring的提供的 Tomcat servlet容器作为HTTP运行时,而不是将它部署的到一个外部实例在中。
src/main/java/hello/Application.java
link:complete/src/main/java/hello/Application.java[role=include]日志输出显示。应用程序应该在几秒钟内启动和运行。
现在网站运行,访问 http://localhost:8080/greeting,你会看到:
"Hello, World!"
通过 http://localhost:8080/greeting?name=User 提供一个查询字符串参数 name 。注意消息是如何从 "Hello, World!"变成"Hello, User!"的:
"Hello, User!"
这种变化表明, GreetingController 中的 @RequestParam 和预期的一样工作。name 被赋予了默认值 "World",但始终可以通过查询字符串显式重写。name parameter has been given a default value of "World", but can always be explicitly overridden through the query string.
静态资源,如HTML、JavaScript或CSS,可以很容易地从 Spring Boot应用程序中获得,只需将它们放入源代码中的正确位置即可。默认情况下,通过类路径下的"/static" (or "/public")的资源,Spring boot提供了静态内容。 index.html 资源比较特别,因为如果她存在的话,会被用作"welcome page",这以为着它是root资源,我们这个例子即是 `http://localhost:8080/。所以创建这个文件:
src/main/resources/static/index.html
link:complete/src/main/resources/static/index.html[role=include]当你重新启动应用程序你就会在http://localhost:8080/会看到HTML。
祝贺你!您刚刚使用Spring开发了一个Web页面。