javaweb请求判断浏览器类型
在下载文件的时候不同的浏览器可能会造成中文乱码,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
1768
java判断请求的浏览器类型是否是ie浏览器importjavax.servlet.http.HttpServletRequest;/*** 浏览器类型判断*@author硅谷探秘者(jia
blog
http请求判断来自pc端还是手机端
框架
1752
*@date2018年12月23日下午8:13:51*@versionV1.0*@Description:TODO(辨别请求的设备类型)*/publicclassDeviceTypes{ /*** *判断是否是pc端w
blog
web项目判断请求是否为ajax异步请求
工具
2036
web项目判断请求是否为ajax异步请求importjavax.servlet.http.HttpServletRequest;publicclassAjaxUtil
file
谷歌浏览器vpn插件 翻墙
setUpVpn
14538
谷歌浏览器vpn插件翻墙将下载的文件拖到谷歌浏览器的扩展程序窗口中,即可安装
blog
面试题servlet的执行过程
框架
3387
1.浏览器请求浏览器向服务器请求时,服务器不会直接执行我们的类,而是到web.xml里寻找路径名①:第一步,浏览器输入访问路径后,携带了请求行,头,体②:第二步,根据访问路径找到已注册的
blog
http get和post请求
计算机网络基础
2639
1.区别(1)post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)(2)post发送的数据更大(get有url长度限制)(3)post能发送更多的数据类型
blog
java反射判断类、方法、字段的修饰符
算法基础
2861
Java的反射机制可以让我们获取某个类的所有信息,本文要聊的是如何获取某个类,某个类的属性,某个类的方法的修饰符。或判断某类、属性、方法上是否有某个修饰符。在Class、Field、Method这三
blog
springmvc统一返回异常信息
spring/springmvc
2342
="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
加密算法
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。