从URL请求中获取请求参数方式有以下五种
方式 | 描述 |
---|---|
一 | 将请求参数放在Controller参数列表中 |
二 | 通过HttpServletRequest获取请求参数 |
三 | 使用ModelAttribute + POJO的方式,将请求参数绑定在POJO中 |
四 | 使用@RequestAttribute方式获取绑定请求参数 |
五 | 使用@PathVariable方式获取请求参数 |
六 | 使用@CookieValue方式获取Cookie参数 |
方式一:将请求参数放在Controller参数列表中
package controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
/**
* Created by luckyboy on 2018/7/17.
*/
@Controller
public class RequestRevceiveController {
private static Logger logger = LoggerFactory.getLogger(RequestRevceiveController.class);
/**
* 1、将表单参数直接写入到controller方法的参数列表中
* @param username
* @param password
* @return
*/
@RequestMapping(value="/method1",method = RequestMethod.POST)
public String method1(String username,String password){
logger.info("method1 : "+username+"--"+password);
return "/index";
}
方式二:通过HttpServletRequest获取请求参数
package controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
/**
* Created by luckyboy on 2018/7/17.
*/
@Controller
public class RequestRevceiveController {
private static Logger logger = LoggerFactory.getLogger(RequestRevceiveController.class);
/***
* 2、使用HttPServletRequest 获取参数
* @param request
* @return
*/
@RequestMapping(value="method2",method = RequestMethod.POST)
public String method2(HttpServletRequest request){
String username = request.getParameter("username");
String password = request.getParameter("password");
logger.info("method2 : "+username+"--"+password);
return "/index";
}
}
方式三:使用ModelAttribute + POJO的方式,将请求参数绑定在POJO中
package controller;
import entity.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
/**
* Created by luckyboy on 2018/7/17.
*/
@Controller
public class RequestRevceiveController {
private static Logger logger = LoggerFactory.getLogger(RequestRevceiveController.class);
/**
* 3、使用@ModelAttribute + POJO的方式获取参数
* @param user
* @return
*/
@RequestMapping(value="/method3")
public String method3(@ModelAttribute("user") User user){
logger.info("method3 : "+user.getUsername()+"--"+user.getPassword());
return "/index";
}
}
方式四:使用@RequestAttribute(value=”?”,required=false/true)方式获取绑定请求参数
package controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
/**
* Created by luckyboy on 2018/7/17.
*/
@Controller
public class RequestRevceiveController {
private static Logger logger = LoggerFactory.getLogger(RequestRevceiveController.class);
/**
* 4、使用@RequestParam(value="参数名",required=false/true)
* 如果required = false,表示请求参数中不一定要有这个参数
* 如果required = true,表示请求参数中一定要有这个参数,否则会出错
* @param username
* @param password
* @return
*/
@RequestMapping(value="/method4")
public String method4(@RequestParam(value = "username",required = false )String username,
@RequestParam(value = "password",required = false ) String password){
logger.info("method4 : "+username +"--"+password);
return "/index";
}
}
方式五:使用@PathVariable方式获取请求参数
package controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
/**
* Created by luckyboy on 2018/7/17.
*/
@Controller
public class RequestRevceiveController {
private static Logger logger = LoggerFactory.getLogger(RequestRevceiveController.class);
/**
* 5、使用@PathVariable注解方式获获取路径中传递参数
* @param username
* @param password
* @return
*/
@RequestMapping(value="/method5/{username}/{password}",method=RequestMethod.GET)
public String method5(@PathVariable String username,@PathVariable String password){
logger.info("method5 : "+username +"--"+password);
return "/index";
}
}
使用@PathVariable方式获取请求参数,那么URL一定是 http://http:localhost:8088/method5/markliwei/mark这样的形式,不适合用于表单提交的方式,比较适合用于URL重写的方式获取请求参数。