[外链图片转存失败(img-FcqbD9au-1568278833500)(C:\Users\Leisure\AppData\Roaming\Typora\typora-user-images\1565860486083.png)]
@Controller
public class HelloWorldController {
@RequestMapping("")
public String home() {
User user;
return "index";
}
}
/**
* 查询所有role数据
* @return
*/
@GetMapping("/")
public List<Role> findAll(){
return roleService.findAll();
}
RequestMapping的Get方式
用法:
a. 直接在浏览器地址栏输入某个地址
b. 点击链接
c. 表单默认的提交方式
特点:
a. 请求参数会添加到请求资源路劲的后面,只能添加少量参数(因为请求行只有一行,大约只能存放2K左右的数据)(2K左右的数据,看起来也不少。。。)
b. 请求参数会显示在浏览器地址栏,路由器会记录请求地址
/**
* 插入role数据
* @param role
* @return
*/
@PostMapping("/")
public int insertRole(@RequestBody Role role){
return roleService.insertRole(role);
}
就是RequestMapping的Post方式
用法:
a. 设置表单method = “post”
特点:
a. 请求参数添加到实体内容里面,可以添加大量的参数(也解释了为什么浏览器地址栏不能发送post请求,在地址栏里我们只能填写URL,并不能进入到Http包的实体当中)
b. 相对安全,但是,post请求不会对请求参数进行加密处理(可以使用https协议来保证数据安全)。
用于修改数据,可使用**@RequestBody**来接受值
/** 更新用户
* 处理"/users"的PUT请求,用来更新User信息
* @param user
* @return
*/
@PutMapping("/")
public User update(@RequestBody User user) {
return userService.update(user);
}
用于删除数据,可使用@PathVariable来接受数据
/**
* 通过id删除用户
* @param id
* @return
*/
@DeleteMapping("/{id}")
public boolean deleteRole(@PathVariable long id){
System.out.println(id);
return roleService.deleteRole(id);
}
Patch方式是对put方式的一种补充;
put方式是可以更新.但是更新的是整体.patch是对局部更新;
其用来获取请求路径(url )中的动态参数。
@GetMapping("/{id}")
// 使用@PathVariable来获取url上的动态参数id
public User get(@PathVariable Long id) {
return userService.get(id);
}
获取请求参数的值,将请求参数绑定到你控制器的方法参数上
@Controller
@RequestMapping("/pets")
@SessionAttributes("pet")
public class EditPetForm {
// ...
@RequestMapping(method = RequestMapping.GET)
// 通过@RequestParam获取petId的值
public String setupForm(@RequestParam("petId") int petId, ModelMap model) {
Pet pet = this.clinic.loadPet(petId);
model.addAttribute("pet", pet);
return "petForm";
}
// ,..
}
@PostMapping("/")
// 使用@requestBody来将请求体写入具体的接收对象中
public User insert(@RequestBody User user) {
return userService.insert(user);
}
@RequestMapping(value = "user/login")
@ResponseBody
// 将ajax(datas)发出的请求写入 User 对象中,返回json对象响应回去
public User login(User user) {
User user = new User();
user .setUserid(1);
user .setUsername("MrF");
user .setStatus("1");
return user ;
}
返回String时,如果不加注解@ResponseBody,表示返回的是个页面;如果加了该注解,表示返回的真的是一个字符串
return “redirect:files/{path}”;
@RequestMapping("/loginUser")
public String login(String username, String password, Model model) throws Exception {
if (username != null && password != null) {
if ("admin".equals(username) && "123".equals(password)) {
// 登录成功,重定向到主页面
return "redirect:/main";
}
}
}
return “forward:files/{path}”;
public String login(String username, String password, Model model) throws Exception {
if (username != null && password != null) {
if ("admin".equals(username) && "123".equals(password)) {
// 登录成功,重定向到主页面
return "redirect:/main";
} else {
// 向 request 域中设置错误提示信息
model.addAttribute("loginFlag", "用户名或密码错误");
// 登录失败,转发到登录页面
return "forward:/login";
}
} else {
// 只是把模型放到request域里面,并没有真正的安排好
model.addAttribute("loginFlag", "用户名或密码错误");
// 登录失败,转发到登录页面
return "forward:/login";
}
}