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&amp;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路径的问题图片文件不能显示的更多相关文章

  1. 解决“用PicGo-2.3.0-beta5 + GitHub做博客图床,github仓库图片文件不显示”的问题记录(备忘)

    解决"用PicGo-2.3.0-beta5 + GitHub做博客图床,github仓库图片文件不显示"的问题记录(备忘) 历时几个小时百度,终于靠自己理解解决了GitHub仓库图 ...

  2. FileReader:读取本地图片文件并显示

    最近忙得比狗还惨,导致长时间没能更新文章,真心对不住啊.抽空整理了下关于在页面上读取和显示本地图片的实例文章,本文通过实例讲解如何使用支持FileReader浏览器的用户将能够通过一个file inp ...

  3. (已解决)Eclipsez中打不开c++文件,显示Editor could not be initialized.

    新建的游戏导入Eclipse能正常运行,配置什么的都弄好了,游戏运行无任何问题!问题是:关闭Eclipse后,重新打开,就会出现An internal error occurred during: & ...

  4. JAVA中解决Filter过滤掉css,js,图片文件等问题

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOE ...

  5. 转:JAVA中解决Filter过滤掉css,js,图片文件等问题

    原文链接:https://www.cnblogs.com/ermeng/p/6440966.html public void doFilter(ServletRequest request, Serv ...

  6. Web---演示servlet技术(servlet生命周期),解决中文乱码问题

    本节讲解决中文乱码问题的4种方法. 还有更好的方法,也就是用过滤器,这里就不演示了,博主目前也不会~呼♪(^∇^*)~过段时间才会学. servlet生命周期演示: index.jsp: <%@ ...

  7. Eclipse+pydev解决中文显示和注释问题的方法大全

    Eclipse+pydev解决中文显示和注释问题的方法大全 Eclipse的设置 window->preferences->general->editors->textedit ...

  8. springmvc+jsp引用本地图片文件

    1.图片文件路径,注意图片文件夹和WEB-INFO文件夹同级 2.web.xml配置 <servlet-mapping> <servlet-name>default</s ...

  9. div中粘贴图片并上传服务器 div中拖拽图片文件并上传服务器

    应用简介:此文主要是描述如何在前端div中直接ctrl+v 粘贴图片,并上传到服务器,包括拖拽图片文件到div中 应用场景描述:用QQ或者其它切图软件截图,在指定的div中ctrl+v 粘贴并显示,点 ...

随机推荐

  1. 第1章 C#类型基础

    1.1值类型和引用类型 1.1.1 值类型 使用值类型之前需要对值类型的所有元素初始化(普通值类型和结构体). 结构还有一个特性:调用结构上的方法前,需要对其所有的字段进行赋值,为了避免对结构体中所有 ...

  2. 开源PLM软件Aras详解一 安装

    对于Aras,一定很多人陌生,Aras Innovator是开源的PLM系统,优点就是免费license,没有节点限制,最棒的是基于SOAP,扩展性非常强,但是国内很多想入手的人入门很难, 关于Ara ...

  3. 交换机和VLAN

    交换机 交换机的两个作用:一是维护CAM表,CAM表是计算机的MAC地址和交换机端口的映射表:另一个是根据CAM来进行数据的转发. 以太网交换机转发数据帧有三种方式: 1.存储转发:即先存储后转发的方 ...

  4. CXF 入门:创建一个基于WS-Security标准的安全验证(CXF回调函数使用,)

    http://jyao.iteye.com/blog/1346547 注意:以下客户端调用代码中获取服务端ws实例,都是通过CXF 入门: 远程接口调用方式实现 直入正题! 以下是服务端配置 ==== ...

  5. [付费视频]Delphi视频Android开发使用静态库(A)和动态库(SO)

    关于本视频:前阵子接到一个委托,解决Delphi开发Android程序中串口通信的问题,厂家那边提供了c文件,需要翻译成delphi可用,翻译倒是比较简单.不过后来翻译读写ic卡单元的时候进行不下去了 ...

  6. SD-WAN技术分析

    1.概述 转载须注明来自 SDNLAB并附上本文链接. 本文链接:http://www.sdnlab.com/17810.html 宽带接入以及Internet骨干网容量的持续提升,促使企业WAN技术 ...

  7. python学习之路-day2-pyth基础2

    一.        模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,第三方库存放位置:site-packages sys模块简介 导入模块 import sys 3 sys模 ...

  8. linux 常用目录

    /bin   执行文件 ls, mv, rm, mkdir, rmdir, gzip, tar, telnet /boot linux核心文件内核 vmlinuz-xxx(Linux 的 Kernel ...

  9. 【JSP】自定义标签开发入门

    JSP 自定义标签 自定义标签是用户定义的JSP语言元素.当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对被 称为tag handler的对象的操作,即当servlet执行时We ...

  10. tomee 系列问题

    1. remote client 无法建立连接 修改system.properties # allowed packages to be deserialized, by security we de ...