SpringBoot之Controller(B)详解编程语言

@RestController介绍

我们在Controller中使用 @RestController 注解,该注解是spring 4.0引入的。查看源码可知其包含了 @Controller 和 @ResponseBody 注解。 
我们可以理解为 @Controller的增强版。专门为响应内容式的 Controller 而设计的,可以直接响应对象为JSON。而 @Controller 用来响应页面 

@Controller实现

创建PageController

package cn.wuyang.springboot.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; 
 
@Controller 
@RequestMapping(value="/page") 
public class PageController { 
 
 
     // 从 application.properties 中读取配置,如取不到默认值为Hello Shanhy 
    @Value("${application.hello}") 
    private String hello = "Hello wuyang"; 
 
 
    /** 
     * 默认页<br/> 
     * @RequestMapping("/") 和 @RequestMapping 是有区别的 
     * 如果不写参数,则为全局默认页,加入输入404页面,也会自动访问到这个页面。 
     * 如果加了参数“/”,则只认为是根页面。 
     * 
     */ 
    @RequestMapping(value = {"/","/index"}) 
    public String index(Map<String, Object> model){ 
        // 直接返回字符串,框架默认会去 spring.view.prefix 目录下的 (index拼接spring.view.suffix)页面 
        // 本例为 /WEB-INF/jsp/index.jsp 
        System.out.println(this.hello); 
        model.put("time", new Date()); 
        model.put("message", this.hello); 
        return "index"; 
    } 
 
    /** 
     * 响应到JSP页面page1 
     * 
     */ 
    @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封装内容,直接返回页面字符串) 
     * 
     */ 
    @RequestMapping("/page2") 
    public String page2(Model model){ 
        // 页面位置 /WEB-INF/jsp/page/page.jsp 
        model.addAttribute("content", hello + "(第二种)"); 
        return "page/page1"; 
    } 
} 

pom.xml添加依赖

<!-- 1.添加 --> 
<dependency> 
    <groupId>org.apache.tomcat.embed</groupId> 
    <artifactId>tomcat-embed-jasper</artifactId> 
    <scope>provided</scope> 
</dependency> 
<!-- jstl --> 
<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>jstl</artifactId> 
</dependency>

添加src/main/resources/application.properties内容

# 页面默认前缀目录 
spring.mvc.view.prefix=/WEB-INF/jsp/ 
# 响应页面默认后缀 
spring.mvc.view.suffix=.jsp 
# 自定义属性,可以在Controller中读取 
application.hello=Hello application wuyang

在 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>

page/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服务
这里写图片描述

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/11265.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论