Servlet中获取POST请求的参数

 

在servlet、filter等中获取POST请求的参数

  1. form表单形式提交post方式,可以直接从 request 的 getParameterMap 方法中获取到参数
  2. JSON形式提交post方式,则必须从 request 的 输入流 中解析获取参数,使用apache commons io 解析

 

maven配置

      
    <dependency>
        <groupId>commons-iogroupId>
        <artifactId>commons-ioartifactId>
        <version>2.6version>
    dependency>
    
    
    <dependency>
        <groupId>javax.servletgroupId>
        <artifactId>javax.servlet-apiartifactId>
        <version>3.1.0version>
        <scope>providedscope>
    dependency>
    
      
    <dependency>
        <groupId>com.alibabagroupId>
        <artifactId>fastjsonartifactId>
        <version>1.2.50version>
    dependency>
      

 

 

获取POST请求中的参数

    /**
     * @author tianwyam
     * @description 从POST请求中获取参数
     * @param request
     * @return
     * @throws Exception
     */
    public static Map getParam4Post(HttpServletRequest request) throws Exception {
        
     // 返回参数 Map
params = new HashMap<>(); // 获取内容格式 String contentType = request.getContentType(); if (contentType != null && !contentType.equals("")) { contentType = contentType.split(";")[0]; } // form表单格式 表单形式可以从 ParameterMap中获取 if ("appliction/x-www-form-urlencoded".equalsIgnoreCase(contentType)) { // 获取参数 Map parameterMap = request.getParameterMap(); if (parameterMap != null) { for (Map.Entry entry : parameterMap.entrySet()) { params.put(entry.getKey(), entry.getValue()[0]); } } } // json格式 json格式需要从request的输入流中解析获取 if ("application/json".equalsIgnoreCase(contentType)) { // 使用 commons-io中 IOUtils 类快速获取输入流内容 String paramJson = IOUtils.toString(request.getInputStream(), "UTF-8"); Map parseObject = JSON.parseObject(paramJson, Map.class); params.putAll(parseObject); } return params ; }

 

转载于:https://www.cnblogs.com/tianwyam/p/post_param.html

你可能感兴趣的:(Servlet中获取POST请求的参数)