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>
*/
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>
*/
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?longitude=117.191364&latitude=36.684343";
Map<String,Object> map = getParameter(url);
System.out.println(map);
}
}
測試結果
{latitude=36.684343, longitude=117.191364}
2.2 直接獲取Url中某個參數:
mport 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));
}
}