跳到主要内容SpringMVC 获取 HTTP 请求元素详解 | 极客日志Javajava
SpringMVC 获取 HTTP 请求元素详解
SpringMVC 提供了多种注解和接口用于获取 HTTP 请求中的元素。如何使用 @PathVariable 获取 URL 路径参数,利用 @RequestPart 处理文件上传,通过 HttpServletRequest 或 @CookieValue/@SessionAttribute 操作 Cookie 与 Session,以及使用 @RequestHeader 获取请求头信息。内容涵盖常用方法示例及注意事项,帮助开发者快速掌握 HTTP 元素获取技巧。
雾岛听风1 浏览 一、获取 URL 中的参数 @PathVariable
path variable:路径变量。@PathVariable 注解可以获取 URL 中的参数,使用注意:
- 写在方法的参数名前,每个变量都要写。
- 当 URL 中的变量与方法中的变量同名时,可以不在@PathVariable 上指定 URL 的变量名。
- 当要对拿到的 URL 变量重命名,要在@PathVariable() 括号中写上 URL 的名字。
- URL 中的参数必传。
@RequestMapping("/user/{id}")
public String getUser(@PathVariable("id") String id) {
return "success";
}
二、上传文件 @RequestPart
- 上传文件使用 MultipartFile 类下的 transferTo 方法。
- 使用@RequestPart 注解可以进行重命名。
- 记得抛异常。
@RequestMapping("/r2")
public String getFile(@RequestPart("file11") MultipartFile file) throws IOException {
String fileName = file.getOriginalFilename();
file.transferTo(new File("E:/" + file.getOriginalFilename()));
return "上传成功" + fileName;
}
前端传参说明:
在 Body 里面找 form-data 传 File 类型。
三、获取 Cookie/Session
3.1 HttpServletRequest 和 HttpServletResponse
- HttpServletRequest 这个类可以拿到 HTTP 请求中的东西。
- HttpServletResponse 这个类可以拿到 HTTP 响应中的东西,还可以进行修改。
3.2 获取 Cookie
3.2.1 使用 HttpServletRequest
只需要调用该类下的 getCookies 方法即可。
@RequestMapping("r3")
public String r3(HttpServletRequest request) {
Cookie[] cookies = request.getCookies();
return "获取成功";
}
3.2.2 使用注解@CookieValue
在注解中写下 Cookie 中变量的名,然后后面跟着要赋值的变量类型与名字。这种方法每次只能获得一个 Cookie 变量。
@RequestMapping("/r4")
public String r4(@CookieValue("name") String name) {
return name;
}
3.3 设置 session
使用 HttpServletRequest 下的 getSession 方法,拿到 sessionId,拿到 session。
HttpSession getSession(boolean create);
- 默认为 true,如果没有拿到 session,返回一个空 HttpSession 对象。
- 如果为 false,没有拿到 session,返回一个 null。
@RequestMapping("/r5")
public String setSession(HttpServletRequest request) {
HttpSession session = request.getSession();
session.setAttribute("name", "lisi");
session.setAttribute("age", "88");
return "设置成功";
}
3.4 获取 session
3.4.1 使用 HttpServletRequest
使用 HttpServletRequest 类下的 getSession 方法拿到 session,再通过 HttpSession 类下的方法 getAttribute 获取 session 中的对象 Object getAttribute(String name);。
@RequestMapping("/r6")
public String r5(HttpServletRequest request) {
HttpSession session = request.getSession(false);
if (null == session) {
return "用户未登录";
} else {
return "用户名:" + (String) session.getAttribute("name") + "用户年龄" + (String) session.getAttribute("age");
}
}
3.4.2 直接使用 HttpSession
相当于 HttpSession session = request.getSession(); 直接在方法参数完成。
@RequestMapping("/r8")
public String r5(HttpSession session) {
if (null == session) {
return "用户未登录";
} else {
return "用户名:" + (String) session.getAttribute("name") + "用户年龄" + (String) session.getAttribute("age");
}
}
3.4.3 使用注解@SessionAttribute
注解中 value 代表:session 中的对象,required 调配没拿到 session 时返回什么,true 返回空 HttpSession 对象,false 返回 null。
@RequestMapping("r7")
public String r6(@SessionAttribute(value = "name", required = false) String name) {
System.out.println(name);
return name;
}
4.1 使用 HttpServletRequest
使用 HttpServletRequest 类下的 getHeader 方法,方法中填入想要的 header 中的参数名称,拿到 header 下的参数。
@RequestMapping("/r9")
public String getHeader(HttpServletRequest request) {
String header = request.getHeader("user-agent");
return "获取到 " + header;
}
在注解中写下 Header 中参数的名,然后后面跟着要赋值给的变量类型与名字。
@RequestMapping("/r10")
public String getHeader2(@RequestHeader("user-agent") String header) {
return "获取到 " + header;
}
微信扫一扫,关注极客日志
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具
- Keycode 信息
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
- Escape 与 Native 编解码
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
- JavaScript / HTML 格式化
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
- JavaScript 压缩与混淆
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online