• SpringMVC基础:注解获取请求相关参数


    @RequestParam和@RequestHeader详解

    我们接着来看,如何获取到请求中的参数。

    我们只需要为方法添加一个形式参数,并在形式参数前面添加@RequestParam注解即可:

     

    1. @RequestMapping(value = "/index")
    2. public ModelAndView index(@RequestParam("username") String username){
    3. System.out.println("接受到请求参数:"+username);
    4. return new ModelAndView("index");
    5. }

    我们需要在@RequestParam中填写参数名称,参数的值会自动传递给形式参数,我们可以直接在方法中使用,注意,如果参数名称与形式参数名称相同,即使不添加@RequestParam也能获取到参数值。

    一旦添加@RequestParam,那么此请求必须携带指定参数,我们也可以将require属性设定为false来将属性设定为非必须:

    1. @RequestMapping(value = "/index")
    2. public ModelAndView index(@RequestParam(value = "username", required = false) String username){
    3. System.out.println("接受到请求参数:"+username);
    4. return new ModelAndView("index");
    5. }

    我们还可以直接设定一个默认值,当请求参数缺失时,可以直接使用默认值:

     

    1. @RequestMapping(value = "/index")
    2. public ModelAndView index(@RequestParam(value = "username", required = false, defaultValue = "伞兵一号") String username){
    3. System.out.println("接受到请求参数:"+username);
    4. return new ModelAndView("index");
    5. }

    如果需要使用Servlet原本的一些类,比如:

    1. @RequestMapping(value = "/index")
    2. public ModelAndView index(HttpServletRequest request){
    3. System.out.println("接受到请求参数:"+request.getParameterMap().keySet());
    4. return new ModelAndView("index");
    5. }

    直接添加HttpServletRequest为形式参数即可,SpringMVC会自动传递该请求原本的HttpServletRequest对象,同理,我们也可以添加HttpServletResponse作为形式参数,甚至可以直接将HttpSession也作为参数传递:

    1. @RequestMapping(value = "/index")
    2. public ModelAndView index(HttpSession session){
    3. System.out.println(session.getAttribute("test"));
    4. session.setAttribute("test", "鸡你太美");
    5. return new ModelAndView("index");
    6. }

    我们还可以直接将请求参数传递给一个实体类:

    1. @Data
    2. public class User {
    3. String username;
    4. String password;
    5. }

    注意必须携带set方法或是构造方法中包含所有参数,请求参数会自动根据类中的字段名称进行匹配:

    1. @RequestMapping(value = "/index")
    2. public ModelAndView index(User user){
    3. System.out.println("获取到cookie值为:"+user);
    4. return new ModelAndView("index");
    5. }

    @RequestHeader@RequestParam用法一致,不过它是用于获取请求头参数的,这里就不再演示了。

    @CookieValue和@SessionAttrbutie

    通过使用@CookieValue注解,我们也可以快速获取请求携带的Cookie信息:

    1. @RequestMapping(value = "/index")
    2. public ModelAndView index(HttpServletResponse response,
    3. @CookieValue(value = "test", required = false) String test){
    4. System.out.println("获取到cookie值为:"+test);
    5. response.addCookie(new Cookie("test", "lbwnb"));
    6. return new ModelAndView("index");
    7. }


    同样的,Session也能使用注解快速获取:

     

    1. @RequestMapping(value = "/index")
    2. public ModelAndView index(@SessionAttribute(value = "test", required = false) String test,
    3. HttpSession session){
    4. session.setAttribute("test", "xxxx");
    5. System.out.println(test);
    6. return new ModelAndView("index");
    7. }

    可以发现,通过使用SpringMVC框架,整个Web应用程序的开发变得非常简单,大部分功能只需要一个注解就可以搞定了,正是得益于Spring框架,SpringMVC才能大显身手。

  • 相关阅读:
    MySQL---JDBC编程
    沟通和礼仪
    FNPLicensingService.exe 总提示要联网
    洛谷题单 Part 2.3 二分答案
    FFmpeg部署及操作指南
    pycharm安装jupyter,用德古拉主题,但是输入行全白了,看不清,怎么办?
    windows11配置电脑IP
    有关架构设计的个人思考(本文后续不断修改更新)
    基于avaSwing开发普通计算器程序 课程设计 大作业源码
    个人游戏开发者的好时代
  • 原文地址:https://blog.csdn.net/Leon_Jinhai_Sun/article/details/126553960