SpringBoot Controller中各个注解的使用(三)
程序员文章站
2022-05-29 22:18:52
...
Controller的使用
@Controller | 处理http请求(整体页面刷新提交的处理注解) |
@RestController |
Spring4之后新加的注解,原来返回json需要@ResponseBody配合@Controller (ajax提交,一般返回json格式) |
@RequestMapping | 配置url映射 |
Controller的url路径参数
@PathVariable 获取url中的数据
@RequestParam 获取请求参数中的值
一aaa@qq.com整体页面交互
请求后台,必须返回一个视图,以前我们一般用Jsp,但是SpringBoot不推荐我们实用jsp,主要是强调前后台分离;
官方推荐的是这几种模版视图引擎,
推荐Freemarker和Velocity;
首先,添加Freemarker支持,打开pom.xml文件,alt+/
弹出对话框
选择Freemarker
此时,在pom.xml文件
配置application.properties文件
FreemarkerController控制器
package com.hlx.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class FreemarkerController {
@RequestMapping("/show")
public ModelAndView show() {
ModelAndView view = new ModelAndView("he");
view.addObject("msg", "Freemarker Template Language 模板引擎!");
return view;
}
}
工程如下:
he.ftl
页面访问
二aaa@qq.com ajax页面交互
package com.hlx.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/ajax")
public class AjaxController {
@RequestMapping("/json")
public String disable(){
String json="{'msg1':'测试ajax!','msg2':'获得json的数据!'}";
return json;
}
}
index.html
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<!-- 引入JS -->
<script type="text/javascript" src="jquery-3.2.1.js"></script>
<script type="text/javascript">
$(function(){
//单击事件
$("#but").click(function(){
//异步post提交
$.post("ajax/json",{},function(data){
alert(data);
});
});
});
</script>
<body>
<input type="button" id="but" value="单击我!"><p/>
<a href="/hello3/path/208">使用pathVariable中的数据</a>
<hr/>
<a href="/hello3/path/find?uname=bear&upass=aaa">使用requestParameter参数的数据</a><p/>
<a href="/hello3/path/find?uname=mike">使用requestParameter参数的数据</a>
</body>
</html>
浏览页面
这里的json比较简单,所以我直接返回; 实际项目Json格式复杂,要借助于一些json框架,比如Json-lib,gson等等;
三.介绍url地址上的参数使用
import org.springframework.stereotype.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.servlet.ModelAndView;
@Controller
@RequestMapping("/path")
public class PathController {
@RequestMapping("/{id}")
public ModelAndView show(@PathVariable("id") Integer id){
//试图对象
ModelAndView view=new ModelAndView("blog");
//保存数据
view.addObject("id", id);
return view;
}
@RequestMapping("/find")
public ModelAndView param(@RequestParam(value="uname",required=false) String uname, @RequestParam(value="upass",required=false) String pwd){
//试图对象
ModelAndView view=new ModelAndView("param");
//保存数据
view.addObject("name", uname);
view.addObject("pwd",pwd);
return view;
}
}
(1)@PathVariable 获取url中的数据
(2)@RequestParam 获取请求参数中的值
注意:(required=false)这个参数可以传也可以不传哦!
param.ftl
、