javaweb请求判断浏览器类型

2019 精帖
0 2330


在下载文件的时候不同的浏览器可能会造成中文乱码,java可以根据浏览器的类型做出判断


package com.dzqc.yx.util;

import javax.servlet.http.HttpServletRequest;

/***
 * 判断浏览器类型
 */
public class BrowsersType {
    public static boolean isMSBrowser(HttpServletRequest request) {
        String[] IEBrowserSignals = {"MSIE", "Trident", "Edge"};  
        String userAgent = request.getHeader("User-Agent");  
        for (String signal : IEBrowserSignals) {              
        	if (userAgent.contains(signal)){  
                return true;  
            }  
        }  
        return false;  
    }
     /**
     * @return boolean true:Chrom或者Firefox false:其他
     * @author 
     */
    public boolean getBrowserType() {
        String browser = "";
        browser = ServletActionContext.getRequest().getHeader( "USER-AGENT" );
        if (browser.indexOf( "Chrome" ) > 0 || browser.indexOf( "Firefox") > 0) {
            return true;
        } else {
            return false;
        }
    }
}


{"MSIE", "Trident", "Edge"}//都是ie浏览器的类型
Chrome、Firefox:谷歌和火狐


下载工具类

package com.dzqc.yx.util;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URLEncoder;

import javax.activation.MimetypesFileTypeMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/***
 * 下载工具类
 * @author JIAJIAJIA
 *
 */
public class DownloadUtil {
	/***
	 * 
	 * @param file	File
	 * @param resName 返回的文件名称
	 * @param response HttpServletResponse
	 * @param request HttpServletRequest
	 */
	public void download(File file,String resName,HttpServletResponse response,HttpServletRequest request) {
		BufferedInputStream in = null;  
        BufferedOutputStream out = null;  
        try {  
            in = new BufferedInputStream(new FileInputStream(file));  
            out = new BufferedOutputStream(response.getOutputStream());  
            response.setContentType(new MimetypesFileTypeMap().getContentType(file));// 设置response内容的类型  
            String filename=resName;
            if (BrowsersType.isMSBrowser(request)) {//查看浏览器类型
				filename = URLEncoder.encode(filename, "UTF-8");
			} else {
				filename = new String(filename.getBytes("utf-8"), "ISO8859-1");
			}
            response.setHeader("Content-disposition", "attachment;filename=" + filename);// 设置头部信息  
            byte[] buffer = new byte[1024];  
            int length = 0;  
            while ((length = in.read(buffer)) > 0) {  
                out.write(buffer, 0, length);  
            }  
            out.flush();  
        } catch (IOException e) {
        	e.printStackTrace();
        } finally {  
            try {  
                if (in != null) {  
                    in.close();  
                }  
                if (out != null) {  
                    out.close();  
                }  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }  
	}
	
	/**
	 * @param path 文件路径  约定-路径类似与 e:/test/photo/
	 * @param fileName 文件名
	 * @param resName 返回文件的名称
	 * @param response HttpServletResponse
	 * @param request HttpServletRequest
	 */
	public void download(String path,String fileName,String resName,HttpServletResponse response,HttpServletRequest request) {
		File file = new File(path+fileName);
		download(file, resName, response, request);
	}
	
	
}



就是在这使用

if (BrowsersType.isMSBrowser(request)) {//查看浏览器类型
				filename = URLEncoder.encode(filename, "UTF-8");
			} else {
				filename = new String(filename.getBytes("utf-8"), "ISO8859-1");
			}


留言(0)
加载更多
猜你喜欢