SpringMVC之后台接收Map类型参数

最近在做ssm时,使用spring mvc提供的封装参数的方法进行接收时,遇到了一个问题:前台向后台发送ajax请求并且携带很多参数,而后台并没有对应的实体类进行接收处理。如果根据参数去建立对应的实体类,这样就会让后台变得臃肿,冗余,
所以选择用Map接收


首先是前台的代码:

之后就不多举例了,下面代码中的json对象可以是form表单中的参数值,也可以是自己定义的。

//定义json对象
var json = {
    "user_name":"admin",
    "user_role_id":1
};
//JQuery Ajax请求
$.post("user/queryAllByNameByRole",
    json,
    function(data){

    },
    'json'
);

spring框架中有个一个工具类:WebUtils

里面有一个静态方法: 

Map<String, Object> params = WebUtils.getParametersStartingWith(ServletRequest request, String prefix);

这个方法可以将前台的参数以key-value的形式保存为一个Map。

Controller层代码:

queryAllByNameByRole方法的参数可以是HttpServletRequest ,可以是ServletRequest
,

对J2ee熟悉的朋友都知道在 request中有一个美好的方法叫做 request.getParameterMap() 返回一个Map 类型当然这个 Map 中
就 包括了页面上传进来的所有的参数。 但是, 这个request.getParameterMap() 返回的 Map 中还包括有其他的一些东西,
所以我们并不能直接迭代就得到我们全部需要的,因为还会得到我们不需要的,所以。当我们使用
WebUtils.getParametersStartingWith(request, "user_"); 这个方法之后,便可以根据页面上传的值来取。

getParametersStartingWith()方法的第一个参数为request对象;

getParametersStartingWith()方法的第二个参数为String对象,作用:上面例子中,第二个参数为“user_”,表示将前缀为“user_”的参数筛选出来。

键值不带前缀,是去掉前缀的!!!!有疑惑的朋友们可以打断点看看。

Mapper配置文件代码:

总结就不总结了,希望可以帮助到大家,如果有错误,请各位海涵并指正。

猜你喜欢

转载自blog.csdn.net/qq_41097820/article/details/88314215