Spring MVC介绍,注解介绍,Cookie和Session介绍

Spring MVC

是Spring框架的一部分,它提供了一个基于MVC(模型-视图-控制器)设计模式的Web应用程序开发框架。通过将应用程序划分为模型、视图和控制器三个核心组件,Spring MVC简化了Web开发过程,提高了代码的可读性、可维护性和可扩展性。它支持灵活的配置和强大的注解功能,能够无缝地与Spring框架的其他部分集成,从而构建高性能、易于测试和维护的Web应用程序。

SpringMVC 中的常用注解及其用法

1. 控制器层

@Controller

标识一个类为 Spring MVC 控制器。这个类中的方法将处理HTTP请求。

@Controller
public class MyController { 
    ... 
}

@RequestMapping:

映射HTTP请求的URL到一个具体的处理方法。它可以用于类级别和方法级别。

类级别用法:

@Controller 
@RequestMapping("/example") 
public class MyController { 
    ... 
}

方法级别用法:

@Controller 
@RequestMapping("/MyController") 
public class MyController { 

    @RequestMapping("/hello") 
    public String hello() { 
        ... 
    } 
}

@RestController:

它将 @Controller 和 @ResponseBody 的功能合并在一起。

使用 @RestController 注解的类被视为控制器(Controller),并且其所有方法的返回值都会自动地作为 HTTP 响应体(Body)返回给客户端

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

// 使用 @RestController 注解标记该类为 RESTful 控制器
@RestController
public class UserController {

    // 假设有一个服务层来处理业务逻辑
    // private UserService userService;

    // 定义一个 GET 请求处理方法,用于根据用户ID获取用户信息
    @GetMapping("/users/{id}")
    public User getUserById(@PathVariable Long id) {
        // 这里应该是调用服务层来获取用户信息
        // 例如:User user = userService.findById(id);

        // 为了简化示例,我们直接返回一个模拟的 User 对象
        // 在实际应用中,你应该从数据库或其他数据源中获取 User 对象
        User user = new User();
        user.setId(id);
        user.setName("John Doe");
        user.setEmail("john.doe@example.com");

        // 由于使用了 @RestController,返回的 User 对象将自动转换为 JSON
        // 并作为 HTTP 响应体发送给客户端
        return user;
    }

    // 假设的 User 类,用于模拟用户信息
    static class User {
        private Long id;
        private String name;
        private String email;

        // 省略了构造函数、getter 和 setter 方法以简化示例
    }
}

在这个例子中,UserController 类使用 @RestController 注解标记为 RESTful 控制器。它定义了一个 getUserById 方法,该方法使用 @GetMapping 注解来映射 HTTP GET 请求到 /users/{id} 路径。方法接收一个路径变量 id,并返回一个 User 对象。由于使用了 @RestController,Spring MVC 会自动将返回的 User 对象转换为 JSON 格式的字符串,并将其作为 HTTP 响应体发送给客户端。这样,客户端就可以接收到一个包含用户信息的 JSON 对象。

 

@RequestParam:后端参数重命名

@RequestMapping("/greet") 
public String getUser(@RequestParam(value = "user_id", required = false) Long userId) {
    ...
    return "User ID is: " + userId;
}

 在上面的例子中,@RequestParam(value = "user_id", required = false)告诉Spring MVC,应该查找请求中的user_id参数,并将其值绑定到名为userId的方法参数上。如果请求中没有user_id参数,并且required属性被设置为false,则userId参数将为null(或者对于基本类型,如果你没有提供默认值或使用包装类型,则可能会抛出异常)。

 

@PathVariable:接收路径参数

@RequestMapping("/user/{id}") 
public String getUserById(@PathVariable("id") Long userId) {
 ... 
}

在这个例子中,/user/{id} 定义了一个 URL 模板,其中 {id} 是一个变量。当请求匹配这个模板时,{id} 的值将被捕获,并通过 @PathVariable("id") 注解绑定到 userId 参数上


2. 服务层(Service)注解


@Service:标识一个类为服务层的组件。服务层通常包含应用程序的业务逻辑。
用法:

@Service 
public class MyService {
 ... 
}


3. 数据访问层(Repository)注解


@Repository:表示持久层的注解,用于标识数据访问组件。
用法:

@Repository 
public class MyRepository {
 ... 
}


4. 请求参数相关注解

@RequestBody:

指示方法返回的对象应该直接写入HTTP响应体中。通常用于接收JSON或XML格式的数据。

@RequestMapping("/data") 
@ResponseBody 
public Map<String, Object> getData() {
 ... 
}

@SessionAttribute:

从Session中获取值

@RequestHeader:

从Header中获取值

 Cookie和Session

Cookie 和Session都是会话机制, Cookie是客⼾端机制, Session是服务端机制.
⼆者通过SessionId来关联.
Spring MVC内置HttpServletRequest, HttpServletResponse两个对象.
需要使⽤时, 直接在⽅法中添加对应参数即可,
Cookie和Session可以从HttpServletRequest中来获取, 也可以直接使⽤HttpServletResponse设置Http响应状态码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值