zoukankan      html  css  js  c++  java
  • java获取request中的参数、java解析URL问号后的参数

    java获取request中的参数、java解析URL问号后的参数。有时候我们需要从request中获取参数,或者获取拼接在Url后面的参数,有时候一个一个去拿有点麻烦,一起拿出来放在一个map里面需要用哪个就取哪个,方便省事。

    1. java获取request中的参数:

    import java.io.UnsupportedEncodingException;  
    import java.net.URLDecoder;  
    import java.util.HashMap;  
    import java.util.Map;
    import javax.servlet.http.HttpServletRequest;  
    
    /**
     * <p>java获取request中的参数、java解析URL问号后的参数<p>
     * @version 1.0
     * @author li_hao
     * @date 2016年12月21日
     */  
    public class RequestParametersUtil {  
        /** 
         *  获取request中参数 
         * @param request 页面请求 
         */  
        public static Map<String, Object> getRequestParameters(HttpServletRequest request) {  
             String parameters="";//请求参数  
                if("GET".equals(request.getMethod())){//GET请求时的参数  
                    String urlParameter=request.getQueryString();//网址中的参数  
                    if(urlParameter!=null&&!"".equals(urlParameter)){  
                        try {  
                            urlParameter=URLDecoder.decode(urlParameter,"UTF-8");  
                        } catch (UnsupportedEncodingException e) {  
                            e.printStackTrace();  
                        }  
                    }else {  
                        urlParameter="";  
                    }  
                    parameters=urlParameter;  
                }else if("POST".equals(request.getMethod())){//POST请求时的参数  
                    String totalParameter="";//表单及网址中全部参数  
                    Map<String, String[]> params = request.getParameterMap();  
                    int parametersNum=request.getParameterMap().size();//参数个数  
                    int flag=1;  
                    for (String key : params.keySet()) {    
                          
                        String[] values = params.get(key);    
                        for (int i = 0; i < values.length; i++) {    
                            String value = values[i];   
                            totalParameter+= key + "=" + value;  
                        }  
                        if(flag<parametersNum){  
                            totalParameter+="&";  
                        }  
                        flag+=1;  
                    }   
                    parameters=totalParameter;  
                }  
                Map<String, Object> map=new HashMap<String, Object>();  
                String[] arr=parameters.split("&");  
                for (int i = 0; i <arr.length; i++) {  
                    String key=arr[i].substring(0, arr[i].indexOf("="));  
                    String value=arr[i].substring( arr[i].indexOf("=")+1);  
                    map.put(key, value);  
                }  
               return map;  
        }  
    } 

    2. java解析URL问号后的参数:

     2.1 获取全部参数放进HashMap中返回:

    import java.net.URLDecoder;
    import java.util.HashMap;
    import java.util.Map;
    
    /**
     * <p>java获取request中的参数、java解析URL问号后的参数<p>
     * @version 1.0
     * @author li_hao
     * @date 2016年12月21日
     */
    public class GetUrlParameter {
    
        public static Map<String, Object> getParameter(String url) {
            Map<String, Object> map = new HashMap<String, Object>();
            try {
                final String charset = "utf-8";
                url = URLDecoder.decode(url, charset);
                if (url.indexOf('?') != -1) {
                    final String contents = url.substring(url.indexOf('?') + 1);
                    String[] keyValues = contents.split("&");
                    for (int i = 0; i < keyValues.length; i++) {
                        String key = keyValues[i].substring(0, keyValues[i].indexOf("="));
                        String value = keyValues[i].substring(keyValues[i].indexOf("=") + 1);
                        map.put(key, value);
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return map;
        }
        
        /**
         * 测试
         * @param args
         */
        public static void main(String[] args) {
            String url = "www.xxxx.com?id=100001&name=zhangsan&age=25";
            Map<String,Object> map = getParameter(url);
            
            System.out.println(map);
        }
    }

     测试结果:

     2.2 直接获取Url中某个参数:

    import java.net.URLDecoder;
    
    /**
     * <p>java获取request中的参数、java解析URL问号后的参数<p>
     * @version 1.0
     * @author li_hao
     * @date 2016年12月21日
     */
    public class GetUrlParameter {
    
        public static String getOneParameter(String url,String keyWord) {
            String retValue = "";
            try {
                final String charset = "utf-8";
                url = URLDecoder.decode(url, charset);
                if (url.indexOf('?') != -1) {
                    final String contents = url.substring(url.indexOf('?') + 1);
                    String[] keyValues = contents.split("&");
                    for (int i = 0; i < keyValues.length; i++) {
                        String key = keyValues[i].substring(0, keyValues[i].indexOf("="));
                        String value = keyValues[i].substring(keyValues[i].indexOf("=") + 1);
                        if (key.equals(keyWord)) {
                            if (value != null || !"".equals(value.trim())) {
                                retValue = value;
                            }
                        }
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return retValue;
        }
        
        /**
         * 测试
         */
        public static void main(String[] args) {
            String url = "www.xxxx.com?id=100001&name=&age=25";
            String value = getOneParameter(url,"id");
            String name = getOneParameter(url,"name");
            
            System.out.println(value);
            System.out.println("".equals(name));
        }
    }

     测试结果:

  • 相关阅读:
    孙陶然的五行文化,学习,真实用
    查看CPU使用率
    卸载windows补丁
    结束普通方法无法结束的进程
    三观
    如何知道一个EXE使用什么开发语言开发的
    文本文件处理,删除其中含有某些字符文本的行,一行命令搞定
    Delphi 字符串转日期,强大到窒息,VarToDateTime 解决了 困扰很久的小问题
    netstat -an查看到大量的TIME_WAIT状态的解决办法
    跨平台开发应用
  • 原文地址:https://www.cnblogs.com/hooly/p/8252843.html
Copyright © 2011-2022 走看看