• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

使用springmvc的controller层获取到请求的数据方式

java 搞代码 4年前 (2022-01-09) 17次浏览 已收录 0个评论
文章目录[隐藏]

javaweb应用开发,最常用到的就是应用之间的信息交互,调用别的应用模块得到自己想获取的数据信息,然后解析数据并进行处理返回到上一层。那controller层的方法如何获取http请求/webservice请求中的参数,或者说请求数据呢?

按照我个人的接触和理解,把请求可以分为两大类:

1.页面请求到后台controller层的请求。

2.别的应用http/webservice调用本应用中封装接口的请求。

无论哪种方式的请求,都是http请求(webservice底层也是http请求,待考证),controller层对请求数据的解析是按照json还是xml的依据就是请求头content-type,接下来我们就先来详细介绍一下。

content-type

content-type请求头是干吗的呢,http请求头有四种类型,分别是通用头部,请求头部,响应头部以及内容头部. 首先,我们要弄清楚,content-type是属于内容头部,既然是内容头部,那这个请求头是用来向接收端解释传递的该内容主体的,content-type的取值是告诉服务端,你传递过去的内容是啥,你应该准备好如何接收和解析。常用的content-type可以分为application/x-www-form-urlencoded , multipart/form-data ,application/json , text/xml四种。

下面一一介绍

1.application/x-www-form-urlencoded

application/x-www-form-urlen本文来源[email protected]搞@^&代*@码网(coded是常用的表单发包方式,普通的表单提交(即不带文件上传的提交),或者js (例如:post方式)发包,默认都是通过这种方式,提交代码demo如下:

function searchInfo() {
    $("#cxjg").datagrid({
        url : basepath + 'jijin/getList',
        queryParams : getParam($("#query").serializeArray()),
        method : "post"
    });
function searchInfo(){
    $("#cxjg").datagrid({
        url:basepath+'jijin/getList',
        queryParams : {'age':23,'name':'zhangsan'},
        method:"post"
});

请求头信息如下所示,可以看到content-type和FormData(表单的数据格式)

如何获取这种数据结构的请求?有两种方式来解决

1.1 String 参数值=reqeust.getParameter(“参数名”);

(以springmvc 的controller层的方法为例)

@RequestMapping("/getParam")
public String getParamFromRequest(HttpServletRequest request){
    String jiJinCode=(String)request.getParameter("jinJinCode");
    ...
}

1.2 Map<String,String[]> paramMap=request.getParameterMap();

@RequestMapping("/getParam")
public String getParamFromRequest(HttpServletRequest request){
    Map<String,String[]> paramMap=request.getParameterMap();
    StringBuffer inputDate=new StringBuffer();
    inputDate.append("<jiJinBean>");
    for(Map.Entry<String,String[]> entry :paramMap.entrySet()){
        String key=entry.getKey();
        String[] values=entry.getValue();
        String value=null;
        if(values.length>0){
            value=values[0];
        }
        inputDate.append("<"+key+">"+value+"</"+key+">");
    }
    return inputDate.toString();
}

两种方法比较来说,第一种适合当参数不多时,可以一个一个取。但第二种则是遍历出所有的请求参数,并生成标签格式,利于自动生成报文格式。

2.multipart/form-data

multipart/form-data用在页面(提交)发送文件的POST请求。之所以会和第一种content-type同是post提交,为啥在这里就变成multipart/form-data了呢?


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:使用springmvc的controller层获取到请求的数据方式

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址