持续记录Java小知识点
1、获取当前的时间
2、获取request的Url
3、获取http请求的IP地址
4、获取http请求所使用的浏览器
5、byte[]与string之间的互相转换
6、图片转成二进制以及生成图片
7、String和StringBuffer之间的转换
8、String和StringBuilder之间的转换
9、两个时间相差的秒数
10、邮箱格式判断
11、普通类从Spring容器中拿出service
12、过滤字符串的回车和换行符
13、HmacMD5加密
获取当前的时间
// 获取当前时间
Date date=new Date();
DateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time=format.format(date);
获取HttpServletRequest常用获取Url的方法
来自:http://blog.csdn.net/gris0509/article/details/6340987
1、request.getRequestURL()
返回的是完整的url,包括Http协议,端口号,servlet名字和映射路径,但它不包含请求参数。
2、request.getRequestURI()
得到的是request URL的部分值,并且web容器没有decode过的
3、request.getContextPath()
返回 the context of the request.
4、request.getServletPath()
返回调用servlet的部分url.
5、request.getQueryString()
返回url路径后面的查询字符串
示例:
当前url:http://localhost:8080/CarsiLogCenter_new/idpstat.jsp?action=idp.sptopn
request.getRequestURL() http://localhost:8080/CarsiLogCenter_new/idpstat.jsp
request.getRequestURI() /CarsiLogCenter_new/idpstat.jsp
request.getContextPath()/CarsiLogCenter_new
request.getServletPath() /idpstat.jsp
request.getQueryString()action=idp.sptopn
获取http请求的IP地址
HttpServletRequest request;
String IP = request.getRemoteAddr();
获取http请求所使用的浏览器
首先查看出消息头当中的User-Agent
String user_agent = req.getHeader("user-agent");
System.out.println("Brower:" + getBrowserName(user_agent.toLowerCase()));
其中getBrowserName()里面可以自动添加其他浏览器的信息
public final String getBrowserName(String agent) {
if(agent.indexOf("msie 7")>0){
return "IE7";
}else if(agent.indexOf("msie 8")>0){
return "IE8";
}else if(agent.indexOf("msie 9")>0){
return "IE9";
}else if(agent.indexOf("msie 10")>0){
return "IE10";
}else if(agent.indexOf("msie")>0){
return "IE";
}else if(agent.indexOf("gecko")>0 && agent.indexOf("rv:11")>0){
return "IE11";
}else if(agent.indexOf("opera")>0){
return "Opera";
}else if(agent.indexOf("chrome")>0){
return "Chrome";
}else if(agent.indexOf("firefox")>0){
return "Firefox";
}else if(agent.indexOf("ucbrowser")>0){
return "UCBrowser";
}else if(agent.indexOf("applewebkit")>0){
return "Safari";
}else if(agent.indexOf("webkit")>0){
return "webkit";
}else{
return "Others";
}
}
byte[]与string之间的互相转换
String s = "fs123fdsa";//String变量
byte b[] = s.getBytes();//String转换为byte[]
String t = new String(b);//bytep[]转换为String
图片转成二进制以及生成图片
String path = "g:/iphone4.jpg";
File file = new File(path);
FileInputStream fis = new FileInputStream(file);
byte[] b = new byte[fis.available()];
StringBuilder str = new StringBuilder();//不建议用String
fis.read(b);
for(byte bs:b)
{
str.append(Integer.toBinaryString(bs));//转换为二进制
}
//把字节数组的图片写到另一个地方
File apple= new File("D:/apple.jpg");
FileOutputStream fos = new FileOutputStream(apple);
fos.write(b);
fos.flush();
fos.close();
String和StringBuffer之间的转换
从String到StringBuffer: StringBuffer sb = new StringBuffer("abcd");
从StringBuffer到String: String str = sb.toString();
String和StringBuilder之间的转换
从String到StringBuilder: StringBuilder sb = new StringBuilder("abcd");
从StringBuilder到String: String str = sb.toString();
两个时间相差的秒数
public static long TimeSub(String Now,String Old) throws Exception{
String DatePattern = "yyyy-MM-dd HH:mm:ss";
Date nowDate = new SimpleDateFormat(DatePattern).parse(Now);
Date OldDate = new SimpleDateFormat(DatePattern).parse(Old);
return (nowDate.getTime() - OldDate.getTime()) / 1000; // 单位是秒
}
邮箱格式判断
public static boolean isEmail(String email){
boolean tag = true;
final String pattern1 = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
final Pattern pattern = Pattern.compile(pattern1);
final Matcher mat = pattern.matcher(email);
if (!mat.find()) {
tag = false;
}
return tag;
}
普通类从Spring容器中拿出service
//普通类从spring容器中拿出service
WebApplicationContext webctx=ContextLoader.getCurrentWebApplicationContext();
BRdbService brdbService = (BRdbService)webctx.getBean("brdbService");
过滤字符串的回车和换行符
String newString =temp.replaceAll("(\r\n|\r|\n|\n\r)", "");
HmacMD5加密
public static final String KEY_MAC = "HmacMD5";
public static byte[] encryptHMAC(byte[] data, String key) throws Exception {
SecretKey secretKey = new SecretKeySpec(key.getBytes(), KEY_MAC);
Mac mac = Mac.getInstance(secretKey.getAlgorithm());
mac.init(secretKey);
return mac.doFinal(data);
}
/*byte数组转换为HexString*/
public static String byteArrayToHexString(byte[] b) {
StringBuffer sb = new StringBuffer(b.length * 2);
for (int i = 0; i < b.length; i++) {
int v = b[i] & 0xff;
if (v < 16) {
sb.append('0');
}
sb.append(Integer.toHexString(v));
}
return sb.toString();
}
public static void main(String[] args)throws Exception{
String inputStr = "test";
byte[] inputData = inputStr.getBytes();
String key = "key";
System.out.println(byteArrayToHexString(encryptHMAC(inputData, key)));
}