Java 小知识点

持续记录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



在main方法中写下

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)));
    }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值