本篇文章給大家分享的是有關(guān)在Spring Boot中使用Controller實(shí)現(xiàn)控制頁面,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
成都創(chuàng)新互聯(lián)主營松嶺網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶App定制開發(fā),松嶺h5重慶小程序開發(fā)搭建,松嶺網(wǎng)站營銷推廣歡迎松嶺等地區(qū)企業(yè)咨詢
一.項(xiàng)目實(shí)例
1.項(xiàng)目結(jié)構(gòu)
2.項(xiàng)目代碼
1).ActionController.Java:
package com.example.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("/action") public class ActionController { // 從 application.properties 中讀取配置,如取不到application.properties定義的值,則取默認(rèn)值為Hello Shanhy @Value("${application.hello:Hello Shanhy}") private String hello; /** * 默認(rèn)頁
* @RequestMapping("/") 和 @RequestMapping 是有區(qū)別的 * 如果不寫參數(shù),則為全局默認(rèn)頁。 * 如果加了參數(shù)“/”,則只認(rèn)為是根頁面。 */ @RequestMapping(value = {"/","/index"}) public String index(Mapmodel){ // 直接返回字符串,框架默認(rèn)會去 spring.view.prefix 目錄下的 (index拼接spring.view.suffix)頁面 // 本例為 /WEB-INF/jsp/index.jsp model.put("time", new Date()); model.put("message", this.hello); return "index"; } /** * 響應(yīng)到JSP頁面page1 */ @RequestMapping("/page1") public ModelAndView page1(){ // 頁面位置 /WEB-INF/jsp/page/page1.jsp //page/page1:頁面路徑地址/頁面名稱 ModelAndView mav = new ModelAndView("page/page1"); mav.addObject("content", hello); return mav; } /** * 響應(yīng)到JSP頁面page1(可以直接使用Model封裝內(nèi)容,直接返回頁面字符串) */ @RequestMapping("/page2") public String page2(Model model){ // 頁面位置 /WEB-INF/jsp/page/page1.jsp model.addAttribute("content", hello + "(第二種)"); return "page/page1"; } }
2).application.properties:
spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mvc.view.suffix=.jsp application.hello=Hello TOM
3).index.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>Spring Boot Sample Time: ${time}
Message: ${message}
4).page1.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>Spring Boot Sample ${content }
: ${message}
5).pom.xml:
<?xml version="1.0" encoding="UTF-8"?>4.0.0 com.example Spring-boot-simple 0.0.1-SNAPSHOT war Spring-boot-simple Demo project for Spring Boot org.springframework.boot spring-boot-starter-parent 1.5.2.RELEASE UTF-8 UTF-8 1.8 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.apache.tomcat.embed tomcat-embed-jasper provided javax.servlet jstl org.springframework.boot spring-boot-maven-plugin
3.運(yùn)行啟動項(xiàng)目
訪問web地址:http://localhost:8080/action/ ,如下所示:
二.代碼解析說明
1.關(guān)于在Spring4.x中,@RestController和@Controller的區(qū)別
@RestController注解相當(dāng)于@ResponseBody + @Controller合在一起的作用。所以,以后定義controller的時候,可以直接使用@Controller,如果需要返回json可以直接在方法中添加@ResponseBody即可。
a).如果只是使用@RestController注解Controller,則Controller中的方法無法返回jsp頁面,配置的視圖解析器InternalResourceViewResolver則不起作用,返回的內(nèi)容就是Return 里的內(nèi)容(String/JSON)。
例如:本來應(yīng)該到success.jsp頁面的,則其顯示success.
public String test(HttpServletRequest request, HttpServletResponse response){ return "success"; }
b).如果使用@RestController注解Controller,需要返回到指定頁面,則需要配置視圖解析器InternalResourceViewResolver,可以利用ModelAndView返回試圖。
@RequestMapping(value = "/test") public String test(HttpServletRequest request, HttpServletResponse response){ return newModelAndView("success"); } c).如果使用@Controller注解Controller,如果需要返回JSON,XML或自定義mediaType內(nèi)容到頁面,則需要在對應(yīng)的方法上加上@ResponseBody注解。 @ResponseBody @RequestMapping(value = "/test") public String test(HttpServletRequest request, HttpServletResponse response){ return "success"; }
2.spring-boot 支持多種模版引擎包括:
a,F(xiàn)reeMarker
b,Groovy
c,Thymeleaf (Spring 官網(wǎng)使用這個)
d,Velocity
e,JSP (貌似Spring Boot官方不推薦,STS創(chuàng)建的項(xiàng)目會在src/main/resources 下有個templates 目錄,這里就是讓我們放模版文件的,然后并沒有生成諸如 SpringMVC 中的webapp目錄)
以上就是在Spring Boot中使用Controller實(shí)現(xiàn)控制頁面,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。