文章目录
- 1. Rest风格
- # 传统访问
- # Rest风格
- # Restful开发中的注解介绍
- 2. controller中路径参数
- 3. 约束Controller中方法的请求类型
- 4. 视图跳转
- 5. java.sql.Date 和 java.util.Date 的联系和区别
- 6. 使用 @Slf4j 日志
- 7.定时任务
- 8
1. Rest风格
Rest也叫做范文资源的形式,书写简化,隐藏访问真实目的。无法通过地址知道目的
Restful风格的请求是使用“url+请求方式”表示一次请求目的的,HTTP 协议里面四个表示操作方式的动词如下:
请求方式 | 请求目的 |
---|---|
GET | 用于获取资源 |
POST | 用于新建资源 |
PUT | 用于更新资源 |
DELETE | 用于删除资源 |
例如:
* /users/1 GET : 得到 id = 1 的 user
* /users/1 DELETE: 删除 id = 1 的 user
* /users/1 PUT: 更新 id = 1 的 user
* /users POST: 新增 user
# 传统访问
# Rest风格
- 资源:互联网所有的事物都可以被抽象为资源
- 资源操作:使用POST、DELETE、PUT、GET,使用不同方法对资源进行操作。
分别对应 添加、 删除、修改、查询。
# Restful开发中的注解介绍
- 名称:@PathVariable
- 类型:形参注解
- 位置:SpringMVC控制器方法形参定义前面
- 作用:绑定路径参数与处理器方法形参间的关系,要求路径名与形参名一一对应
- 范例:
@RequestMapping(value = "/users/{id}", method = RequestMethod.GET)
@ResponseBody
public String findById(@PathVariable Integer id){
System.out.println("findById running......" + id);
return "findById";
}
- 名称:@RestController
- 类型:类注解
- 位置:基于SpringMVCESTful来发控制器类定义上方
- 作用:设置当前控制器类为RESTful风格,等同于@Controller与@ResponseBody两个注解的组合功能。
- 范例:
@RestController
public class UserController{
}
- 名称:@GetMapping @PostMapping @PutMapping @DeleteMapping
- 类型:方法注解
- 位置:基于SpringMVCESTful来发控制器方法定义上方
- 作用:设置当前控制器方法请求访问路径与请求动作,每种对应一个请求动作,例如@GetMapping对应GET请求
- 属性:value(默认):请求访问路径
- 范例:
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping("/{id}")
public String findById(@PathVariable Integer id){
System.out.println("findById running......" + id);
return "findById";
}
}
2. controller中路径参数
@Controller
public class RestFulController {
@RequestMapping(value = "/add/{a}/{b}")
public String test1(@PathVariable int a,@PathVariable int b, Model model){
int res = a + b;
model.addAttribute("msg","结果为:"+ res);
return "test";
}
}
3. 约束Controller中方法的请求类型
//我们使用浏览器地址栏进行访问默认是Get请求,如果报错405: 改回Get就好了。这里还是post
@RequestMapping(value = "add",method = RequestMethod.POST)
public String test2(Model model){
model.addAttribute("msg","Hello!");
return "test";
}
所有的地址栏请求默认都会是 HTTP GET 类型的。
方法级别的注解变体有如下几个:组合注解
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping
@GetMapping 是一个组合注解,平时使用的会比较多!
它所扮演的是 @RequestMapping(method =RequestMethod.GET) 的一个快捷方式。
4. 视图跳转
//只要实现类Controller接口的类,,说明这就是哟个控制器了
public class ControllerText1 implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
ModelAndView mv = new ModelAndView();
mv.addObject("msg","ControllerText01");
mv.setViewName("test");
return mv;
}
}
5. java.sql.Date 和 java.util.Date 的联系和区别
-
java.sql.Date 是 java.util.Date 的子类,是一个包装了毫秒值的瘦包装器,允许JDBC将毫秒值标识为 SQL DATE值。
-
java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分,格式是”yyyy-、MM-dd”.
-
java.util.Date是在除了SQL语句的情况下面使用的.
# 构建Date时间对象,构建SimpleDateFormat对象,使用SimpleDateFormat对象格式化时间。
Date date = new java.util.Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
String nowDate = format.format(date.getTime());
6. 使用 @Slf4j 日志
- 添加pom依赖
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
</dependency>
- 在类上添加 @Slf4j 注解
- 使用log.info(打印);
@Slf4j
@RestController
@RequestMapping("/book")
public class BookControler {
@GetMapping
public String getTime(){
log.info("开始使用BookController类中的getTime方法");
Date date=new Date();
SimpleDateFormat format1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
String nowDate = format1.format(date.getTime());
return nowDate;
}
}
7.定时任务
@RequestMapping("/test2")
@ResponseBody
public String fun2(@RequestParam(value = "str1",defaultValue = "hello") String str1){
// 定义一个任务
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
System.out.println("打印当前时间:" + new Date());
}
};
// 计时器
Timer timer = new Timer();
// 开始执行任务 (延迟1000毫秒执行,每3000毫秒执行一次)
timer.schedule(timerTask, 2000, 1000);
return "定时任务已触发";
}