欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring Boot的Controller控制層和頁(yè)面

 更新時(shí)間:2017年04月24日 13:56:17   投稿:mrr  
這篇文章主要介紹了Spring Boot的Controller控制層和頁(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)頁(yè)<br/>
   * @RequestMapping("/") 和 @RequestMapping 是有區(qū)別的
   * 如果不寫參數(shù),則為全局默認(rèn)頁(yè)。
   * 如果加了參數(shù)“/”,則只認(rèn)為是根頁(yè)面。
   */
  @RequestMapping(value = {"/","/index"})
  public String index(Map<String, Object> model){
    // 直接返回字符串,框架默認(rèn)會(huì)去 spring.view.prefix 目錄下的 (index拼接spring.view.suffix)頁(yè)面
    // 本例為 /WEB-INF/jsp/index.jsp
    model.put("time", new Date());
    model.put("message", this.hello);
    return "index";
  }
  /**
   * 響應(yīng)到JSP頁(yè)面page1
   */
  @RequestMapping("/page1")
  public ModelAndView page1(){
    // 頁(yè)面位置 /WEB-INF/jsp/page/page1.jsp
    //page/page1:頁(yè)面路徑地址/頁(yè)面名稱
    ModelAndView mav = new ModelAndView("page/page1");
    mav.addObject("content", hello);
    return mav;
  }
  /**
   * 響應(yīng)到JSP頁(yè)面page1(可以直接使用Model封裝內(nèi)容,直接返回頁(yè)面字符串)
   */
  @RequestMapping("/page2")
  public String page2(Model model){
    // 頁(yè)面位置 /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"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Spring Boot Sample</title>
</head>
<body>
Time: ${time}
<br>
Message: ${message}
</body>
</html>

4).page1.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Spring Boot Sample</title>
</head>
<body>
<h1>${content }</h1>: ${message}
</body>
</html>

5).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>com.example</groupId>
  <artifactId>Spring-boot-simple</artifactId>
  <version>0.0.1-SNAPSHOT</version>
<!--   <packaging>jar</packaging> -->
  <packaging>war</packaging>
  <name>Spring-boot-simple</name>
  <description>Demo project for Spring Boot</description>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.2.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <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-test</artifactId>
      <scope>test</scope>
    </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>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
</project>

3.運(yùn)行啟動(dòng)項(xiàng)目

訪問(wèn)web地址:http://localhost:8080/action/ ,如下所示:

二.代碼解析說(shuō)明

1.關(guān)于在Spring4.x中,@RestController和@Controller的區(qū)別

@RestController注解相當(dāng)于@ResponseBody + @Controller合在一起的作用。所以,以后定義controller的時(shí)候,可以直接使用@Controller,如果需要返回json可以直接在方法中添加@ResponseBody即可。

a).如果只是使用@RestController注解Controller,則Controller中的方法無(wú)法返回jsp頁(yè)面,配置的視圖解析器InternalResourceViewResolver則不起作用,返回的內(nèi)容就是Return 里的內(nèi)容(String/JSON)。

例如:本來(lái)應(yīng)該到success.jsp頁(yè)面的,則其顯示success.

public String test(HttpServletRequest request, HttpServletResponse response){
   return "success";
}

b).如果使用@RestController注解Controller,需要返回到指定頁(yè)面,則需要配置視圖解析器InternalResourceViewResolver,可以利用ModelAndView返回試圖。

@RequestMapping(value = "/test")
public String test(HttpServletRequest request, HttpServletResponse response){
   return newModelAndView("success");
}
c).如果使用@Controller注解Controller,如果需要返回JSON,XML或自定義mediaType內(nèi)容到頁(yè)面,則需要在對(duì)應(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)使用這個(gè))
d,Velocity
e,JSP (貌似Spring Boot官方不推薦,STS創(chuàng)建的項(xiàng)目會(huì)在src/main/resources 下有個(gè)templates 目錄,這里就是讓我們放模版文件的,然后并沒(méi)有生成諸如 SpringMVC 中的webapp目錄)

以上所述是小編給大家介紹的Spring Boot的Controller控制層和頁(yè)面,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 學(xué)習(xí)JVM之java內(nèi)存區(qū)域與異常

    學(xué)習(xí)JVM之java內(nèi)存區(qū)域與異常

    關(guān)于JVM內(nèi)存區(qū)域的知識(shí)對(duì)于初學(xué)者來(lái)說(shuō)其實(shí)是很重要的,了解Java內(nèi)存分配的原理,這對(duì)于以后JAVA的學(xué)習(xí)會(huì)有更深刻的理解。下面來(lái)看看詳細(xì)介紹。
    2016-07-07
  • Java 數(shù)組ArrayList常用語(yǔ)法詳解

    Java 數(shù)組ArrayList常用語(yǔ)法詳解

    這篇文章主要介紹了Java 數(shù)組ArrayList常用語(yǔ)法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Springboot文件上傳功能的實(shí)現(xiàn)

    Springboot文件上傳功能的實(shí)現(xiàn)

    這篇文章主要介紹了SpringBoot文件上傳功能的實(shí)現(xiàn),文中通過(guò)代碼示例介紹的非常詳細(xì),具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們可以參考閱讀
    2023-04-04
  • java最新版本連接mysql失敗的解決過(guò)程

    java最新版本連接mysql失敗的解決過(guò)程

    這篇文章主要給大家介紹了關(guān)于java最新版本連接mysql失敗的解決過(guò)程,文中通過(guò)圖文以及示例代碼將解決的過(guò)程介紹的非常詳細(xì),對(duì)遇到這個(gè)問(wèn)題的同學(xué)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-09-09
  • JavaSE基礎(chǔ)之反射機(jī)制(反射Class)詳解

    JavaSE基礎(chǔ)之反射機(jī)制(反射Class)詳解

    反射機(jī)制有什么用?通過(guò)java語(yǔ)言中的反射機(jī)制可以操作字節(jié)碼文件,可以讀和修改字節(jié)碼文件。所以本文將為大家講講反射機(jī)制的使用,需要的可以參考一下
    2022-09-09
  • 基于Mybatis plus 自動(dòng)代碼生成器的實(shí)現(xiàn)代碼

    基于Mybatis plus 自動(dòng)代碼生成器的實(shí)現(xiàn)代碼

    本文通過(guò)實(shí)例代碼給大家介紹了基于Mybatis-plus 自動(dòng)代碼生成器的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-05-05
  • 基于request獲取訪問(wèn)者真實(shí)IP代碼示例

    基于request獲取訪問(wèn)者真實(shí)IP代碼示例

    這篇文章主要介紹了基于request獲取訪問(wèn)者真實(shí)IP代碼示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Java使用Thumbnailator實(shí)現(xiàn)圖片處理功能

    Java使用Thumbnailator實(shí)現(xiàn)圖片處理功能

    Thumbnailator是一個(gè)簡(jiǎn)單且功能強(qiáng)大的Java庫(kù),用于生成縮略圖和執(zhí)行其他圖片處理任務(wù),在這篇博客中,我們將介紹如何使用Thumbnailator進(jìn)行圖片的縮放、裁剪、旋轉(zhuǎn)等操作,需要的朋友可以參考下
    2024-07-07
  • Java中基于DeferredResult的異步服務(wù)詳解

    Java中基于DeferredResult的異步服務(wù)詳解

    這篇文章主要介紹了Java中基于DeferredResult的異步服務(wù)詳解,DeferredResult字面意思是"延遲結(jié)果",它允許Spring MVC收到請(qǐng)求后,立即釋放(歸還)容器線程,以便容器可以接收更多的外部請(qǐng)求,提升吞吐量,需要的朋友可以參考下
    2023-12-12
  • Java鉤子方法概念原理詳解

    Java鉤子方法概念原理詳解

    這篇文章主要介紹了Java鉤子方法概念原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02

最新評(píng)論