SpringMvc-request

Interceptors :: Spring Frameworkicon-default.png?t=N7T8https://docs.spring.io/spring-framework/reference/web/webmvc/mvc-config/interceptors.html

StandsSpringBoot: 学习

注解

1. @RequestMapping("/sc")

2. RequestParam

  1. value:参数名 可以不加
  2. required:是否必须。默认为 true, 表示请求参数中必须包含对应的参数,若不存在,将抛出异常
  3. defaultValue: 默认值,当没有传递参数时使用该值

http://localhost:8080/param/testParam?username=ww&password=sss

@GetMapping("/testParam")
public String testParam(@RequestParam String username, String password) {
    System.out.println("actuator");
    System.out.println("用户名:" + username);
    System.out.println("密码:" + password);
    return "success";
}
password 也可以传递过来

3. PathVariable

映射 URL 绑定的占位符

@PathVariable(required = false) 为false 则为null

@GetMapping(value = "/testPathVariable/{sid}")
public Map testPathVariable(@PathVariable String sid) {
    HashMap<String, String> stringStringHashMap = new HashMap<>();
    stringStringHashMap.put("sid",sid);
    return stringStringHashMap;
}

4. RequestBody

@PostMapping("/bean")
public Account bean(@RequestBody Account account) {
    return account;
}

5. RequestHeader

@RequestMapping(value="/testRequestHeader")
public String testRequestHeader(@RequestHeader("Accept") String header)  {
    return header;
}

6. session

@GetMapping(value = "/testSessionAttributes")
public ResultVO<Object> testSessionAttributes( HttpSession session) {
    session.setAttribute("msg","dd");
    return ResultUtils.resultSuccess(ResultEnumsInfo.SUCCESS);
}
@GetMapping(value = "/getSessionAttributes")
public String getSessionAttributes(HttpSession session) {
    Object msg = session.getAttribute("msg");
    return (String) msg;
}
@DeleteMapping(value = "/delSessionAttributes")
public String delSessionAttributes(HttpSession session) {
    session.removeAttribute("msg");
    return "success";
}

7. CookieValue

@GetMapping(value = "/testCookieValue")
public String testCookieValue(@CookieValue("JSESSIONID") String cookieValue) {
    System.out.println(cookieValue);
    return cookieValue;
}

8. ModelAttribute

  1. 出现在方法上,表示当前方法会在控制器的方法执行之前先执行。它可以修饰没有返回值的方法,也可以修饰有具体返回值的方法。
  2. 属性: value:用于获取数据的 key。key 可以是 POJO 的属性名称,也可以是 map 结构的 key。
  3. 应用场景 当表单提交数据不是完整的实体类数据时,保证没有提交数据的字段使用数据库对象原来的数据。例如: 我们在编辑一个用户时,用户有一个创建信息字段,该字段的值是不允许被修改的。在提交表单数据是肯定没有此字段的内容 一旦更新会把该字段内容置为 null,此时就可以使用此注解解决问题。

@RestController
public class ModelAttributeTest {

    /**
     * 无参测试
     *
     * @param user
     */
    @ModelAttribute
    public void showModel(User user) {
        System.out.println("执行了 showModel 方法" + user.getUsername());
    }

    @PostMapping("/testModelAttribute/no")
    public String testModelAttribute(User user) {
        System.out.println("执行了控制器的方法" + user.getUsername());
        return "success";
    }
    /***************************************************************************************************/

    /**
     * 有参
     * @param uname
     * @param map
     */
    @ModelAttribute
    public void showUser(String uname, Map<String, User> map) {
        System.out.println("showUser执行了...");
        // 通过用户查询数据库(模拟)
        User user = new User();
        user.setUsername(uname);
        user.setAge(20);
        user.setDate(new Date());
        map.put("abc", user);
    }

    @PostMapping(value = "/testModelAttribute")
    public String testModelAttributeyes(@ModelAttribute("abc") User user) {
        System.out.println("testModelAttribute执行了...");
        System.out.println(user);
        return "success";
    }
}

url 中特殊字符

字符

名称

16进制值

+

URL中的+表示空格

%2B

空格

URL中的空格可以用+号或者编码

%20

/

分割目录和子目录

%2F

?

分隔实际的URL和字符

%3F

%

指定特殊字符

%25

#

表示书签,URL传输参数时会自动截断#后面内容

%23

&

URL中的参数分隔符

%26

=

UEL中指定的参数值

%3D

常见问题

1. Springboot用@PathVariable传参,最后一个参数小数点(.)后面数据丢失问题

@RequestMapping("/v2/users/{email:.+}")

参考

https://developer.mozilla.org/zh-CN/docs/Web/HTTP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值