1. 程式人生 > >Jsp中圖片顯示問題以及顯示絕對路徑圖片問題

Jsp中圖片顯示問題以及顯示絕對路徑圖片問題

Jsp中圖片顯示問題

最近專案中,有圖片上傳的情況,要求:儲存路徑儲存在配置檔案中,放在系統絕對路徑下,命名方式:path/image/分類/imageName。
過程中,分類目錄使用的是中文路徑,一直沒有想到因為中文路徑會導致圖片不顯示,在檢視圖片時,一直都顯示404,找不到資源,但是明顯路徑沒有問題,圖片也確實存在,害的本人頭疼好久,突然發現顯示圖片的路徑中,中文被編碼成一串字元,難道是因為路徑包涵中文?線上搜尋,發現確實有這種情況,所以試了一下,結果成功顯示。
解決方法:
在tomcat中設定中文路徑:tomcat中server.xml檔案中的connector部分:

<Connector
connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

在其中新增一個屬性:URIEncoding=”utf-8”。此處編碼和網頁編碼相同。如:

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="utf-8"/>

可以顯示圖片。究其原因,在html,jsp頁面中,引用了帶漢字的圖片或者目錄,形如這樣,如果沒有在tomcat配置URIEncoding屬性,則無法顯示。

Jsp中顯示絕對路徑圖片

1.使用servlet儲存圖片,將servlet當做img的src來顯示。如下:

public void doPost(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException { 
    response.setContentType("text/html; charset=UTF-8"); 
    response.setContentType("image/jpeg"); //設定圖片格式格式,這裡可以忽略 
    FileInputStream fis = null
; OutputStream os = null; try { fis = new FileInputStream(imagePath);//圖片路徑 os = response.getOutputStream(); int count = 0; byte[] buffer = new byte[1024*1024]; while ( (count = fis.read(buffer)) != -1 ) os.write(buffer, 0, count); } catch (IOException e){ e.printStackTrace(); }finally { try { if (os != null) { os.close(); } if (fis != null) { fis.close(); } } catch (IOException e) { e.printStackTrace(); } } }

這是servlet的方法,然後在jsp頁面的img標籤的src設定為訪問該servlet即可。
2.另一種方式,在使用springmvc這樣的框架時,如果我要新增一個servlet,個人覺得沒有什麼必要,那麼就在jsp頁面中的img的src中設定訪問路徑,如下:

<img name="imgdis" alt="圖片顯示" src="${ctx }//showImage?id=${image.id}">

此時在請求url對應方法中新增類似servlet中的doPost方法相應方法即可。例如:

public void showImage(HttpServletResponse response, String imagePath) {
        response.setContentType("text/html; charset=UTF-8");
        // response.setContentType("image/jpeg"); // 設定圖片格式格式,這裡可以忽略
        FileInputStream fis = null;
        OutputStream os = null;
        try {
            fis = new FileInputStream(imagePath);
            os = response.getOutputStream();
            int count = 0;
            byte[] buffer = new byte[1024 * 1024];
            while ((count = fis.read(buffer)) != -1)
                os.write(buffer, 0, count);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (os != null) {
                    os.close();
                }
                if (fis != null) {
                    fis.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

這樣絕對路徑的圖片就可以被顯示了。

相關推薦

jsp的basePath和path (絕對路徑 相對路徑)(重要)

在JSP中的如果使用 “相對路徑” 則有可能會出現問題. 因為網頁中的 “相對路徑” , 他是相對於 “URL請求的地址” 去尋找資源.  上面這句話是什麼意思呢 ? 舉個例子: 假如我們有一個專案: MyApp 在該專案下, 有一個jsp資料夾 該資料夾下

Jsp圖片顯示問題以及顯示絕對路徑圖片問題

Jsp中圖片顯示問題 最近專案中,有圖片上傳的情況,要求:儲存路徑儲存在配置檔案中,放在系統絕對路徑下,命名方式:path/image/分類/imageName。 過程中,分類目錄使用的是中文路徑,一直沒有想到因為中文路徑會導致圖片不顯示,在檢視圖片時,一直

Jsp頁面圖片img標籤使用絕對路徑進行顯示

版權宣告:博主為初學者,大家一起交流學習!讓我們一起進步! https://blog.csdn.net/YuanMxy/article/details/78644378 最近在做一個商城系統,用來鞏固自己所需學的java知識,中間遇到了一個很簡單但有由於自身基礎不牢導致的圖片絕對路徑顯示的問題,

JSP頁面顯示絕對路徑圖片問題

file.jsp程式碼: <%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*,java.util.*,java.io.*" errorPage=""%&g

jsp img標籤怎麼插入一個絕對路徑圖片?

如果在jsp中,直接用<img src="D:/pt/1.jpg" />這樣引入絕對路徑的圖片時,是找不到此圖片的,因為他是找自身工程的路徑,也就是我這個工程名字叫 MyGoodsShop,他所解析的路徑為<img src="http://localhost:8080/MyGood

jsp當前時間的顯示及格式

jdq8576.jsp  <%@ page import="java.util.Date" %> <%@ page import="java.text.SimpleDateFormat" %><%-- Created by IntelliJ

Ubuntu18.04宕機以及顯示卡切換解決辦法

現在的膝上型電腦通常有兩塊顯示卡:Intel整合顯示卡和Nvidia(英偉達)獨立顯示卡。這篇教程介紹Ubuntu如何正確地切換Intel和Nvidia顯示卡。你應該使用哪一個顯示卡?對於玩遊戲或3D製圖,圖形計算這樣對顯示卡要求高的任務,你需要使用Nvidia獨立顯示卡。如果你既不玩遊戲,不繪製3D製圖,也

JAVA以及JSP讀取XML檔案(解析及路徑問題)

    在系統開發過程中,從配置檔案中讀取配置資訊是每一個系統必須具備的功能,例如,我們要配置讀取資料庫配置資訊,包括驅動程式名、連線字串,使用者名稱,口令等資訊,由於這些資訊會隨著使用者的不同而發生

JS無縫滾動顯示JSPmarquee標籤滾動顯示

一、JS向上滾動的文字特效程式碼 這個向上滾動的文字特效JS程式碼比較簡潔,程式碼量很少,你可以根據具體情況使用,做一個下載連結滾動的效果 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

GridView第一個item不顯示,以及顯示方式不正確的調整方式。

專案中在GridView的使用過程中遇到不少問題,在此記錄一下,給自己提個醒: Gridview第一個item不顯示的問題。 在GridView中,我們在getView中可以對映每個item的佈局,通過inflate的方式。這裡參考一下大神的分析,具體在這裡有詳細的描述三種

Android儲存一張drawable下的圖片資源儲存到絕對路徑

Resources res = this.getResources(); BitmapDrawable d = (BitmapDrawable) res.getDrawable(R.drawable.ic_launcher); Bitmap img = d.getBitmap();

JSPEL表示式以及JSTL標籤庫

在JSP中JSTL標籤庫用的還是比較多的,今天就稍微總結一些JSTL中常用的一些標籤: 1.在JSP中還有一個就是EL表示式經常和JSTL標籤聯合使用 格式:${} ${user.name},${user["name"]} 上面的寫法一樣,但有2種情

jsp通過I/O流方式讀取圖片並展示到頁面

之前在做一個專案時用到了圖片上傳並立即展示到頁面瀏覽,而且圖片存放在硬碟上的一個資料夾中而非在工程與資料庫中,這就會出現一個問題,如果不是在開發程式環境中訪問圖片頁面,則會出現圖片不能展示情況,原因很明顯,就是外部無法訪問到伺服器硬碟上的圖片。所以這時就需要用到i/o流讀取

JSP如何使用JQuery及相對路徑問題

首先引入JQuery對應的js檔案,然後引入自己的js檔案,這裡要注意先後順序 <script type="text/javascript" src="./js/jquery-2.1.3.js"></script> <scri

Linux 安裝FastDFS圖片伺服器以及配合nginx實現圖片檢視

各位同學,今天我們來學習一下如何安裝FastDFS圖片伺服器,首先我們先來介紹一下什麼是圖片伺服器。 1.什麼是FastDFS FastDFS是用c語言編寫的一款開源的分散式檔案系統。FastDFS為網際網路量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等

.pgm圖片簡介以及Python讀取.pgm圖片的方法

一、什麼是.pgm圖片? .pgm檔案由於模式的不同其資料儲存方式也有所不同,下面介紹P2和P5模式的.pgm檔案的格式。 1、P2模式的.pgm檔案 P2模式的.pgm檔案儲存如下圖所示: 其內容釋義如下: ①第一行內容“P2”表示.pgm

MVC根據後臺絕對路徑讀取圖片顯示在IMG

copy ret execute ble 操作文件 初學者 實體類 cin jpeg 數據庫存取圖片並在MVC3中顯示在View中 根據路徑讀取圖片: 1 byte[] img = System.IO.File.ReadAllBytes(@"d:\x

vc資源載入png圖片以及顯示

因要做一個小的登陸客戶端,所用圖片格式為png.但較少,所以想直接放到資源中.碰到的第一個問題是.net2003中載入png圖片到資源中總是不成功.試了下發現jpg也不行,jpg圖片會提示"不是正確的JPEG格式",後來用vc6.0開啟資原始檔載入成功的.vs2003中原因還未找到,有知道

jsp實現上傳圖片即時顯示效果功能

<script> function setImagePreview() { var docObj=document.getElementById("doc"); var imgObjPreview=document.getElementById("preview

OpenCV學習第一篇:開發環境搭建以及顯示電腦圖片

第一步:我們下載好了opencv安裝在檔案內,位置自選,我的是這樣的,這一步最簡單 第二步:我的電腦右鍵屬性-高階系統設定-環境變數-系統變數-Path 加上;D:\opencv\build\x64