java 的一些常用方法

1.获取某个前端页面的内容

/**
* 获得url页面信息

* @param url
*            网址
* @return 字符串
* @throws IOException
*/
public static StringBuffer getUrl(String url) throws IOException {
BufferedReader in = null;
StringBuffer stb = new StringBuffer();
try {
URL u = new URL(url);
System.out.println("URL:" + url);
in = new BufferedReader(new InputStreamReader(u.openStream(),
"utf-8"));
String str;
while ((str = in.readLine()) != null) {
stb.append(str);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
in.close();
}
return stb;
}

2.获取项目的访问路径

/**
* 获得项目访问路径

* @param request
* @return
*/
public static String getItemUrl(HttpServletRequest request) {
String path = request.getContextPath();
itemUrl = request.getScheme() + "://" + request.getServerName() + ":"
+ request.getServerPort() + path + "/";
return getItemUrl();
}

以下为我常用的一些方法

/**
* json 反序列化 方法。把 一个json字符串,反序列化成 指定类型的对象

* @param <T>
* @return
*/
public static <T> T JsonDeserialize(String jsonAsString, Class<T> pojoClass)
throws JsonMappingException, JsonParseException, IOException {
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.readValue(jsonAsString, pojoClass);
}


/**
* 将对象转成jsonString形式
*/
public static <T> JSONObject JsonSerialize(T t) {
JSONObject jsonObject = JSONObject.fromObject(t);
return jsonObject;
}


/**
* 读取Request的内容

* @param Request
* @return
*/
public static String ReadRequestContent(HttpServletRequest Request) {
StringBuilder sb = new StringBuilder();


String line = null;
try {
BufferedReader in = new BufferedReader(new InputStreamReader(
Request.getInputStream()));


while ((line = in.readLine()) != null) {
sb.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
String result = sb.toString();
return result;
}


/**
* 取得当前时间戳(精确到秒)

* @return
*/
public static String timeStamp() {
long time = System.currentTimeMillis();
String t = String.valueOf(time / 1000);
return t;
}


/**
* 生成随机串,随机串包含字母或数字

* @return 随机串
*/
public static String getnonceStr() {
String val = "";
Random random = new Random();
int length = random.nextInt(31);
if (length < 10) {
length = 11;
}
for (int i = 0; i < length; i++) {
// 输出字母还是数字
String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num";
// 字符串
if ("char".equalsIgnoreCase(charOrNum)) {
// 取得大写字母还是小写字母
int choice = random.nextInt(2) % 2 == 0 ? 65 : 97;
val += (char) (choice + random.nextInt(26));
} else if ("num".equalsIgnoreCase(charOrNum)) { // 数字
val += String.valueOf(random.nextInt(10));
}
}
return val;
}


/**
* 将字节数组转化成字符串
*/
public static String byte2str(byte[] array) {
StringBuffer hexstr = new StringBuffer();
String shaHex = "";
for (int i = 0; i < array.length; i++) {
shaHex = Integer.toHexString(array[i] & 0xFF);
if (shaHex.length() < 2) {
hexstr.append(0);
}
hexstr.append(shaHex);


}
return hexstr.toString();
}


/**
* 处理http GET.POST请求,返回数据

* 请求的url地址http GET成功后返回的数据,失败抛WebException异常
*/
public static JSONObject httpsRequest(String requestUrl,
String requestMethod, String outputStr) {
JSONObject jsonObject = null;
try {
// 创建SSLContext对象,并使用我们指定的信任管理器初始化
TrustManager[] tm = { new MyX509TrustManager() };
SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
sslContext.init(null, tm, new java.security.SecureRandom());
// 从上述SSLContext对象中得到SSLSocketFactory对象
SSLSocketFactory ssf = sslContext.getSocketFactory();


URL url = new URL(requestUrl);
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setSSLSocketFactory(ssf);


conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
// 设置请求方式(GET/POST)
conn.setRequestMethod(requestMethod);


// 当outputStr不为null时向输出流写数据
if (null != outputStr) {
OutputStream outputStream = conn.getOutputStream();
// 注意编码格式
outputStream.write(outputStr.getBytes("UTF-8"));
outputStream.close();
}


// 从输入流读取返回内容
InputStream inputStream = conn.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(
inputStream, "utf-8");
BufferedReader bufferedReader = new BufferedReader(
inputStreamReader);
String str = null;
StringBuffer buffer = new StringBuffer();
while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
}


// 释放资源
bufferedReader.close();
inputStreamReader.close();
inputStream.close();
inputStream = null;
conn.disconnect();
String o = buffer.toString();
if (o.contains("[CDATA")) {


o = o.replace("<![CDATA[", "").replace("]]>", "");
XMLSerializer xmlSerializer = new XMLSerializer();
JSON json = xmlSerializer.read(o);
return (JSONObject) json;
}
jsonObject = JSONObject.fromObject(o);
} catch (ConnectException ce) {
ce.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return jsonObject;
}


/**
* java对象转化成xml字符串

* java对象实例 String xml字符串
*/
private static XStream xstream = new XStream(new XppDriver() {
public HierarchicalStreamWriter createWriter(Writer out) {
return new PrettyPrintWriter(out) {
// 对所有的xml节点都增加cdata标记
boolean cdata = true;


public void starNode(String name, Class clazz) {
super.startNode(name, clazz);
}


protected void writeText(QuickWriter writer, String text) {
if (cdata) {
writer.write("<![CDATA[");
writer.write(text);
writer.write("]]>");
} else {
writer.write(text);
}


}
};


}


});


public static String serializeToXml(Object obj) {
PayData paydata = (PayData) obj;
xstream.alias("xml", PayData.class);
return xstream.toXML(paydata);


}


public static String serializeToXml1(Object obj) {
com.pb.action.weixinApp.util.PayData paydata1 = (com.pb.action.weixinApp.util.PayData) obj;
xstream.alias("xml", com.pb.action.weixinApp.util.PayData.class);
return xstream.toXML(paydata1);


}


/**
* xml对象转化成json

* @param obj
*            java对象实例
* @return String xml字符串
*/
public static HashMap<String, String> parseXML(HttpServletRequest request) {


HashMap<String, String> map = new HashMap<String, String>();
SAXReader reader = new SAXReader();
Document doc;
try {
doc = reader.read(request.getInputStream());
// 得到xml的根节点
Element root = doc.getRootElement();
recursiveParseXML(root, map);
} catch (DocumentException | IOException e) {
e.printStackTrace();
}


return map;
}


private static void recursiveParseXML(Element root,
HashMap<String, String> map) {
// 得到根節點的子節點列表
List<Element> elementlist = root.elements();
// 判斷子元素有沒有列表
if (elementlist.size() == 0) {
map.put(root.getName(), root.getTextTrim());


} else {
for (Element e : elementlist) {
recursiveParseXML(e, map);
}
}
}


/**
* 将传入xml字符串转化为java对象

* @param xmlstr
* @param cls
*            xml对应的class类
* @return T xml对应的class类的实例对象 调用的方法实例:PersonBean
*         person=XmlUtil.toBean(xmlStr, PersonBean.class);
*/
public <T> T deSerizalizeFromXml(String xmlstr, Class<T> cls)
throws Exception {
// 注意:不是new Xstream();否则报错:java.lang.NoClassDefFoundError:
// org/xmlpull/v1/XmlPullParserFactory
XStream xstream = new XStream(new DomDriver());
xstream.processAnnotations(cls);
T obj = (T) xstream.fromXML(xmlstr);
return obj;
}


/**
* 从Request对象中获得客户端IP,处理了HTTP代理服务器和Nginx的反向代理截取了ip

* @param request
* @return ip
*/
public static String getIp2(HttpServletRequest request) {
String ip = request.getHeader("X-Forwarded-For");
if (StringUtils.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)) {
// 多次反向代理后会有多个ip值,第一个ip才是真实ip
int index = ip.indexOf(",");
if (index != -1) {
return ip.substring(0, index);
} else {
return ip;
}
}
ip = request.getHeader("X-Real-IP");
if (StringUtils.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)) {
return ip;
}
return request.getRemoteAddr();
}


/**
* 获取编码后的url

* @param source
* @return
*/


public static String urlEncodeUTF8(String source) {
String result = source;
try {
result = URLEncoder.encode(source, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return result;
}


/**
* 获取当前的格式化时间

* @param source
* @return
*/


public static String simpleTime() {
SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
String time = sdf.format(new Date());
return time;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值