• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Spring Boot的Controller控制层和页面

java 搞代码 4年前 (2022-01-05) 46次浏览 已收录 0个评论

这篇文章主要介绍了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; /** * 默认页<br /> * @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:页面路径地址/页面名称 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).application.properties:

 spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mvc.view.suffix=.jsp application.hello=Hello TOM

3).index.jsp:

   <title>Spring Boot Sample</title> Time: ${time} <br> Message: ${message} 

4).page1.jsp:

   <title>Spring Boot Sample</title> <h1>${content }</h1>: ${message} 

5).pom.xml:

   4.0.0com.exampleSpring-boot-simple0.0.1-SNAPSHOT<!--   jar -->warSpring-boot-simpleDemo project for Spring Boot org.springframework.bootspring-boot-starter-parent1.5.2.RELEASE<!-- lookup parent from repository --> UTF-8UTF-81.8  org.springframework.bootspring-boot-starter-web org.springframework.bootspring-boot-starter-testtest org.apache.tomcat.embedtomcat-embed-jasperprovided javax.servletjstl   org.springframework.bootspring-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,可以利用ModelAn来源gaodai$ma#com搞$代*码*网dView返回试图。

 @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控制层和页面,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对gaodaima搞代码网网站的支持!

以上就是Spring Boot的Controller控制层和页面的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Spring Boot的Controller控制层和页面

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址