在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...
}
歡迎拍磚討論...