package com.sinocarbon.base.util;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.jfree.util.Log;
import java.lang.reflect.Field;
import java.net.URLDecoder;
public class ParamUtils {
/**
* 从一个参数中得到整数,如果没有值,返回缺省值
* @param request
* @param name
* @defaultvalue 缺省值
* @return
*/
static public Integer getInteger(HttpServletRequest request, String name,
Integer defaultvalue) {
String p = request.getParameter(name);
if (StringUtils.isNotEmpty(p) && StringUtils.isNumeric(p))
return Integer.valueOf(p);
else
return defaultvalue;
}
/**
* 从一个参数中得到整数,如果没有值,返回缺省值0
* @param request
* @param name
* @return
*/
static public Integer getInteger(HttpServletRequest request, String name) {
String p = request.getParameter(name);
if (StringUtils.isNotEmpty(p) && StringUtils.isNumeric(p))
return Integer.valueOf(p);
else
return Integer.valueOf(0);
}
public static int getInt(HttpServletRequest request, String name, int value) {
String p = request.getParameter(name);
int val = value;
if (StringUtils.isNotEmpty(p) && StringUtils.isNumeric(p)) {
val = Integer.parseInt(p);
}
return val;
}
public static int getInt(HttpServletRequest request, String name) {
return ParamUtils.getInt(request, name, 0);
}
/**
* 从一个参数中得到字符串
* @param request
* @param name
* @defaultvalue
* @return
*/
static public String getString(HttpServletRequest request, String name,
String defaultvalue) {
String value = request.getParameter(name);
if (value == null || "".equals(value.trim()))
return defaultvalue;
else
return value.trim();
}
/**
* 从一个参数中得到字符串,缺省=""
* @param request
* @param name
* @return
*/
static public String getString(HttpServletRequest request, String name) {
String value = request.getParameter(name);
if (value == null || "null".equals(value))
return "";
else
return value.trim();
}
/**
* 从一个参数中得到中文字符串,缺省=""
* gm 2011-4-27
* @param request
* @param name
* @return
*/
static public String getGBKString(HttpServletRequest request, String name) {
try{
String value = request.getParameter(name);
if (value == null || "null".equals(value))
return "";
else
value=URLDecoder.decode(request.getParameter(name),"utf-8");
return value.trim();
}
catch(UnsupportedEncodingException e)
{
return "编码转换错误:"+e.getMessage();
}
}
/**
* 从getParameterMa中得到String
* gm 2011-4-29
* @param map
* @param name
* @return
*/
static public String getString(Map map,String name){
String newValue="";
String[] value=(String[])map.get(name);
if(value==null || "null".equals(value[0]))
return "";
else {
newValue=String.valueOf(value[0]);
}
return newValue;
}
/**
* 从getParameterMa中得到中文String
* gm 2011-4-29
* @param map
* @param name
* @return
*/
static public String getGBKString(Map map,String name){
try{
String newValue=""; //将数组对象转为String
String GBKValue=""; //将String转为中文
String[] value=(String[])map.get(name);
if (value == null || "null".equals(value[0]))
return "";
else
newValue=String.valueOf(value[0]);
GBKValue=URLDecoder.decode(newValue,"utf-8");
return GBKValue.trim();
}
catch(UnsupportedEncodingException e)
{
return "编码转换错误:"+e.getMessage();
}
}
/**
* 从request得到中文
* @param request
* @param name
* @param code
* @return
*/
public static String getChinaStringByCODE(HttpServletRequest request, String name,String codeType){
String value = request.getParameter(name);
String returnValue = "";
if("null".equalsIgnoreCase(value) || null==value){
return returnValue;
}else{
byte[] bytes;
try {
bytes = value.getBytes("iso-8859-1");
returnValue = new String(bytes,codeType);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
Log.debug("转换中文编码出错"+e.getMessage());
}
}
return returnValue ;
}
/**
* 转换为utf-8编码方式中文
* @param request
* @param name
* @return
*/
public static String getChinaStringByUTF8(HttpServletRequest request, String name){
return getChinaStringByCODE(request, name, "utf-8");
}
/**
* 转换为gb2312编码方式中文
* @param request
* @param name
* @return
*/
public static String getChinaStringByGB2312(HttpServletRequest request, String name){
return getChinaStringByCODE(request, name, "gb2312");
}
/**
* 这么做是考虑Object字段多,Map字段可能不匹配的情况,容错
* @param map
* @param obj
* @param ridSign 实体类有个set集合对象
* @throws Exception
*/
public static Object praseMap(Map<String,String> map,Object obj,String ridSign)throws Exception{
for(Map.Entry<String, String> entry : map.entrySet()){
String key = entry.getKey();
if(null!=ridSign){
int ridSignIdex = key.indexOf(ridSign);
key = key.substring(0, ridSignIdex);
}
String value = entry.getValue();
//获取Object class下 all field
Field [] fieldArray = obj.getClass().getDeclaredFields();
for (int i = 0; i < fieldArray.length; i++) {
if(key.equals(fieldArray[i].getName())){
Field field = fieldArray[i];
//判断field字段type
Class fieldType = field.getType();
field.setAccessible(true);
if(fieldType.equals(int.class)){
field.setInt(obj, Integer.parseInt(value));
}else if(fieldType.equals(String.class)){
field.set(obj,value);
}else if(fieldType.equals(Double.class)){
field.setDouble(obj, Double.parseDouble(value));
}else if(fieldType.equals(Float.class)){
field.setDouble(obj, Float.parseFloat(value));
}else if(fieldType.equals(Date.class)){
SimpleDateFormat sdfFormat = new SimpleDateFormat ("yyyy-MM-dd");
Date iTdate = sdfFormat.parse(value);
field.set(obj, iTdate);
}else if(fieldType.equals(Integer.class)){
field.set(obj, Integer.parseInt(value));
}else if(fieldType.equals(float.class)){
field.set(obj, Float.parseFloat(value));
}else{
field.set(obj,value);
}
break;
}
}
}
return obj;
}
public static Object praseMap(Map<String,String> map,Object obj)throws Exception{
return praseMap(map, obj, null);
}
}