首页 > 其他分享 >SpringMVC 接收数据

SpringMVC 接收数据

时间:2024-08-16 11:39:51浏览次数:8  
标签:RequestMapping return String SpringMVC user 接收数据 public 请求

SpringMVC 接收数据

1.设置访问路径

@RequestMapping 将handler注册到 HandlerMapping中

  1. @RequestMapping 可以用到方法上也可以用到类上

    用到方法上,访问某个路径就直接执行这个方法。如果方法上都有某一个路径字段,就可以把他提取出来放到类上。需要注意的是放在类上,方法上也必须有这个注解,否则HandlerMapping找不到这个方法

    如果类上指定了路径,而方法上没有指定路径,那么访问类上的路径就会走这个方法

    @Controller
    @RequestMapping("user")
    public class UserController {
    ​
        @RequestMapping
        public String index(){
            return null;
        }
        @RequestMapping("login")
        public String login(){
            
            return null;
        }
    ​
    }

    当访问 user 路径时,会走index方法,访问 user/login 会走 login方法

  2. @RequestMapping 的地址可以有多个,传入地址的数组即可

  3. 支持模糊地址

    /user/* 表示user路径下任意一层地址

    /user/** 表示 user路径下的任意层地址

  4. 指定请求方式

    在 @RequestMapping 中默认是任何请求方式都能访问,可以使用 method=RequestMethod.POST 等指定请求方式,请求方式也可以传入数组

    @RequestMapping(method = RequestMethod.GET)
    public String index(){
        return null;
    }

    如果前端的请求方式不符合,会报405的错误

    除了@RequestMapping 注解之外,还有一些已经指定了请求方式的注解

    • GetMapping

    • PostMapping

    • PutMapping

    • DeleteMapping

    这几个注解只能用在 方法上,内部已经指定了响应的请求方式

 

2.param接收参数

  1. 直接接收

    直接在handler的形参列表上接收,要求是形参名和类型与传递的参数相同

    访问地址:localhost:8080/param/getter?name=hhh&age=18

    @Controller
    @RequestMapping("param")
    public class ParamController {
        @GetMapping("getter")
        @ResponseBody
        public String getParam(String name,int age){
            return "name: " + name + " age: "  + age;
        }
    }

    这种方式,不传递也不会报错

  2. 使用 @RequestParam

    @RequestParam 注解加在形参列表上。

    • 可以指定前端传递过来的参数名。

    • 可以要求传递参数不能是空。内部有一个required,默认值是true,也就是必须传递,不传会报400异常

    • 也可以给定一个默认值。,内部有一个 defaultValue,指定默认值

    访问地址:localhost:8080/param/data?account=lalala

    @GetMapping("data")
    @ResponseBody
    public String data(@RequestParam("account") String username,
                       @RequestParam(required = false, defaultValue = "1")int page){
        return "account:" + username + " page:" + page;
    }

    这里指定了第一个请求参数叫 account,并且使第二个请求参数可以不传递,如果不传递默认值是1

  1. 集合接值

    如果同一个key,对应了很多value,那么就可以用集合去接收请求参数

    访问地址:localhost:8080/param/data1?list=zhangsan&list=lisi

    @GetMapping("data1")
    @ResponseBody
    public String data1(@RequestParam List<String> list){
        System.out.println("list = " + list);
        return "ok";
    }

    这里的list形参列表也需要加上 @RequestParam

  2. 使用实体对象接值

    要求请求参数的名和实体类对象的属性相同

    如果没有传递对应的请求参数,那么就是该对象属性的默认值

    @GetMapping("data3")
    @ResponseBody
    public String data3(User user){
        return user.toString();
    }

 

3.路径接收参数

访问地址:localhost:8080/param/path/root/12345

@GetMapping("path/{account}/{password}")
@ResponseBody
public String pathData(@PathVariable String account, @PathVariable String password){
    return "username:" + account + "  password:" + password;
}

这里用的注解是 @PathVariable 他也可以指定传递参数名和传递的必须性

 

4.json 参数接收

接收前端传递的json数据也是需要一个实体类,实体类的名称和传递的参数要相同

并且请求方式必须是 Post请求

然后在handler的形参上使用 @RequestBody

@PostMapping("json")
@ResponseBody
public String jsonData(@RequestBody User user){
    return user.toString();
}

这样之后,还不能接收json数据,因为java 并不支持json格式,还要以下两个步骤

  • 导入json依赖

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.17.2</version>
    </dependency>
  • 在配置类上加入 @EnableWebMvc 注解,给 HandlerAdapter配置json 转换器

    @Configuration
    @ComponentScan("com.ztone.param")
    @EnableWebMvc
    public class MvcConfig {
        @Bean
        public RequestMappingHandlerMapping handlerMapping(){
            return new RequestMappingHandlerMapping();
        }
    ​
        @Bean
        public RequestMappingHandlerAdapter handlerAdapter(){
            return new RequestMappingHandlerAdapter();
        }
    }

@EnableWebMvc 注解 会自动将 HanlderAdapter 和 HandlerMapping 添加到ioc 容器,并且会给 HandlerAdapter 添加 jacksonjson 处理器,不用自己注册这两个bean了

 

5.接收cookie 和请求头

  1. 接收cookie 需要在形参上使用 @CookieValue 来指定参数接收的是 cookie,可以指定cookie的名称

  2. 接收请求头 使用 @RequestHeader ,也可以指定请求头的名称

 

 

6.获取原生对象

想要接收原生对象 如HttpServletRequest 、HttpServletResponse、HttpSession等,直接在形参列表传入即可。

获取ServletContext(可以读取最大的配置文件、 是全局最大的共享域、核心api)

  • 方案一:request.getServletContext() / session.getServletContext()

  • 方案二:

    @Controller
    public void ApiController{
        @Autowired
        private ServletContext servletContext
    }

    程序启动后,ServletContext会自动装入到ioc容器,所以使用 @Autowired自动装配,就可以使用。

标签:RequestMapping,return,String,SpringMVC,user,接收数据,public,请求
From: https://www.cnblogs.com/wztblogs/p/18362558

相关文章

  • Springmvc -- 使用`@RequestParam`接收数组类型参数
    在SpringMVC中,处理数组类型的请求参数是一个常见需求,尤其是在处理表单数据或查询参数时。SpringMVC提供了多种方式来接收数组类型的请求参数,包括使用@RequestParam注解、直接绑定到方法参数、以及使用@ModelAttribute注解。本文将深入探讨这些方式的用法、优缺点以及如何......
  • SpringMVC流程
    SpringMVC流程 主要组件:DispatcherServlet:SpringMVC提供,我们需要使用web.xml配置使其生效,它是整个流程处理的核心,所有请求都经过它处理和分发。HandlerMapping:SpringMVC提供,我们需要进行IoC配置,使其加入到IoC容器。它内部缓存handler(controller方法),和handler访问路径数......
  • SpringMVC - 初识
    1.简介SpringMVC是一个创建Web应用程序的框架,它是遵循Model-View-Controller的设计模式。SpringMVC通过DispatcherServlet来接收请求,然后对应对具体的controllers,models和views.2.一个HelloWorld事例1.添加maven依赖<dependency><groupId>org.springframework<......
  • springMVC 请求流程解析
    @SuppressWarnings("deprecation")protectedvoiddoDispatch(HttpServletRequestrequest,HttpServletResponseresponse)throwsException{ //实际处理时用的请求,如果不是上传请求,则直接使用接收到的request,否则封装成上传的request HttpServletRequestprocessedRequ......
  • 新建一个SpringMVC项目
    新建一个SpringMVC项目一、思路需求分析,主要考虑用例图、活动图建数据库新建maven项目设置项目的web框架pom.xml中导入依赖包,数据库、连接池、mybatis,mybatis-spring、spring、junit编写spring主配置文件applicationContext.xml,用于整合框架编写web.xml文件,DispatcherSer......
  • 《学会 SpringMVC 系列 · 剖析出参处理》
    ......
  • [Spring]SpringMVC
    SpringMVC工作原理SpringMVC的核心组件有哪些?记住了下面这些组件,也就记住了SpringMVC的工作原理。DispatcherServlet:核心的中央处理器,负责接收请求、分发,并给予客户端响应。HandlerMapping:处理器映射器,根据URL去匹配查找能处理的Handler,并会将请求涉及到的拦截器......
  • golang 如从一个通道(channel)接收数据时在预期时间没接收到,可以使用select语句和time.A
    在Go语言中,如果希望在从一个通道(channel)接收数据时设置超时,可以使用select语句和time.After函数。以下是一个示例代码,演示了如何实现这个功能:packagemainimport("fmt""time")funcmain(){//创建一个通道ch:=make(chanstring)//启动一......
  • SpringMVC?
    SpringMVC简介1、什么是MVCMVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分M:Model,模型层,指工程中的JavaBean,作用是处理数据JavaBean分为两类:一类称为实体类Bean:专门存储业务数据的,如Student、User等一类称为业务处理Bean:指Service或Dao对象,专门用于......
  • SpringMVC请求执行流程
    SpringMVC是一个基于Spring框架的MVC(Model-View-Controller)框架,它简化了Web应用程序的开发。在SpringMVC中,请求的执行流程是一个精心设计的过程,涉及多个核心组件的协同工作。以下是对SpringMVC请求执行流程的详细解析,内容不少于2000字。一、SpringMVC请求执行流程概述Spri......