转自:
springmvc有哪几种请求参数的方式呢?
传送参数至后台,是每个系统都必须面对的事实,因为系统就是一个实现人机交互的工具,那么Spring MVC中如何在后台获取参数呢?
下文将一一道来,如下所示:
方式一:在Controller的形参中直接写入表单名称用于接收参数,此方式只可用于get提交,如下
/**
* 参数写入Controller中
* @param username
* @param pwd
* @return
*/
@RequestMapping("/createUser")
public String createUser(String username,String pwd) {
System.out.println("用户名:"+username);
System.out.println("密码:"+pwd);
return "jsp/test";
}
访问url http://localhost/springmvTest/test/createUser?username=java265&pwd=888888
注意事项:
表单参数名需同Controller中方法的参数名称一致
方式二:使用HttpServletRequest接收参数,此方法可接收post和get两种方式
/**
* 采用HttpServletRequest接收
* @param request
* @return
*/
@RequestMapping("/createUser2")
public String createUser2(HttpServletRequest request) {
String username=request.getParameter("username");
String pwd=request.getParameter("pwd");
System.out.println("用户名:"+username);
System.out.println("密码:"+pwd);
return "jsp/test";
}
方式三:、使用一个bean 接收参数,post方式和get方式都可以
操作步骤
1.创建一个bean和表单中参数对应
package com.java265.springmvc;
public class UserModel {
private String username;
private String pwd;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
2.采用bean封装并接收参数
/**
* 使用bean 接收参数信息
* @param user
* @return
*/
@RequestMapping("/createUser3")
public String createUser3(UserModel user) {
System.out.println("用户名:"+user.getUsername());
System.out.println("密码:"+user.getPassword());
return "jsp/test";
}
方式四:使用@PathVariable获取路径中的参数
/**
* 使用@PathVariable获取路径中的参数
* @param username
* @param pwd
* @return
*/
@RequestMapping(value="/createUser4/{username}/{pwd}",method=RequestMethod.GET)
public String addUser4(@PathVariable String username,@PathVariable String pwd) {
System.out.println("用户名:"+username);
System.out.println("密码:"+pwd);
return "demo/index";
}
访问url http://localhost/springmvTest/test/createUser4/java265/888888
会将url 按照模板的形式转换为变量,并绑定到userName和pwd变量上
方式五:运用@ModelAttribute 注解的方式 获得POST请求中FORM表单数据
Jsp表单如下:
<form action ="<%=request.getContextPath()%>/demo/createUser5" method="post">
用户名: <input type="text" name="username"/><br/>
密 码: <input type="password" name="pwd"/><br/>
<input type="submit" value="提交"/>
<input type="reset" value="重置"/>
</form>
Spring MVC Controller如下:
/**
* 5、使用@ModelAttribute注解获取POST请求的FORM表单数据
* @param user
* @return
*/
@RequestMapping(value="/createUser5",method=RequestMethod.POST)
public String createUser5(@ModelAttribute("user") UserModel user) {
System.out.println("用户名:"+user.getUsername());
System.out.println("密码:"+user.getPassword());
return "jsp/test";
}
方式六:使用注解@RequestParam绑定请求参数到方法入参
注意设置属性required的值,当值不存在时,会发生相应的异常信息
如: 请求username不存在时,我们可通过设置required=false,避免无值传入时报错
@RequestParam(value="username", required=false)
/**
* 运用注解@RequestParam绑定请求参数到方法入参
* @param username
* @param pwd
* @return
*/
@RequestMapping(value="/createUser6",method=RequestMethod.GET)
public String createUser6(@RequestParam("username") String username,@RequestParam("pwd") String pwd) {
System.out.println("用户名:"+username);
System.out.println("密码:"+pwd);
return "jsp/test";
}