SpringBoot2.0系列–02–Controller

文章目录

  • SpringBoot2.0系列--02--Controller
    • 写在前面
    • 示例
    • 对于整个Controller类
      • Controller注解
      • RestController注解
      • RequestMapping注解
    • 对于Controller类中的方法
      • RequestMapping
      • RequestParam
      • PathVariable
    • 返回一个页面
      • 返回静态页面--html
      • 返回动态页面--freemarker
    • 全部代码
      • 代码结构
      • 代码
    • 联系方式

写在前面

controller是web项目中的控制器,就是和网络请求直接相关联的一环

示例

@RestController
@RequestMapping("/view")
public class HelloWorldController {@RequestMapping("/hello")public String index() {// 这里访问地址是 http://127.0.0.1:8080/view/helloreturn "Hello World";}@RequestMapping("/hello2")public String hello2() {// 这里访问地址是 http://127.0.0.1:8080/view/hello2return "Hello World 2";}
}

比如我们现在又这么一个Controller,那么访问路径就是有:

http://127.0.0.1:8080/view/hello
http://127.0.0.1:8080/view/hello2

对应的方法就是index()和hello2()。

对于整个Controller类

关键代码请看最后

Controller注解

这个注解表示这个类会被当成一个controller,用于处理http请求。

可以返回一个页面,也可以返回一个字符串。

RestController注解

这个注解表示这个类会被当成一个controller。

并且返回的数据只会是一个字符串。

RequestMapping注解

表示这一个层级的目录。

比如设置值为aaa,那么这个类中所有的请求都是需要加上这一层的,

http://ip:port/aaa/xxx

对于Controller类中的方法

关键代码请看最后

RequestMapping

这个是网址最关键的一层,也是最后一层

如@RequestMapping("/hello2"),那么请求网址对应的就是

http://127.0.0.1:8080/view/hello2

 @RequestMapping("/hello2")public String hello2() {// 这里访问地址是 http://127.0.0.1:8080/hello2return "Hello World 2";}

RequestParam

这个是用?和&连接的参数:

http://127.0.0.1:8080/request-param?id=sadho

@RequestMapping("/request-param")public String requestParam(@RequestParam("id") String id) {// 这里访问地址是 http://127.0.0.1:8080/request-param?id=sadhoreturn "requestParam id = " + id;}

PathVariable

这个是写在网址里面的参数

这里访问地址是 http://127.0.0.1:8080/path-param/sadho

@RequestMapping("/path-param/{id}")public String pathParam(@PathVariable("id") String id) {// 这里访问地址是 http://127.0.0.1:8080/path-param/sadhoreturn "pathParam id = " + id;}

返回一个页面

这个类上面都需要加上@controller注解

返回静态页面–html

什么配置都不用搞,直接对应static下面的层级就好

@Controller
@RequestMapping("/view")
public class ViewController {@RequestMapping("/index")public String index() {// 返回的是一个静态页面// 对应static/view/index.html// 这里访问地址是 http://127.0.0.1:8080/view/indexreturn "index.html";}@RequestMapping("/login")public String login() {// 返回的是一个静态页面// 对应static/login.html// 这里访问地址是 http://127.0.0.1:8080/view/loginreturn "/login.html";}
}

返回动态页面–freemarker

  1. 配置pom文件,添加freemarker
<!-- 添加视图模板 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId></dependency>
  1. 在templates下面添加freemarkerview.ftl
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>Insert title here</title>
</head>
<body>
show:${message}
</body>
</html>
  1. 在代码中进行映射
  @RequestMapping("/freemarker")public ModelAndView freemarker() {// 返回的是一个模板页面(动态)// 这里访问地址是 http://127.0.0.1:8080/view/freemarkerModelAndView mav = new ModelAndView();mav.addObject("message", "SpringBoot freemarker!");mav.setViewName("freemarkerview");return mav;}

全部代码

代码结构

重点看

  • HelloWorldController.java
  • ViewController.java
  • login.html
  • index.html
  • freemarkerview.ftl
D:.
│  .gitignore
│  mvnw
│  mvnw.cmd
│  pom.xml
│  pro002-controller.iml
│
├─.mvn
│  └─wrapper
│          maven-wrapper.jar
│          maven-wrapper.properties
│
├─src
│  ├─main
│  │  ├─java
│  │  │  └─com
│  │  │      └─lizhaoblog
│  │  │          └─pro002controller
│  │  │              │  Pro002ControllerApplication.java
│  │  │              │
│  │  │              └─controller
│  │  │                      HelloWorldController.java
│  │  │                      ViewController.java
│  │  │
│  │  └─resources
│  │      │  application.properties
│  │      │
│  │      ├─static
│  │      │  │  login.html
│  │      │  │
│  │      │  └─view
│  │      │          index.html
│  │      │
│  │      └─templates
│  │              freemarkerview.ftl
│  │

代码

  • HelloWorldController.java
/** Copyright (C), 2015-2018* FileName: HelloWorldController* Author:   zhao* Date:     2018/10/9 17:53* Description: HelloWorld控制器* History:* <author>          <time>          <version>          <desc>* 作者姓名           修改时间           版本号              描述*/
package com.lizhaoblog.pro002controller.controller;import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import javax.websocket.server.PathParam;/*** 〈一句话功能简述〉<br>* 〈HelloWorld控制器〉** @author zhao* @date 2018/10/9 17:53* @since 1.0.1*/
@RestController
public class HelloWorldController {@RequestMapping("/hello")public String index() {// 这里访问地址是 http://127.0.0.1:8080/helloreturn "Hello World";}@RequestMapping("/hello2")public String hello2() {// 这里访问地址是 http://127.0.0.1:8080/hello2return "Hello World 2";}@RequestMapping("/request-param")public String requestParam(@RequestParam("id") String id) {// 这里访问地址是 http://127.0.0.1:8080/request-param?id=sadhoreturn "requestParam id = " + id;}@RequestMapping("/path-param/{id}")public String pathParam(@PathVariable("id") String id) {// 这里访问地址是 http://127.0.0.1:8080/path-param/sadhoreturn "pathParam id = " + id;}}
  • ViewController.java
/** Copyright (C), 2015-2018* FileName: ViewController* Author:   zhao* Date:     2018/10/9 19:00* Description: 返回网页* History:* <author>          <time>          <version>          <desc>* 作者姓名           修改时间           版本号              描述*/
package com.lizhaoblog.pro002controller.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;/*** 〈一句话功能简述〉<br>* 〈返回网页〉** @author zhao* @date 2018/10/9 19:00* @since 1.0.1*/
@Controller
@RequestMapping("/view")
public class ViewController {@RequestMapping("/index")public String index() {// 返回的是一个静态页面// 对应static/view/index.html// 这里访问地址是 http://127.0.0.1:8080/view/indexreturn "index.html";}@RequestMapping("/login")public String login() {// 返回的是一个静态页面// 对应static/login.html// 这里访问地址是 http://127.0.0.1:8080/view/loginreturn "/login.html";}@RequestMapping("/freemarker")public ModelAndView freemarker() {// 返回的是一个模板页面(动态)// 这里访问地址是 http://127.0.0.1:8080/view/freemarkerModelAndView mav = new ModelAndView();mav.addObject("message", "SpringBoot freemarker!");mav.setViewName("freemarkerview");return mav;}@ResponseBody@RequestMapping("/stringbuf")public String stringbuf() {// 这里访问地址是 http://127.0.0.1:8080/view/stringbufreturn "index.html";}}
  • login.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>login</title>
</head>
<body>
login
</body>
</html>
  • index.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>index</title>
</head>
<body>@RequestMapping("/html")public ModelAndView html() {ModelAndView mav = new ModelAndView();mav.setViewName("index.html");return mav;}
</body>
</html>
  • freemarkerview.ftl
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>Insert title here</title>
</head>
<body>
show:${message}
</body>
</html>

联系方式

项目代码路径码云:https://gitee.com/lizhaoandroid/Springboot-Learning-lz

联系方式:QQ3060507060

查看下一篇或者其他文章,可点击目录或者专栏查看

SpringBoot2.0系列--02--Controller相关推荐

  1. SpringBoot2.0系列(1)----初识SpringBoot

    [SpringBoot2.0系列01]初识SpringBoot 一.介绍 想必大家都一定用过spring框架,每次整合spring框架的时候总是会有无穷无尽的xml配置文件,第一次写配置文件的时候,大 ...

  2. SpringBoot2.0系列--06--定时任务Scheduled及具体例子

    SpringBoot2.0系列–06–定时任务Scheduled及具体例子 文章目录 SpringBoot2.0系列--06--定时任务Scheduled及具体例子 前言 介绍 总流程 时间循环参数 ...

  3. SpringBoot2.0系列(4)---SpringBoot之使用JPA完成简单的rest api

    一. 前言 在前面我们已经知道在springboot中如何使用freemark与thymeleaf之类的视图模板引擎去渲染我们的视图页面,但是没涉及跟数据库交互的东西,所以今天在这里我们将介绍了一下如 ...

  4. SpringBoot2.0系列(03)---SpringBoot之使用freemark视图模板

    前言 freemarker介绍: FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代码等)的通用工具. 它不是面向最终用户 ...

  5. SpringBoot2.0系列(2)---SpringBoot之使用Thymeleaf视图模板

    前言 Thymeleaf 是Java服务端的模板引擎,与传统的JSP不同,前者可以使用浏览器直接打开,因为可以忽略掉拓展属性,相当于打开原生页面,给前端人员也带来一定的便利.如果你已经厌倦了JSP+J ...

  6. SpringBoot2.0系列教程(十三)Springboot防止XSS攻击

    Hello大家好,本章我们添加防止XSS攻击功能 .有问题可以加我VX:Mrchuchen. 一:什么是XSS XSS攻击全称跨站脚本攻击,是一种在web应用中的计算机安全漏洞,它允许恶意web用户将 ...

  7. springboot2.0系列(二):配置属性

    为什么80%的码农都做不了架构师?>>>    前言 Spring Boot中核心思想:约定优于配置.那到底什么是约定优于配置? 约定优于配置(convention over con ...

  8. spring-boot-2.0.3不一样系列之源码篇 - springboot源码一,绝对有值得你看的地方

    前言 上篇:spring-boot-2.0.3不一样系列之shiro - 搭建篇,实现了spring-boot与shiro的整合,效果大家也看到了,工程确实集成了shiro的认证与授权功能.如果大家能 ...

  9. springboot2.0.5集成mybatis(PageHelper分页插件、generator插件使用)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/zab635590867/article ...

最新文章

  1. ASP.net实现无扩展名的URL重写。简单、方便、无需ISAPI
  2. 快速提高你的UI设计水平的一些小技巧
  3. Zxing生成二维码思路和源码解析
  4. 「镁客·请讲」仙知机器人赵越:“能友好工作”的机器人才能真正的为人类服务...
  5. 《高性能javascript》 领悟随笔之-------DOM编程篇(二)
  6. ip netns 命令使用
  7. 大话设计模式(七 工厂不好用了?)
  8. vue:vue页面刷新vuex数据消失问题
  9. linux if 判断文件数量,linux if判断命令
  10. 判别模型的玻尔兹曼机论文源码解读
  11. 确认密码参数php,laravel unique验证、确认密码confirmed验证以及密码修改验证的方法...
  12. 门面模式(Facade)
  13. Java中的HashSet和TreeSet
  14. 部署Vista – 第2部分:理解Windows安装程序和Windows映像文件格式
  15. IDEA快捷键的使用
  16. python怎么下载网站_python怎么下载网页上的文件
  17. 2021中国移动秋招备考知识
  18. 锁仓怎么解_期货如何锁仓,解锁以及锁仓的好处
  19. 机器学习的三大主要任务
  20. 大数据学习根据应用目标,主要可以划分为哪三个阶段?

热门文章

  1. 学习笔记必备软件:OneNote+ Mindmaster完美搭配使用
  2. git提交代码并合并
  3. Exce快速l统计所有行中标红数据的个数【教学常用】
  4. 俄罗斯离美国有多近?只有3701米
  5. 宇视网络视频录像机运动检测告警推送到手机客户端
  6. 苹果在中国高端手机市场继续夺取市场,华为受挤压
  7. 二分查找算法-C语言实现
  8. Amazon Go无人售货超市
  9. js截取字符串subString()方法
  10. 【备忘】《Unity Shader入门精要》随书彩色插图