paip.解决中文url路径的问题图片文件不能显示
paip.解决中文url路径的问题图片文件不能显示
#现状..中文url路径 图片文件不能显示
<img src="img/QQ截图20140401175433.jpg" width="168" height="142" id="imgx" />
#原因解析
查看累挂发送d url,,,俄使用的是ff..它把url转换成个 http://localhost/img/QQ%E6%88%AA%E5%9B%BE20140401175433.jpg 发送出去..每汉字3个%字符,所以,表明是utf8编码的url..
服务端使用d resin4,估计不使用utf decodes..
#解决方式
1.更改resin4 cfg ,设置utf8为url参数解析....se,设置lei 不起效果...只好自己解决le ..
2.urlrewrtite>>servlet ,自己解析url参数,输出图片流...
先是使用jsp输出图片流,网上说是ok兰se ,走十不行,牙不晓得为甚...跟个servlet输出的基本的一样兰木...
作者 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
来源: http://blog.csdn.net/attilax
##/imServer/WebRoot/WEB-INF/urlrewrite.xml
<rule>
<from>/.*QQ(.*).jpg</from>
<to>/visitorBuscard_list.json?data=showimg&urlCnChar=$1</to>
</rule>
## spring mvc cfg
//todo spring mvc hot deplyoy
@RequestMapping(value = "/visitorBuscard_list" )
public void visitorBuscard_list(String data, HttpServletResponse response,HttpServletRequest request) {
core.log("--data:"+data);
if(data!=null){
if(data.equals("probelist"))
{
baseList(response,new TProbeCustomDAO());
}else if(data.equals("vistInvtSet"))
{
new probeService().saveVistInvtSet(request);
}
else if(data.equals("showimg"))
{
imgService.outputImg(request, response);
}
}else
##pasrse url 参数,output pic
public static void outputImg(HttpServletRequest req,
HttpServletResponse response) {
String uri= req.getRequestURI();
core.log(" --get uri:"+uri);
core.log(" --get url:"+req.getRequestURL());
core.log(" --getQueryString:"+req.getQueryString());
Map m= urlUtil.Param2Map(req);
core.log("--o4f1");
listUtil.print(m);
String jpgPart=m.get("urlCnChar".toLowerCase()).toString();
String jpgPart_real=urlUtil.decodeByUtf8(jpgPart);
jpgPart_real=jpgPart;
String realPath=pathx.webAppPath(req)+"/img/QQ"+jpgPart_real+".jpg";
core.log("--realpath:"+realPath);
response.reset();
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
response.setContentType("image/jpeg");
// response.setHeader("Content-Type", "image/jpeg4");
// response.setHeader("Transfer-Encoding", "chunked");
ServletOutputStream sout = null;
try {
sout = response.getOutputStream();
} catch (Exception e1) {
core.log(e1);
}
// InputStream in = rs.getBinaryStream(1);
// byte b[] = new byte[0x7a120];
// in.read(b);
byte[] b = imgUtil.toByteArr(realPath);
response.setContentLength(b.length);
try {
sout.write(b);
sout.flush();
// response.flushBuffer();
sout.close();
} catch (Exception e) {
core.log(e);
}
}
#resin4 网上寻找dao的方法...不起生效...
Resin的配置。(conf/resin.conf)
character-encoding
Resin 1.1
child of: resin, server, host-default, host, web-app-default, web-app
default: The default value is ISO-8859-1.
Specifies the default character encoding for the environment.
<web-app id='/'>
<character-encoding>shift_jis</character-encoding>
...
</web-app>
这个是resin doc里面的我是在web-app-default里面加上了encoding的配置
<web-app-default>
<character-encoding>UTF-8</character-encoding>
</web-app-default>
希望对你的项目有帮助。
于是在Resin中就要修改配置文件来设置编码格式,方法如下:
打开resin-4.0.22\conf\resin.xml文件
找到<web-app-default>标签,添加<character-encoding>UTF-8</character-encoding>
题,但是将图片显示在Jsp视图的时候,就会抛出一个异常getOutputStream() has already been called for this response,这是因为,request的输出流已经默认被servlet打开,大家都知道Jsp最终会被转化成servlet,而servlet的输出流已经打开,无法关闭(本人测试过),所以用Jsp来打开输出流是行不通的。
所以,无奈之下,我们只能用原始的servlet来实现这个功能,可以直接通过servlet的输出流来显示图片,没必要再打开输出流
#jsp serrvelt 输出比较图片
Accept-Ranges bytes
Cache-Control max-age=86400
Content-Length 25027
Content-Type image/jpeg
Date Thu, 17 Apr 2014 03:22:13 GMT
Etag ""
Last-Modified Wed, 16 Apr 2014 03:31:53 GMT
Server Microsoft-IIS/6.0
X-Powered-By ASP.NET
X-UA-Compatible IE=EmulateIE7
#my
Content-Type image/jpeg; charset=GBK jeig bsi juyaowenti..
Date Thu, 17 Apr 2014 03:04:12 GMT
Server Resin/4.0.22
Transfer-Encoding chunked
Content-Length 8802
Content-Type image/jpeg; charset=GBK
Date Thu, 17 Apr 2014 03:07:16 GMT
Server Resin/4.0.22
err
Cache-Control no-cache
Content-Type image/jpeg; charset=GBK
Date Thu, 17 Apr 2014 03:57:47 GMT
Expires Thu, 01 Jan 1970 00:00:00 GMT
Server Resin/4.0.22
Transfer-Encoding chunked, chunked
---corect
Cache-Control no-cache
Content-Type image/jpeg; charset=GBK
Date Thu, 17 Apr 2014 03:58:49 GMT
Expires Thu, 01 Jan 1970 00:00:00 GMT
Server Resin/4.0.22
Transfer-Encoding chunked, chunked
参考:
Resin4中文问题解决办法 - newflypig的专栏 - 博客频道 - CSDN.NET
tomcat and resin服务器如何设为UTF8编码 - 思想比知识更重要 成长比成功更重要 - BlogJava
paip.解决中文url路径的问题图片文件不能显示的更多相关文章
- 解决“用PicGo-2.3.0-beta5 + GitHub做博客图床,github仓库图片文件不显示”的问题记录(备忘)
解决"用PicGo-2.3.0-beta5 + GitHub做博客图床,github仓库图片文件不显示"的问题记录(备忘) 历时几个小时百度,终于靠自己理解解决了GitHub仓库图 ...
- FileReader:读取本地图片文件并显示
最近忙得比狗还惨,导致长时间没能更新文章,真心对不住啊.抽空整理了下关于在页面上读取和显示本地图片的实例文章,本文通过实例讲解如何使用支持FileReader浏览器的用户将能够通过一个file inp ...
- (已解决)Eclipsez中打不开c++文件,显示Editor could not be initialized.
新建的游戏导入Eclipse能正常运行,配置什么的都弄好了,游戏运行无任何问题!问题是:关闭Eclipse后,重新打开,就会出现An internal error occurred during: & ...
- JAVA中解决Filter过滤掉css,js,图片文件等问题
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOE ...
- 转:JAVA中解决Filter过滤掉css,js,图片文件等问题
原文链接:https://www.cnblogs.com/ermeng/p/6440966.html public void doFilter(ServletRequest request, Serv ...
- Web---演示servlet技术(servlet生命周期),解决中文乱码问题
本节讲解决中文乱码问题的4种方法. 还有更好的方法,也就是用过滤器,这里就不演示了,博主目前也不会~呼♪(^∇^*)~过段时间才会学. servlet生命周期演示: index.jsp: <%@ ...
- Eclipse+pydev解决中文显示和注释问题的方法大全
Eclipse+pydev解决中文显示和注释问题的方法大全 Eclipse的设置 window->preferences->general->editors->textedit ...
- springmvc+jsp引用本地图片文件
1.图片文件路径,注意图片文件夹和WEB-INFO文件夹同级 2.web.xml配置 <servlet-mapping> <servlet-name>default</s ...
- div中粘贴图片并上传服务器 div中拖拽图片文件并上传服务器
应用简介:此文主要是描述如何在前端div中直接ctrl+v 粘贴图片,并上传到服务器,包括拖拽图片文件到div中 应用场景描述:用QQ或者其它切图软件截图,在指定的div中ctrl+v 粘贴并显示,点 ...
随机推荐
- Python笔记——break的注意事项
在python中有个控制流的语句:break 它是用来终止循环语句的,不管此时循环体进行到哪,只要碰到break都停止执行循环语句. 1.举例脚本: #!/usr/bin/env python for ...
- Scrum会议10.19
Scrum会议 组名称:好好学习 项目名称:记账本 参会成员:林莉(Master)胡丽娜 宫丽君 汪东涵 时间:2016.10.19 已完成内容: 1.完成新项目的查找,查找学姐的代码和项目. 2.理 ...
- andorid Activity和Service音乐播放器
AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xm ...
- 内置函数 和 select练习3
19. 查询选修"3-105"课程的成绩高于"109"号同学成绩的所有同学的记录. select * from score where cno='3-105' ...
- noip2010-t2
题目大意:小明过生日的时候,爸爸送给他一副乌龟棋当作礼物.乌龟棋的棋盘是一行 N个格子,每个格子上一个分数(非负整数).棋盘第 1 格是唯一 的起点,第 N格是终点,游戏要求玩家控制一个乌龟棋子从起点 ...
- JS-定时器管理实例
/** * Created by 12461 on 2016/11/6. */window.onload = function () { var oBtn1 = document.getElement ...
- pullToRefresh下拉刷新上拉加载
PullToRefresh 是一个第三方的工程. 之前的自定义下拉刷新控件貌似不太好用,于是网上找了这个. 参考:http://www.cnblogs.com/summers/p/4343964.ht ...
- 『TCP/IP详解——卷一:协议』读书笔记——06
2013-08-20 14:41:01 2.8 最大传输单元MTU MTU,最大传输单元:以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492字节.这个不同网络对应的传输上限 ...
- 多重背包问题:悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(HDU 2191)(二进制优化)
悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 HDU 2191 一道裸的多重背包问题: #include<iostream> #include<algorithm> #i ...
- Linux sort 多字段分组排序
常用参数: -t: 指定分隔符 -k: 指定域 -u: 去除重复行 -n: 以数值排序 -r: 降序排序 (sort默认的排序方式是升序) -o: 结果重定向输出到文件 1.源文件: # cat hh ...