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

devtools/2024/9/22 10:50:30/

Spring MVC

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

SpringMVC 中的常用注解及其用法

1. 控制器层

@Controller

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

java">@Controller
public class MyController { ... 
}

@RequestMapping:

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

类级别用法:

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

方法级别用法:

java">@Controller 
@RequestMapping("/MyController") 
public class MyController { @RequestMapping("/hello") public String hello() { ... } 
}

@RestController:

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

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

java">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:后端参数重命名

java">@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:接收路径参数

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

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


2. 服务层(Service)注解


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

java">@Service 
public class MyService {... 
}


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


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

java">@Repository 
public class MyRepository {... 
}


4. 请求参数相关注解

@RequestBody:

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

java">@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响应状态码


http://www.ppmy.cn/devtools/89018.html

相关文章

面试官:post为什么会发送两次请求?

之前有人跟我们说&#xff0c;出去面试的时候&#xff0c;有时候会遇到一些让人头疼的问题&#xff0c;比如有一次去字节面试&#xff0c;面试官就问了一个让他很奇怪的问题&#xff1a;“为啥POST请求有时候会发送两次呢&#xff1f;”这个问题听起来挺玄乎的&#xff0c;但其…

全面解锁:通过JSP和Ajax实现钉钉签到数据展示及部门筛选功能

要在JSP页面中调用钉钉的签到接口&#xff0c;并将签到数据展示在页面上&#xff0c;同时提供部门筛选功能&#xff0c;你可以按照以下步骤操作&#xff1a; 准备钉钉API&#xff1a; 你需要首先获取钉钉开放平台的API凭证&#xff08;如access_token&#xff09;。请参考钉钉开…

用virtualbox虚拟机扩容后无法开机,怎么办,怎么办,求求了

首先&#xff0c;虚拟机刚开始空间只有50G,下载几个项目后&#xff0c;就提示空间不足了&#xff0c;就随便百度了一下&#xff0c;很快就加到了200G,然后&#xff0c;刚开始没有成功&#xff0c;就重启虚拟机验证一下。 再然后&#xff0c;再然后&#xff0c;虚拟机就起不来了…

java基础--字符串用法

一、前言&#xff08;在java中字符串的重要性&#xff09; 在 Java 编程中&#xff0c;字符串&#xff08;String&#xff09;的重要性不言而喻&#xff0c;它几乎贯穿于所有的应用程序和系统中。以下是 Java 中字符串重要性的几个方面&#xff1a; 1. 数据表示和处理 文本数…

[Bugku] web-CTF靶场系列详解①!!!

平台为“山东安信安全技术有限公司”自研CTF/AWD一体化平台&#xff0c;部分赛题采用动态FLAG形式&#xff0c;避免直接抄袭答案。 平台有题库、赛事预告、工具库、Writeup库等模块。 ------------------------------- Simple_SSTI_1 启动环境&#xff1a; 页面提示传入参数f…

数字电路设计常见术语

头阻&#xff08;Head-of-Line blocking&#xff09; 交织&#xff08;interleaving&#xff09; 加速比&#xff08;speedUP&#xff09; 乱序&#xff08;outOfOrder&#xff09; 保序&#xff08;order&#xff09; 乱序重排&#xff08;reorder&#xff09; 发出未回…

8月17日|广州|Cocos开发者沙龙不见不散!

6月底举行的Cocos成都沙龙吸引了近200位开发者和10多家发行&#xff0c;得到了大家的一致好评。 Cocos广州沙龙即将到来&#xff0c;会邀请更多KOL和头部发行、渠道嘉宾分享行业经验&#xff0c;让大家实现技术干货、游戏合作、行业信息多丰收。 活动主题&#xff1a;小游戏与出…

关于JS中的AO对象

在JavaScript中&#xff0c;AO对象&#xff08;Activation Object&#xff0c;激活对象&#xff09;是与函数执行上下文相关的概念。每当一个函数被调用时&#xff0c;都会创建一个新的执行上下文&#xff0c;这个执行上下文包含一个AO对象&#xff0c;用于存储在函数执行期间创…