SpringMVC探究-----常用获取传递参数的方法

时间:2023-03-09 15:52:17
SpringMVC探究-----常用获取传递参数的方法

   1.@RequestParam

@RequestParam 常用来映射请求参数,它有三个属性可以配置:

  • value 值即请求参数的参数名
  • required 该参数是否必须. 默认为 true
  • defaultValue 请求参数的默认值
<a href="springmvc/testRequestParam?username=yyx&age=29">Test
RequestParam</a>
@RequestMapping(value = "/testRequestParam")
public String testRequestParam(@RequestParam(value = "username") String username,
@RequestParam(value = "age", required = false, defaultValue = "0") int age) {
// @RequestParam(value = "age", required = false) Integer age) {
System.out.println("testRequestParam,username:" + username + ",age:" + age);
return SUCCESS;
}

注意:Integer值可以为null,int存入时必须有值

   2.@PathVariable

@PathVariable 可以来映射 URL 中的占位符到目标方法的参数中.体现restful风格

<a href="springmvc/testPathVariable/1">Test PathVariable</a>
@RequestMapping("/testPathVariable/{id}")
public String testPathVariable(@PathVariable("id") Integer id) {
System.out.println("testPathVariable:" + id);
return SUCCESS;
}

   3.HttpServletRequest

HttpServletRequest的getParameter(参数String)方法获取请求中的参数

<a href="springmvc/testServletAPI?userName=Tom">Test ServletAPI</a>
@RequestMapping("/testServletAPI")
public String testServletAPI(HttpServletRequest request)
throws IOException {
System.out.println(request.getParameter("userName"));
return SUCCESS;
}

注意:参数名称必须和登陆页面的name="userName"相同

   4.直接把表单的参数写在Controller相应的方法的形参中

<form action="${pageContext.request.contextPath}/springmvc/login"
method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="userName"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="userPwd"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="登陆"></td>
</tr>
</table>
</form>
/**
* 控制器中方法的形参userName,userPwd
* 名称必须和登陆页面的name="userName",name="userPwd"相同
* @param userName
* @param userPwd
* @return
*/
@RequestMapping("/login")
public String loginByUser(String userName, String userPwd) {
System.out.println("userName is:" + userName);
System.out.println("userPwd is:" + userPwd);
return "success";
}

  注意: name="userName"和String userName要一一对应,名称相同

   5.通过一个bean来接收

package com.springmvc.entity;

public class User {
private String userName;
private String userPwd; public User() {
super();
} public User(String userName, String userPwd) {
super();
this.userName = userName;
this.userPwd = userPwd;
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public String getUserPwd() {
return userPwd;
} public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
} @Override
public String toString() {
return "User [userName=" + userName + ", userPwd=" + userPwd + "]";
} }
<form action="${pageContext.request.contextPath}/springmvc/loginPoJo"
method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="userName"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="userPwd"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="登陆"></td>
</tr>
</table>
</form>
/**
* 登陆页面的name="userName",name="userPwd"必须和Bean类的属性名称相同
* @param user
* @return
*/
@RequestMapping("/loginPoJo")
public String loginByUser(User user) {
System.out.println("userName is:" + user.getUserName());
System.out.println("userPwd is:" + user.getUserPwd());
return "success";
}

注意: name="userName"和PoJo属性要一一对应,名称相同

相关文章