1. 转载原文
原文地址:https://www.cnblogs.com/wormday/p/8435617.html
期间遇到的问题解决方法:
1、Spring配置问题——元素 “context:component-scan” 的前缀 “context” 未绑定,https://blog.csdn.net/lhc1105/article/details/50456881
2. 实操
运行环境:
- Java 1.7
- Idea 2018.3
- Spring-4.3.18
- Spring MVC-4.3.18
2.1 不同路由的写法
package com.helloworld;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/hi")
public class HelloController {
/**
* 基本路由
* @param model
* @return
*/
@RequestMapping("/say")
public String say(Model model){ // 参数中传入Model
model.addAttribute("name","wormday"); // 指定Model的值
model.addAttribute("url","http://www.cnblogs.com/wormday/p/8435617.html"); // 指定Model的值
return "say";
}
/**
* 获取URL参数的路由
* 在Spring MVC中,可以使用@PathVariable注释将一个方法参数绑定到一个URI模板变量的值
* @param model
* @param params
* @return
*/
@RequestMapping("/pathVar/{params}")
public String pathVar(Model model,
@PathVariable(value = "params") String params){
model.addAttribute("params", params);
return "pathVar";
}
/**
* 非模板路由
* 如果您使用 @ResponseBody 注释到方法, spring 将尝试转换它的返回值,并自动写入到HTTP响应。在这种情况下,并不需要一个特定的视图。
* 注:方法不一定需要返回字符串类型。
* @param model
* @return
*/
@RequestMapping(value = "/responseBody")
@ResponseBody
public String responseBody(Model model){
return "I'm response body from back end!";
}
/**
* 重定向路由
* @param model
* @return
*/
@RequestMapping(value = "/redirect", method = RequestMethod.GET)
public String redirect(Model model) {
// Do somethong here
return "redirect:/hi/say";
}
}