javaweb请求判断浏览器类型

硅谷探秘者 4066 0 0


在下载文件的时候不同的浏览器可能会造成中文乱码,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");
			}



评论区
请写下您的评论...
暂无评论...
猜你喜欢
weblog 1732 java是否是ieimportjavax.servlet.http.HttpServletRequest;/*** *@author硅谷探秘者(jia
框架 1719 *@date2018年12月23日下午8:13:51*@versionV1.0*@Description:TODO(辨别的设备)*/publicclassDeviceTypes{ /*** *是否是pc端w
工具 2008 web项目是否为ajax异步importjavax.servlet.http.HttpServletRequest;publicclassAjaxUtil
setUpVpn 14538 谷歌vpn插件翻墙将下载的文件拖到谷歌的扩展程序窗口中,即可安装
框架 3358 1.向服务时,服务不会直接执行我们的,而是到web.xml里寻找路径名①:第一步,输入访问路径后,携带了行,头,体②:第二步,根据访问路径找到已注册的
计算机网络基础 2604 1.区别(1)post更安全(不会作为url的一部分,不会被缓存、保存在服务日志、以及记录中)(2)post发送的数据更大(get有url长度限制)(3)post能发送更多的数据
算法基础 2796 Java的反射机制可以让我们获取某个的所有信息,本文要聊的是如何获取某个,某个的属性,某个的方法的修饰符。或、属性、方法上是否有某个修饰符。在Class、Field、Method这三
spring/springmvc 2303 ="a",required=true)Integera){ a=1/0; returnMyAjaxResult.fail("ok",100); }服务对参数进行限制时如过没有参数a,或者参数a不是int
归档
2018-11  12 2018-12  33 2019-01  28 2019-02  28 2019-03  32 2019-04  27 2019-05  33 2019-06  6 2019-07  12 2019-08  12 2019-09  21 2019-10  8 2019-11  15 2019-12  25 2020-01  9 2020-02  5 2020-03  16 2020-04  4 2020-06  1 2020-07  7 2020-08  13 2020-09  9 2020-10  5 2020-12  3 2021-01  1 2021-02  5 2021-03  7 2021-04  4 2021-05  4 2021-06  1 2021-07  7 2021-08  2 2021-09  8 2021-10  9 2021-11  16 2021-12  14 2022-01  7 2022-05  1 2022-08  3 2022-09  2 2022-10  2 2022-12  5 2023-01  3 2023-02  1 2023-03  4 2023-04  2 2023-06  3 2023-07  4 2023-08  1 2023-10  1 2024-02  1 2024-03  1 2024-04  1 2024-08  1
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo vue 导入导出 软件使用 idea插件 协议 无聊的知识 jenkins springboot mqtt协议 keepalived minio mysql ensp 网络基础 xxl-job rabbitmq haproxy srs 音视频 webrtc javascript 加密算法
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。