Java零碎通用代碼工具類

在Java開發中經常使用到一些比較常用的通用性代碼,這裏部分整理出來,記錄一下零碎的知識代碼,方便以後使用,以工具類形式給出;

//工具類對象: MyCommonUtil.java
package com.xx.yy.zz.util;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.util.StringUtils;
import org.springframework.util.FileCopyUtils;

import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletOutputStream;

public class MyCommonUtil {
	
	//判斷是否爲合法的電子郵件
	public static boolean isEmailOk(String emailStr) {
		try {
			if (null == emailStr || emailStr.trim().isEmpty()) {
				return false;
			}
			if (emailStr.indexOf("@") < 0) {
				return false;
			}
			String regex = "^\\w+[\\w\\.-]+\\w+@\\w+([\\w\\-\\.])*\\.\\w{2,}$";
			Pattern pattern = Pattern.compile(regex);
			Matcher matcher = pattern.matcher(emailStr.trim());
			return matcher.find();			
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}		
	}
	
	
	//通過spring框架的輔助類獲取請求HttpServletRequest對象
	public static HttpServletRequest getHttpServletRequest(){
		return ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
	}
	
	
	//通過spring框架的輔助類獲取請求HttpServletResponse對象
	public static HttpServletResponse getHttpServletResponse(){        
		return ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getResponse();		
		//return ((ServletWebRequest)RequestContextHolder.getRequestAttributes()).getResponse();
        }


	//通過spring框架從session裏面獲取對應項的值
	public static Object(/XxxJavaBean) getObjectFromSession(String itemName){
		if (null == itemName || itemName.trim().isEmpty()){
			return null;
		}		
		HttpSession session = RequestContextHolder.currentRequestAttributes().getSession();		
		return session.getAttribute(itemName.trim());
		//return (XxxJavaBean)session.getAttribute(itemName.trim());
		
		//或者
		//ServletRequestAttributes requestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
		//return requestAttributes.getAttribute(itemName.trim(),RequestAttributes.SCOPE_SESSION);
		//可根據需要修改方法的返回值類型,以及獲取數據的類型轉換		
		//return (XxxJavaBean)requestAttributes.getAttribute(itemName.trim(),RequestAttributes.SCOPE_SESSION);
	}

	//獲取請求的頭信息的Origin項信息
	public static String getOrigin(){
		HttpServletRequest request = getHttpServletRequest();
		return request.getHeader("Origin");
	}
	
	//獲取請求的頭信息中名稱爲itemName項頭信息
	public static String getHeaderInfo(String itemName){
		if (null == itemName || itemName.trim().isEmpty()){
			return "";
		}
		HttpServletRequest request = getHttpServletRequest();
		return request.getHeader(itemName.trim());
	}
	
	
	//獲取請求的的IP地址
	public static String getIpAddress(HttpServletRequest request){
		String ip = null;
		try{
			ip = request.getHeader("x-forwarded-for");
			if(StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)){
				ip = request.getHeader("Proxy-Client-IP");
			}
			if(StringUtils.isEmpty(ip) || 0 == ip.length() || "unknown".equalsIgnoreCase(ip)){
				ip = request.getHeader("WL-Proxy-Client-IP");
			}
			if(StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)){
				ip = request.getHeader("HTTP_CLIENT_IP");
			}
			if(StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)){
				ip = request.getHeader("HTTP_X_FORWARDED_FOR");
			}
			if(StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)){
				ip = request.getRemoteAddr();
			}
			
		} catch(Exception e){
			e.printStackTrace();		
		}
		return ip;
	}
	
		
	//通用從服務器以附件形式下載文件到客戶端方法
	public static void downloadFile(String svrFullPathName, String clientShowName,
		HttpServletRequest req, HttpServletResponse res) throws Exception {
		try {
			Stirng dlFullName = (null == svrFullPathName ? "" : svrFullPathName.trim())
			if (dlFullName.trim().isEmpty()) {
				return;
			}
			File dlFile = new File(dlFullName);
			if (null != dlFile && dlFile.exists() && dlFile.isFile()) {
				FileInputStream fis = new FileInputStream(dlFile);
				String fuffixName = svrFullPathName.substring(svrFullPathName.lastIndexOf("."));
				if (null == clientShowName || clientShowName.trim().isEmpty()){
					clientShowName = svrFullPathName.substring(svrFullPathName.lastIndexOf(File.separator)+1)
				}
				if (!clientShowName.toLowerCase().endsWith(fuffixName.toLowerCase())){
					clientShowName = clientShowName + fuffixName;
				}
				//動態設置響應類型,根據文件類型設置
				res.setContentType(req.getSession().getServletContext().getMimeType(fuffixName));
				//設置響應頭,attachment表示以附件形式下載,inline表示在線打開
				res.setHeader("content-disposition","attachment;fileName=" + URLEncoder.encode(clientShowName),"UTF-8");
				ServletOutputStream os = res.getOutputStream();
				FileCopyUtils.copy(fis,os);
			}
		} catch (Exception e) {
			e.printStackTrace();
			return;
		}
	}
	
	
	//通用從服務器以在線打開形式下載文件到客戶端方法
	public static void downloadFile(String svrFullPathName, String clientShowName,
		HttpServletRequest req, HttpServletResponse res) throws Exception {
		try {
			Stirng dlFullName = (null == svrFullPathName ? "" : svrFullPathName.trim())
			if (dlFullName.trim().isEmpty()) {
				return;
			}
			File dlFile = new File(dlFullName);
			BufferedInputStream bis = new BufferedInputStream(new FileInputStream(dlFile));
			byte[] buf = new byte[2048];
			int len = 0;
			response.reset(); 
			URL url = new URL("file:///" + dlFullName);
            response.setContentType(url.openConnection().getContentType());
            response.setHeader("Content-Disposition", "inline; filename=" + dlFile.getName());
            // 文件名應該編碼成UTF-8
			OutputStream out = response.getOutputStream();
			while ((len = bis.read(buf)) > 0){
				out.write(buf, 0, len);
			}
			bis.close();
			out.close();			
		} catch (Exception e) {
			e.printStackTrace();
			return;
		}
	}
	
	
	//根據網絡地址下載文件到本地
  public void downloadNet(String fileNetUrl, String savePath, HttpServletResponse response) 
		throws Exception {
        // 下載網絡文件
        try{
			if (null == fileNetUrl || fileNetUrl.trim().isEmpty()) {
				return;
			}
			int byteRead = 0;
			URL url = new URL(fileNetUrl);
			URLConnection conn = url.openConnection();
            InputStream inStream = conn.getInputStream();
			if (null == savePath || savePath.trim().isEmpty()) {
				//如果保持路徑爲空,則保存在系統的臨時文件中
				savePath = System.getProperty("java.io.tmpdir")+File.separator;
			}
			File checkDir = new File(savePath)
			if (!checkDir.exists() && !checkDir.isDirectory()){
				checkDir.mkdir();
			}
			String suffixName = fileNetUrl.substring(fileNetUrl.lastIndexOf("."));
			String fileName = "DL" + (new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date())) + suffixName;
			fileName = savePath + fileName;
            FileOutputStream fos = new FileOutputStream(fileName);
            byte[] buffer = new byte[2408];;
            while ((byteRead = inStream.read(buffer)) != -1) {                
                fs.write(buffer, 0, byteRead);
            }
		} catch (FileNotFoundException e) {
            e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();			
		}
		return;
    }	
	
		
	
	//...more code...
	
	
}

 

歡迎拍磚討論...

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章