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/hello
return "Hello World";
}
@RequestMapping("/hello2")
public String hello2() {
// 这里访问地址是 http://127.0.0.1:8080/view/hello2
return "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/hello2
return "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=sadho
return "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/sadho
return "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/index
return "index.html";
}
@RequestMapping("/login")
public String login() {
// 返回的是一个静态页面
// 对应static/login.html
// 这里访问地址是 http://127.0.0.1:8080/view/login
return "/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/freemarker
ModelAndView 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/hello
return "Hello World";
}
@RequestMapping("/hello2")
public String hello2() {
// 这里访问地址是 http://127.0.0.1:8080/hello2
return "Hello World 2";
}
@RequestMapping("/request-param")
public String requestParam(@RequestParam("id") String id) {
// 这里访问地址是 http://127.0.0.1:8080/request-param?id=sadho
return "requestParam id = " + id;
}
@RequestMapping("/path-param/{id}")
public String pathParam(@PathVariable("id") String id) {
// 这里访问地址是 http://127.0.0.1:8080/path-param/sadho
return "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/index
return "index.html";
}
@RequestMapping("/login")
public String login() {
// 返回的是一个静态页面
// 对应static/login.html
// 这里访问地址是 http://127.0.0.1:8080/view/login
return "/login.html";
}
@RequestMapping("/freemarker")
public ModelAndView freemarker() {
// 返回的是一个模板页面(动态)
// 这里访问地址是 http://127.0.0.1:8080/view/freemarker
ModelAndView 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/stringbuf
return "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>