首页 > 编程语言 > 详细

SpringMvc的可传递参数

时间:2020-09-12 18:48:45      阅读:54      评论:0      收藏:0      [点我收藏+]

相关链接

 SpringMvc 注解详解 

请求参数绑定

(1 )默认支持ServletAPI

HttpServlet 对象,主要包括HttpServletRequest 、HttpServletResponse 和HttpSession 对象

@RequestMapping("requestWried")
public void requestWried(HttpServletResponse response, HttpServletRequest request, HttpSession session){
   System.out.println(response);
   System.out.println(request);
   System.out.println(session);
}

(2 )绑定简单的数据类型

  前提:
  1.传入的参数类型要匹配
  2.参数的名称,必须要与方法的参数列表的名称保持一致

@RequestMapping("simpleDataBindOne")
public ModelAndView simpleDataBindOne(Integer id, String isAdmin, String type, ModelAndView modelAndView) {...}

  前端

<a href="${pageContext.request.contextPath}/requestParam/simpleDataBindOne.action?id=1&isAdmin=1&type=admin">

(3) @RequestParam 参数绑定注解

主要是给参数名不同的参数进行相应绑定

@RequestMapping("simpleDataBindTwo")
public ModelAndView simpleDataBindTwo(@RequestParam("ids") Integer id, ModelAndView modelAndView) {...}
<a href="${pageContext.request.contextPath}/requestParam/simpleDataBindTwo.action?ids=123">

(4 )绑定Pojo对象

Pojo类

public class User {
    private Integer id;
    private String username;
    private String sex;
    private Date birthday;
    //toString\getter\setter
}

请求参数绑定,将请求参数绑定到对象中
  要求: 请求参数名称在User对象中存在,则SpringMVC会自动将参数设置给对象,并且请求参数名和实体名相同即可

@RequestMapping("dataBindPojo")
public ModelAndView dataBindPojo(User user, ModelAndView modelAndView) {...}
<a href="${pageContext.request.contextPath}/requestParam/dataBindPojo.action?id=3&username=波波&sex=女">

(5)绑定pojo的包装类对象UserVo

Pojo类

public class UserVo {
    private User user;
    private List<User> userList;
    private Map<String,User> userMap;
    // toString,getter,setter
}

分别对实体中的User对象,List集合,Map集合赋值

@RequestMapping("dataBindPojoVoList")
public ModelAndView dataBindPojoVoList(UserVo userVo, ModelAndView modelAndView) {...}

封装到User对象中

<a href="${pageContext.request.contextPath}/requestParam/dataBindPojoVo.action?user.id=1&user.username=柳岩&user.sex=女">测试</a>

封装到List对象中

<form action="${pageContext.request.contextPath}/requestParam/dataBindPojoVoList.action" method="post">
    用户【1】:
    用户id : <input type="text" name="userList[0].id"/><br>
    用户名称 : <input type="text" name="userList[0].username"/><br>
    用户性别 : <input type="text" name="userList[0].sex"/><br>
    用户【2】:
    用户id : <input type="text" name="userList[1].id"/><br>
    用户名称 : <input type="text" name="userList[1].username"/><br>
    用户性别 : <input type="text" name="userList[1].sex"/><br>
    <input type="submit" value="提交">
</form>

封装到Map对象中

<form action="${pageContext.request.contextPath}/requestParam/dataBindPojoVoMap.action" method="post">
    用户【1】:
    用户id : <input type="text" name="userMap[‘k1‘].id"/><br>
    用户名称 : <input type="text" name="userMap[‘k1‘].username"/><br>
    用户性别 : <input type="text" name="userMap[‘k1‘].sex"/><br>
    用户【2】:
    用户id : <input type="text" name="userMap[‘k2‘].id"/><br>
    用户名称 : <input type="text" name="userMap[‘k2‘].username"/><br>
    用户性别 : <input type="text" name="userMap[‘k2‘].sex"/><br>
    <input type="submit" value="提交">
</form>

(6)通过@PathVariable获取路径中的参数

当使用@RequestMapping URI template 样式映射时, 即 someUrl/{paramId}, 这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上。

示例代码:

@Controller  
@RequestMapping("/owners/{ownerId}")  
public class RelativePathUriTemplateController {  
  
  @RequestMapping("/pets/{petId}")  
  public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {      
    // implementation omitted   
  }  
} 

上面代码把URI template 中变量 ownerId的值和petId的值,绑定到方法的参数上。若方法参数名称和需要绑定的uri template中变量名称不一致,需要在@PathVariable("name")指定uri template中的名称。

URI 模板就是在URI 中给定一个变量,然后在映射的时候动态的给该变量赋值。如URI 模板http://localhost/app/{variable1}/index.html ,这个模板里面包含一个变量variable1 ,那么当我们请求http://localhost/app/hello/index.html 的时候,该URL 就跟模板相匹配,只是把模板中的variable1 用hello 来取代。这个变量在SpringMVC 中是使用@PathVariable 来标记的。在SpringMVC 中,我们可以使用@PathVariable 来标记一个Controller 的处理方法参数,表示该参数的值将使用URI 模板中对应的变量的值来赋值。

代码中我们定义了两个URI 变量,一个是控制器类上的variable1 ,一个是showView 方法上的variable2 ,然后在showView 方法的参数里面使用@PathVariable 标记使用了这两个变量。所以当我们使用/test/hello/showView/2.do 来请求的时候就可以访问到MyController 的showView 方法,这个时候variable1 就被赋予值hello ,variable2 就被赋予值2 ,然后我们在showView 方法参数里面标注了参数variable1 和variable2 是来自访问路径的path 变量,这样方法参数variable1 和variable2 就被分别赋予hello 和2 。方法参数variable1 是定义为String 类型,variable2 是定义为int 类型,像这种简单类型在进行赋值的时候Spring 是会帮我们自动转换的。

 

 

SpringMvc的可传递参数

原文:https://www.cnblogs.com/xiaozhang666/p/13657846.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!