当前位置:实例文章 » 其他实例» [文章]SpringMVC及注解介绍(一)

SpringMVC及注解介绍(一)

发布人:shili8 发布时间:2025-02-12 00:12 阅读次数:0

**Spring MVC 及 注解介绍 (一)****前言**

Spring MVC 是 Spring 框架中的一个关键组件,用于构建 Web 应用程序。它提供了一个松散耦合的、可扩展的框架,让开发者能够轻松地创建复杂的 Web 应用程序。在本文中,我们将介绍 Spring MVC 的基本概念和注解。

**什么是 Spring MVC**

Spring MVC 是一种 Model-View-Controller (MVC) 框架,它分离了应用程序的业务逻辑、数据模型和视图显示。这种分离使得开发者能够更容易地维护和扩展应用程序。

在 Spring MVC 中,Controller 负责处理 HTTP 请求并返回相应的响应。Model代表应用程序的数据模型,而 View 负责渲染 HTML 页面。

**Spring MVC 的注解**

Spring MVC 提供了许多注解,使得开发者能够轻松地创建 Controller、Model 和 View。下面是这些注解的介绍:

### **@Controller**

`@Controller` 注解标记一个类为 Spring MVC Controller。这个类负责处理 HTTP 请求并返回相应的响应。

java// ExampleController.javaimport org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controllerpublic class ExampleController {

 @GetMapping("/example")
 public String example() {
 return "example";
 }
}


### **@RequestMapping**

`@RequestMapping` 注解用于映射 URL 到 Controller 的方法。这个注解可以指定 HTTP 请求的方法(如 GET、POST 等)。

java// ExampleController.javaimport org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controllerpublic class ExampleController {

 @GetMapping("/example")
 public String example() {
 return "example";
 }

 @PostMapping("/example")
 public String examplePost() {
 return "example-post";
 }
}


### **@RequestParam**

`@RequestParam` 注解用于从 HTTP 请求中获取参数。这个注解可以指定参数的名称和类型。

java// ExampleController.javaimport org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controllerpublic class ExampleController {

 @GetMapping("/example")
 public String example(@RequestParam("name") String name) {
 return "example";
 }
}


### **@PathVariable**

`@PathVariable` 注解用于从 URL 中获取参数。这个注解可以指定参数的名称和类型。

java// ExampleController.javaimport org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controllerpublic class ExampleController {

 @GetMapping("/example/{id}")
 public String example(@PathVariable("id") Long id) {
 return "example";
 }
}


### **@RequestBody**

`@RequestBody` 注解用于从 HTTP 请求体中获取 JSON 数据。这个注解可以指定数据的类型。

java// ExampleController.javaimport org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;

@Controllerpublic class ExampleController {

 @PostMapping("/example")
 public String example(@RequestBody User user) {
 return "example";
 }
}

class User {
 private Long id;
 private String name;

 // getters and setters}


### **@SessionAttribute**

`@SessionAttribute` 注解用于从 Session 中获取属性。这个注解可以指定属性的名称和类型。

java// ExampleController.javaimport org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controllerpublic class ExampleController {

 @GetMapping("/example")
 public String example(@SessionAttribute("name") String name) {
 return "example";
 }
}


### **@CookieValue**

`@CookieValue` 注解用于从 Cookie 中获取值。这个注解可以指定 Cookie 的名称和类型。

java// ExampleController.javaimport org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controllerpublic class ExampleController {

 @GetMapping("/example")
 public String example(@CookieValue("name") String name) {
 return "example";
 }
}


### **@RequestHeader**

`@RequestHeader` 注解用于从 HTTP 请求头中获取值。这个注解可以指定请求头的名称和类型。

java// ExampleController.javaimport org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controllerpublic class ExampleController {

 @GetMapping("/example")
 public String example(@RequestHeader("User-Agent") String userAgent) {
 return "example";
 }
}


### **@ResponseStatus**

`@ResponseStatus` 注解用于指定 HTTP 响应状态码。

java// ExampleController.javaimport org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controllerpublic class ExampleController {

 @GetMapping("/example")
 public String example() {
 return "example";
 }

 @GetMapping("/error")
 @ResponseStatus(HttpStatus.NOT_FOUND)
 public String error() {
 return "error";
 }
}


### **@ExceptionHandler**

`@ExceptionHandler` 注解用于指定异常处理器。

java// ExampleController.javaimport org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controllerpublic class ExampleController {

 @GetMapping("/example")
 public String example() {
 return "example";
 }

 @GetMapping("/error")
 @ExceptionHandler(Exception.class)
 public String error(Exception e) {
 return "error";
 }
}


### **@InitBinder**

`@InitBinder` 注解用于指定绑定器。

java// ExampleController.javaimport org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controllerpublic class ExampleController {

 @GetMapping("/example")
 public String example() {
 return "example";
 }

 @InitBinder public void initBinder(WebDataBinder binder) {
 // do something }
}


### **@Valid**

`@Valid` 注解用于指定验证器。

java// ExampleController.javaimport org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controllerpublic class ExampleController {

 @GetMapping("/example")
 public String example(@Valid User user) {
 return "example";
 }
}

class User {
 private Long id;
 private String name;

 // getters and setters}


### **@ModelAttribute**

`@ModelAttribute` 注解用于指定模型属性。

java// ExampleController.javaimport org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controllerpublic class ExampleController {

 @GetMapping("/example")
 public String example(@ModelAttribute("name") String name) {
 return "example";
 }
}


### **@Model**

`@Model` 注解用于指定模型。

java// ExampleController.javaimport org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controllerpublic class ExampleController {

 @GetMapping("/example")
 public String example(@Model User user) {
 return "example";
 }
}

class User {
 private Long id;
 private String name;

 // getters and setters}


### **@View**

`@View` 注解用于指定视图。

java// ExampleController.javaimport org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controllerpublic class ExampleController {

 @GetMapping("/example")
 public String example(@View("example") String name) {
 return "example";
 }
}


### **@Redirect**

`@Redirect` 注解用于指定重定向。

java// ExampleController.javaimport org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controllerpublic class ExampleController {

 @GetMapping("/example")
 public String example() {
 return "example";
 }

 @GetMapping("/redirect")
 @Redirect(value = "/example", params = {"name=John"})
 public String redirect() {
 return "redirect";
 }
}


### **@Session**

`@Session` 注解用于指定会话。

java// ExampleController.javaimport org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controllerpublic class ExampleController {

 @GetMapping("/example")
 public String example(@Session User user) {
 return "example";
 }
}

class User {
 private Long id;
 private String name;

 // getters and setters}


### **@Cookie**

`@Cookie` 注解用于指定 Cookie。

java// ExampleController.javaimport org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controllerpublic class ExampleController {

 @GetMapping("/example")
 public String example(@Cookie User user) {
 return "example";
 }
}

class User {
 private Long id;
 private String name;

 // getters and setters}


### **@Request**

`@Request` 注解用于指定请求。

java// ExampleController.javaimport org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controllerpublic class ExampleController {

 @GetMapping("/example")
 public String example(@Request User user) {
 return "example";
 }
}

class User {
 private Long id;
 private String name;

 // getters and setters}


### **@Response**

`@Response` 注解用于指定响应。

java// ExampleController.javaimport org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controllerpublic

相关标签:springspringmvc
其他信息

其他资源

Top