• 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才能大显身手。

  • 相关阅读:
    Linux——进程地址空间
    [负载均衡]-LVS
    vue-cli自定义创建项目-eslint依赖冲突解决方式
    二叉树(相关术语、创建、遍历、最大深度问题)梳理总结
    Mysql基础(二)——查询语句(select)
    【FPGA教程案例51】控制案例3——基于FPGA的PWM波形产生verilog实现
    嵌入式硬件库的基本操作方式与分析
    数据库(一):MySQL
    剑指offer 刷题速览
    图计算:基于SparkGrpahX计算聚类系数
  • 原文地址:https://blog.csdn.net/Leon_Jinhai_Sun/article/details/126553960