SpringBoot2.0系列--02--Controller
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
- 配置pom文件,添加freemarker
<!-- 添加视图模板 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId></dependency>
- 在templates下面添加freemarkerview.ftl
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>Insert title here</title>
</head>
<body>
show:${message}
</body>
</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;}
全部代码
代码结构
重点看
- 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相关推荐
- SpringBoot2.0系列(1)----初识SpringBoot
[SpringBoot2.0系列01]初识SpringBoot 一.介绍 想必大家都一定用过spring框架,每次整合spring框架的时候总是会有无穷无尽的xml配置文件,第一次写配置文件的时候,大 ...
- SpringBoot2.0系列--06--定时任务Scheduled及具体例子
SpringBoot2.0系列–06–定时任务Scheduled及具体例子 文章目录 SpringBoot2.0系列--06--定时任务Scheduled及具体例子 前言 介绍 总流程 时间循环参数 ...
- SpringBoot2.0系列(4)---SpringBoot之使用JPA完成简单的rest api
一. 前言 在前面我们已经知道在springboot中如何使用freemark与thymeleaf之类的视图模板引擎去渲染我们的视图页面,但是没涉及跟数据库交互的东西,所以今天在这里我们将介绍了一下如 ...
- SpringBoot2.0系列(03)---SpringBoot之使用freemark视图模板
前言 freemarker介绍: FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代码等)的通用工具. 它不是面向最终用户 ...
- SpringBoot2.0系列(2)---SpringBoot之使用Thymeleaf视图模板
前言 Thymeleaf 是Java服务端的模板引擎,与传统的JSP不同,前者可以使用浏览器直接打开,因为可以忽略掉拓展属性,相当于打开原生页面,给前端人员也带来一定的便利.如果你已经厌倦了JSP+J ...
- SpringBoot2.0系列教程(十三)Springboot防止XSS攻击
Hello大家好,本章我们添加防止XSS攻击功能 .有问题可以加我VX:Mrchuchen. 一:什么是XSS XSS攻击全称跨站脚本攻击,是一种在web应用中的计算机安全漏洞,它允许恶意web用户将 ...
- springboot2.0系列(二):配置属性
为什么80%的码农都做不了架构师?>>> 前言 Spring Boot中核心思想:约定优于配置.那到底什么是约定优于配置? 约定优于配置(convention over con ...
- spring-boot-2.0.3不一样系列之源码篇 - springboot源码一,绝对有值得你看的地方
前言 上篇:spring-boot-2.0.3不一样系列之shiro - 搭建篇,实现了spring-boot与shiro的整合,效果大家也看到了,工程确实集成了shiro的认证与授权功能.如果大家能 ...
- springboot2.0.5集成mybatis(PageHelper分页插件、generator插件使用)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/zab635590867/article ...
最新文章
- ASP.net实现无扩展名的URL重写。简单、方便、无需ISAPI
- 快速提高你的UI设计水平的一些小技巧
- Zxing生成二维码思路和源码解析
- 「镁客·请讲」仙知机器人赵越:“能友好工作”的机器人才能真正的为人类服务...
- 《高性能javascript》 领悟随笔之-------DOM编程篇(二)
- ip netns 命令使用
- 大话设计模式(七 工厂不好用了?)
- vue:vue页面刷新vuex数据消失问题
- linux if 判断文件数量,linux if判断命令
- 判别模型的玻尔兹曼机论文源码解读
- 确认密码参数php,laravel unique验证、确认密码confirmed验证以及密码修改验证的方法...
- 门面模式(Facade)
- Java中的HashSet和TreeSet
- 部署Vista – 第2部分:理解Windows安装程序和Windows映像文件格式
- IDEA快捷键的使用
- python怎么下载网站_python怎么下载网页上的文件
- 2021中国移动秋招备考知识
- 锁仓怎么解_期货如何锁仓,解锁以及锁仓的好处
- 机器学习的三大主要任务
- 大数据学习根据应用目标,主要可以划分为哪三个阶段?