目标:
1. 熟悉使用SpringMVC中的常用注解
目录
前言
1. @Controller
2. @RestController
3. @RequestMapping
4. @RequestParam
5. @PathVariable
6. @SessionAttributes
7. @CookieValue
SpringMVC是一款用于构建基于Java的Web应用程序的框架,它通过注解的方式简化了Web应用的开发。在本文中,我们将总结一些SpringMVC中常用的注解及其用法,以便开发者更好地理解和使用这些注解
在方法中直接返回对象时,Spring MVC 会将其作为模型数据传递给视图解析器,然后解析为具体的视图。
@Controller
public class MyController {
@RequestMapping("/hello")
public String hello() {
return "hello.html";
}
}
当在类注解中加上 @ResponseBody 时,返回的为数据而不是页面
@Controller
public class MyController {
@ResponseBody
@RequestMapping("/hello")
public String hello() {
return "hello";
}
}
第一段代码返回 html 页面(html, css, js等都能返回)
第二个返回 "hello" 这个字符串
其方法的返回值会被直接写入 HTTP 响应体中,而不是被视图解析器解析为视图。通常返回的是 JSON 或 XML 数据。
@RestController
public class MyRestController {
@RequestMapping("/api/data")
public Map getData() {
Map data = new HashMap<>();
data.put("key", "value");
return data;
}
}
我们可以将 @RestControll 是由@Controller + @ResponseBody组成的,所以是直接返回数据而不是页面
@RequestMapping 注解用于映射请求路径和Controller方法,指定请求的URL路径。
@Controller
@RequestMapping("/myapp")
public class MyController {
@RequestMapping("/hello")
public String hello() {
return "helloPage";
}
}
例如:
如果你想要访问hello方法的时候,你就可以这样访问:127.0.0.1:8080/myapp/hello
@RequestParam 注解用于将请求参数绑定到方法参数上。
@Controller
public class MyController {
@RequestMapping("/greet")
public String greet(@RequestParam("name") String name) {
// Method logic using name parameter
return "greetPage";
}
}
注意:
这里@RequestParam里面的参数应和前端传入的相同,如果想要自行修改的话括号里这一样写,(value = "你想要改的", required = false)
@Controller
public class MyController {
@RequestMapping("/greet")
public String greet(@RequestParam(value = "name2", required = false) String name) {
// Method logic using name parameter
return "greetPage";
}
}
@PathVariable 注解用于从URI中提取模板变量的值。
@Controller
@RequestMapping("/users")
public class UserController {
@RequestMapping("/{userId}")
public String getUser(@PathVariable("userId") int userId) {
// Method logic using userId
return "userPage";
}
}
@SessionAttributes 注解用于指定哪些模型属性需要存储在会话中。
@Controller
@SessionAttributes("user")
public class UserController {
@RequestMapping("/login")
public String login(@ModelAttribute("user") User user) {
// Method logic for user login
return "dashboard";
}
}
去掉最后一个s,是得到 Session
@RequestMapping("/getSession")
public String getSession(@SessionAttribute(value = "lpy", required = false) String lpy) {
return "登录账户" + lpy;
}
@CookieValue 用于获取到浏览器中的cooike
@RequestMapping("/getCookie")
public String getCookie(@CookieValue("lpy") String lpy) {
return "lpy:" + lpy;
}