Spring Boot的Controller控制层和页面

网友投稿 307 2023-05-21


Spring Boot的Controller控制层和页面

一.项目实例

1.项目结构

2.项目代码

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定义的值,则取默认值为Hello Shanhy

@Value("${application.hello:Hello Shanhy}")

private String hello;

/**

* 默认页

* @RequestMapping("/") 和 @RequestMapping 是有区别的

* 如果不写参数,则为全局默认页。

* 如果加了参数“/”,则只认为是根页面。

*/

@RequestMapping(value = {"/","/index"})

public String index(Map 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

*/

@RequestMapping("/page1")

public ModelAndView page1(){

// 页面位置 /WEB-INF/jsp/page/page1.jsp

//page/page1:页面路径地址/页面名称

YgeFCiEgBM 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/page1.jsp

model.addAttribute("content", hello + "(第二种)");

return "page/page1";

}

}

2).ahttp://pplication.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"%>

Time: ${time}


Message: ${message}

4).page1.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

5).pom.xml:

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.example

Spring-boot-simple

0.0.1-SNAPSHOT

war

Spring-boot-simple

Demo project for Spring Boot

<parent>

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

YgeFCiEgBM jstl

org.springframework.boot

spring-boot-maven-plugin

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.example

Spring-boot-simple

0.0.1-SNAPSHOT

war

Spring-boot-simple

Demo project for Spring Boot

<parent>

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

YgeFCiEgBM jstl

org.springframework.boot

spring-boot-maven-plugin

3.运行启动项目

访问web地址:http://localhost:8080/action/ ,如下所示:

二.代码解析说明

1.关于在Spring4.x中,@RestController和@Controller的区别

@RestController注解相当于@ResponseBody + @Controller合在一起的作用。所以,以后定义controller的时候,可以直接使用@Controller,如果需要返回json可以直接在方法中添加@ResponseBody即可。

a).如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver则不起作用,返回的内容就是Return 里的内容(String/JSON)。

例如:本来应该到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内容到页面,则需要在对应的方法上加上@ResponseBody注解。

@ResponseBody

@RequestMapping(value = "/test")

public String test(HttpServletRequest request, HttpServletResponse response){

return "success";

}

2.spring-boot 支持多种模版引擎包括:

a,FreeMarker

b,Groovy

c,Thymeleaf (Spring 官网使用这个)

d,Velocity

e,JSP (貌似Spring Boot官方不推荐,STS创建的项目会在src/main/resources 下有个templates 目录,这里就是让我们放模版文件的,然后并没有生成诸如 SpringMVC 中的webapp目录)

以上所述是给大家介绍的Spring Boot的Controller控制层和页面,希望对大家有所帮助,如果大家有任何疑问请给我留言,会及时回复大家的。在此也非常感谢大家对我们网站的支持!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:spring boot启动加载数据原理分析
下一篇:java异步写日志到文件中实现代码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~