Springmvc-接受参数的几种方式

时间:2025-03-20 09:50:24

/*传参的方式:
* request。来接收参数
* public String login(HttpServletRequest request){}
*
* 2.直接用页面传过来的数据原型来接收(String username,String password)
* public String login(String username,String password){}
*
*3.当请求参数和接收参数不一致时,可以通过
*public String login(@RequestParam(“username”) String name,@RequestParam(“password”) String pwd,){}
*
*4.通过对象来接受参数。先建立一个实体类,和页面传过来的属性值相对应必须。
* public String login(User user){}

*
*
*5.@PathVariable//前者是从路径中获取变量,也就是把路径当做变量
@RequestParam//后者是从请求里面获取参数,
RequestParam 汉语意思就是: 请求参数。顾名思义 就是获取参数的

PathVariable 汉语意思是:路径变量。顾名思义,就是要获取一个url 地址中的一部分值,那一部分呢?

RequestMapping 上说明了@RequestMapping(value="/emp/{id}"),我就是想获取你URL地址 /emp/ 的后面的那个 {id}的

@PathVariable是用来获得请求url中的动态参数的

因此,就看‘?’ 若是想获取 ‘?’ 后面的pageNo 的值 ‘2’, 就使用RequestParam 。若想获取的是url 地址的一部分 ‘7’ 就使用PathVariable

、@pathVariable和RequestParam的区别:

顾名思义,前者是从路径中获取变量,也就是把路径当做变量,后者是从请求里面获取参数,从请求来看:

/Springmvc/user/?pageSize=3&pageNow=2

pageSize和pageNow应该是属于参数而不是路径,所以应该添加@RequestParam的注解。

如果做成如下URL,则可以使用@PathVariable

someUrl/{paramId},这里的paramId是路径中的变量,应使用@pathVariable
*
* */
*
6.@ModelAttribute获取POST请求的FORM表单数据

<form method="post" action="">
 a: <input id="a" type="text"   name="a"/>
 b: <input id="b" type="text"   name="b"/>
 <input type="submit" value="Submit" />
</form>

7.**@RequestBody 是用来接收到请求中放入body的参数。(一般讲参数扔到body中的,是post)

8.@CookieValue 与@RequestBody的用法类似,不过它是可以找到cookie中的参数**

使用@requestBody.当请求content_type为:application/json类型的请求,数据类型为json时, json格式如下:{“aaa”:“111”,“bbb”:“222”}
不使用@requestBody.当请求content_type为:application/x-www-form-urlencoded类型的或multipart/form-data时,数据格式为aaa=111&bbb=222。

Httpservlet请求的实例

package com.qst.controller;

import org.springframework.http.HttpRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpServletRequest;

@Controller
@RequestMapping("/user")
public class UserController {


    /*传参的方式:
    *  request。来接收参数
    * public  String login(HttpServletRequest request){}
    *
    * 2.直接用页面传过来的数据原型来接收(String username,String password)
    * public  String login(String username,String password){}
    *
    *3.当请求参数和接收参数不一致时,可以通过
    *public  String login(@RequestParam("username") String name,@RequestParam("password") String pwd,){}
    *
    *4.通过对象来接受参数。先建立一个实体类,和页面传过来的属性值相对应必须。
    *  public  String login(User user){}
    *
    * */
    @RequestMapping("/login")
    public  String login(HttpServletRequest request){
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        if ("zhangsan".equals(username) && "123456".equals(password))
        {
            return "success";
        }else {
            return "error";

        }



    }
}