Spring Boot Controller
来源:互联网 发布:阿里云没有公网ip 编辑:程序博客网 时间:2024/05/27 00:42
来源:http://blog.csdn.net/catoop/article/details/50501676
接上篇文章,HelloWorld程序中我们已经创建了一个HellController,里面包含了响应JSON的方法,本文针对Controller再做一下讲解。回顾上篇文章,我们在Controller中使用 @RestController 注解,该注解是Spring 4.0引入的。查看源码可知其包含了 @Controller 和 @ResponseBody 注解。我们可以理解为 @Controller的增强版。专门为响应内容式的 Controller 而设计的,可以直接响应对象为JSON。 而 @Controller 用来响应页面,spring-boot 支持多种模版引擎包括: 1,FreeMarker 2,Groovy 3,Thymeleaf (Spring 官网使用这个) 4,Velocity 5,JSP (貌似Spring Boot官方不推荐,STS创建的项目会在src/main/resources 下有个templates 目录,这里就是让我们放模版文件的,然后并没有生成诸如 SpringMVC 中的webapp目录) 不过本文还是选择大家都熟悉的JSP来举例,因为使用JSP与默认支持的模版需要特殊处理,所以拿来举例更好。关于Controller 方法可以接收参数使用@RequestBody、@RequestParam、@ModelAttribute、JSONObject、HttpEntity 等方式,皆与Spring的使用一样,这里不做赘述。下面我们来说一下如何使用 @Controller 实现响应JSP页面(与SpringMVC也是一样使用)。 创建PageController,编码如下:package org.springboot.sample.controller;import java.util.Date;import java.util.Map;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;@Controllerpublic class PageController { // 从 application.properties 中读取配置,如取不到默认值为Hello Shanhy @Value("${application.hell:Hello Shanhy}") private String hello = "Hello Shanhy"; /** * 默认页<br/> * @RequestMapping("/") 和 @RequestMapping 是有区别的 * 如果不写参数,则为全局默认页,加入输入404页面,也会自动访问到这个页面。 * 如果加了参数“/”,则只认为是根页面。 * * @return * @author SHANHY * @create 2016年1月5日 */ @RequestMapping(value = {"/","/index"}) public String index(Map<String, Object> model){ // 直接返回字符串,框架默认会去 spring.view.prefix 目录下的 (index拼接spring.view.suffix)页面 // 本例为 /WEB-INF/jsp/index.jsp model.put("time", new Date()); model.put("message", this.hello); return "index"; } /** * 响应到JSP页面page1 * * @return * @author SHANHY * @create 2016年1月5日 */ @RequestMapping("/page1") public ModelAndView page1(){ // 页面位置 /WEB-INF/jsp/page/page.jsp ModelAndView mav = new ModelAndView("page/page1"); mav.addObject("content", hello); return mav; } /** * 响应到JSP页面page1(可以直接使用Model封装内容,直接返回页面字符串) * * @return * @author SHANHY * @create 2016年1月5日 */ @RequestMapping("/page2") public String page2(Model model){ // 页面位置 /WEB-INF/jsp/page/page.jsp model.addAttribute("content", hello + "(第二种)"); return "page/page1"; }}pom.xml添加依赖: <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency>上面说了spring-boot 不推荐JSP,想使用JSP需要配置application.properties。 添加src/main/resources/application.properties内容:# 页面默认前缀目录spring.mvc.view.prefix=/WEB-INF/jsp/# 响应页面默认后缀spring.mvc.view.suffix=.jsp# 自定义属性,可以在Controller中读取application.hello=Hello Shanhy在 src/main 下面创建 webapp/WEB-INF/jsp 目录用来存放我们的jsp页面。 index.jsp<%@ page language="java" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Spring Boot Sample</title></head><body> Time: ${time} <br> Message: ${message}</body></html>page1.jsp<%@ page language="java" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Spring Boot Sample</title></head><body> <h1>${content }</h1></body></html>要想让spring-boot支持JSP,需要将项目打成war包。 我们做最后一点修改,修改pom.xml文件,将 jar 中的 jar 修改为 war然后启动spring-boot服务。 访问页面查看结果: http://localhost:8080 http://localhost:8080/page1 http://localhost:8080/page2最后附上工程结构: 这里写图片描述如果需要使用 FreeMarker 的同学,请按下面的方法说明修改: 1、去掉 application.properties 中的 spring.mvc.view.prefix 和 spring.mvc.view.suffix 配置。 2、将 .ftl 模版页面放到 resources/templates 中(如上面工程截图所示) 其中 error.ftl 是系统默认的错误页,内容自定。 3、修改 pom.xml ,如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.springboot.sample</groupId> <artifactId>spring-boot-sample</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging><!-- <packaging>war</packaging> --> <name>spring-boot-sample</name> <description>Spring Boot Sample Web Application</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.1.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> </properties> <dependencies><!-- <dependency> --><!-- <groupId>org.springframework.boot</groupId> --><!-- <artifactId>spring-boot-starter-web</artifactId> --><!-- </dependency> --><!-- <dependency> --><!-- <groupId>org.springframework.boot</groupId> --><!-- <artifactId>spring-boot-starter-tomcat</artifactId> --><!-- </dependency> --><!-- <dependency> --><!-- <groupId>org.apache.tomcat.embed</groupId> --><!-- <artifactId>tomcat-embed-jasper</artifactId> --><!-- <scope>provided</scope> --><!-- </dependency> --><!-- <dependency> --><!-- <groupId>javax.servlet</groupId> --><!-- <artifactId>jstl</artifactId> --><!-- </dependency> --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project>
阅读全文
0 0
- Spring Boot Controller
- spring boot 之 controller
- Spring Boot Controller
- Spring Boot Controller
- Spring Boot Controller
- Spring Boot Controller
- Spring Boot Controller
- spring boot 学习之controller
- Spring Boot 的控制器--Controller
- Spring Boot Junit 测试Controller
- spring boot中controller注意事项
- Spring Boot 3---Controller使用案例
- Spring Boot-Controller控制器的使用
- spring boot 所有的Controller异常捕获
- Spring boot扫描不到controller注解
- 从入门到入门-Spring Boot-Controller
- spring boot 过滤请求并发送到controller
- Spring Boot -- Controller之Validate参数校验
- 语言发展史
- 我的第一个.exe文件
- php排序
- Request.Url
- spring boot实战(第十二篇)整合RabbitMQ
- Spring Boot Controller
- win版git的安装及获取源码踩过的坑(超清晰)
- javascript闭包详解
- Cortex-M3存储器系统
- wifi发射功率查看和设置
- 将WEX5打包的应用设置为开机自启动
- 翻转字符串
- Redis 三种启动设置 开机自启动
- 位置不可用无法访问文件或目录损坏且无法读取