SpringMVC的五种请求传参方式

1、传统传参方式

  方法参数中使用request,通过request.getParameter("参数名"),再封装到bean中

@RequestMapping("/test01")
public ModelAndView test01(HttpServletRequest request){
      String username = request.getParameter("username");
      String password = request.getParameter("password");

      System.out.println(username);
      System.out.println(password);
      return null;
}

2、简单类型参数和RequestParam注解

  如果请求参数和Controller方法的形参同名,可以直接接收

  如果请求参数和Controller方法的形参不同名,可以使用@RequestParam注解贴在形参前,设置对应的参数名称

@RequestMapping("/test02_1")
public ModelAndView test02_1(String username,String password){
      System.out.println(username);
      System.out.println(password);
      return null;
}
@RequestMapping("/test02_2")
public ModelAndView test02_2(@RequestParam("username") String name,@RequestParam(value = "password",defaultValue = "1234987") String pwd){
      //使用了@RequestParam的参数不能传空值
      // required:表示是否必须要传值
      // defaultValue:当没有该请求参数时,SpringMVC给请求参数的默认值
      System.out.println(name);
      System.out.println(pwd);
      return null;
}

3、对象传参

  此时能够自动把参数封装到形参的对象上

  注意:1、请求参数必须和对象的属性同名

        2、此时对象会直接放入request作用域中,名称为类型首字母小写

     3、@ModelAttribute设置请求参数绑定到对象中并传到视图页面,设置key值

@RequestMapping("/test03")
public ModelAndView test03(@ModelAttribute("stu") Student student){
    /*可以使用对象作为方法的形参,同时接受接受前台的多个请求参数
      SpringMVC会基于同名匹配,将请求参数的值注入对应的对象中的属性中
      @ModelAttribute起名字key值*/
      System.out.println(student);
      ModelAndView mv = new ModelAndView();
      mv.setViewName("test2");
      return mv;
}

4、数组和List集合类型参数

  当前台页面传来的参数是参数名相同,参数值不同的多个参数时,可以直接封装到方法的数组类型的形参中,也可以直接封装到对象的集合属性中。

  比如批量删除时传来的参数。

RequestMapping("/test04")
public ModelAndView test04(String id[]){
    /*对于参数名相同的多个请求参数,可以直接使用数组作为方法的形参接收
      可以使用对象中的集合属性接收*/
      for (String i : id) {
          System.out.println(i);
      }
      return null;
}
@RequestMapping("/test05")
public ModelAndView test05(Student student){
      System.out.println(student.getId().size());
      for (String i : student.getId()) {
          System.out.println(i);
      }
      return null;
}

5、使用Restful

  Restful是一种软件架构风格,严格上说是一种编码风格,其充分利用 HTTP 协议本身语义从而提供了一组设计原则和约束条件。

  主要用于客户端和服务器交互类的软件,该风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。 在后台,RequestMapping标签后,可以用{参数名}方式传参,同时需要在形参前加注解@PathVarible,假如前台的请求地址为localhost:8080/delete/3

@RequestMapping("/delete/{id}")
public ModelAndView test4(@PathVariable("id")Long id){
    System.out.println("delete");
    System.out.println(id);
    return null;
}

原文地址:https://www.cnblogs.com/xfdhh/p/11517534.html

时间: 2024-10-27 14:27:04

SpringMVC的五种请求传参方式的相关文章

11-scrapy(递归解析,post请求,日志等级,请求传参)

一.递归解析: 需求:将投诉_阳光热线问政平台中的投诉标题和状态网友以及时间爬取下来永久储存在数据库中 url:http://wz.sun0769.com/index.php/question/questionType?type=4&page= 需求分析:每一个页面对应的是一个url,scrapy框架发起请求对一个url进行解析,解析完后又对另一个url发起请求进行解析. 实现方案: 1.可以将每一个页面的url放在爬虫程序中的start_urls中请求.(不推荐,累死人) 2.另一种请求使用R

Javaweb的七大传参方式和以及各自特点

学习jsp一段时间,觉得还是需要把自己学习一些东西整理了一下,第一次发东西,还请各位多多支持 1.表单提交 html自带的from方法,简单易懂,便于操作,依靠于<from>标签中的type="submit"进行表单传输,或者根据js进行控制提交表单.其中由method属性决定以post或者get方式进行提交. jsp代码: 1 <form id="test" action="testservlet" method="

vue请求中 post get传参方式是不同的哦

我在学习vue,项目中post请求,get请求都用到了,我发现传参方式是不一样的. post请求的例子: checkin (){ this.$http.post('my url',{ mobilePhone:this.phone, password:this.password },{ emulateJSON: true } ).then(function(res){ this.$root.userid=res.data.userid; console.log(this.$root.userid)

Web API中的传参方式

在Restful风格的WebApi的里面,API服务的增删改查,分别对应着Http Method的Get / Post / Delete /Put,下面简单总结了Get / Post /Delete /Put的传参方式 一.Get传参 get设计成传输小数据,而且最好是不修改服务器的数据,所以浏览器一般都在地址栏里面可以看到,数据放在url的QueryString中. (一)简单类型 $(function () { $.ajax({ type: 'get', url:'http://localh

mock和axios常见的传参方式

第一次接手项目,传参方式还有些吃力,因此做一下总结. 首先我们需要会看swagger中的接口.里面写了某个接口需要接收什么样的值,前端怎么传递这个值 在mock中的传参方式: mock中传参的方式有两个参数,一个是path对象,一个是data对象. path想当于拼接在url地址上的参数, data是url后面的参数. 1.get请求 如果url后面有opts的参数,则说明他需要传递参数.要不就不用传递了,直接写个url就好了,不用拼接参数.(请看下图) 图一是接口 图二是调用了这个接口. 这个

java 传参方式--值传递还是引用传递

java 传参方式--值传递还是引用传递 参数是按值而不是按引用传递的说明 Java 应用程序有且仅有的一种参数传递机制,即按值传递.写它是为了揭穿普遍存在的一种神话,即认为 Java 应用程序按引用传递参数,以避免因依赖“按引用传递”这一行为而导致的常见编程错误. 对此节选的某些反馈意见认为,我把这一问题搞糊涂了,或者将它完全搞错了.许多不同意我的读者用 C++ 语言作为例子.因此,在此栏目中我将使用 C++ 和 Java 应用程序进一步阐明一些事实. 要点 读完所有的评论以后,问题终于明白了

爬虫scrapy组件 请求传参,post请求,中间件

post请求 在scrapy组件使用post请求需要调用 def start_requests(self): 进行传参再回到 yield scrapy.FormRequest(url=url,formdata=data,callback=self.parse)进行post请求 其中FormRequest()为post 请求方式 import scrapy class PostSpider(scrapy.Spider): name = 'post' # allowed_domains = ['ww

react中的传参方式

react是一个SPA模式,即组件嵌套租,在一个单页面的应用中组件间的数值传递是必不可少的,主要的传参方式大致有一下几种: 1,在挂载的地方给组件传参 ReactDOM.rander(<a name='a' age={16}/>,app) 在渲染的时候,直接给挂载的组件传参. 2,父子传参 父子传参可以用props和ref两种方式,1,props方式传参,父组件通过改变自己的参数并且通过props将状态传递给子组件,并在子组件中显示.2,通过ref传参,这种方式是通过子组件自己的方法改变自己的

python爬虫---scrapy框架爬取图片,scrapy手动发送请求,发送post请求,提升爬取效率,请求传参(meta),五大核心组件,中间件

# settings 配置 UA USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36' 一丶scrapy的图片数据爬取(流数据的爬取) ? scrapy中封装好了一个管道类(ImagesPipeline),基于该管道类可以实现图片资源的请求和持久化存储 编码流程: 爬虫文件中解析出图片的地址 将