最近做一个SSH框架的项目,用tomcat发布,需要上传图片到指定路径,然后再将图片显示在页面上。有一个问题:如果是英文名称的图片,就正常显示,可如果是中文的,它就是显示不出来,于是乎,在网上各种百度,各种尝试,查出有两种解决方法:

方法一:

  在tomcat下的server.xml文件中,添加编码格式如图:

但是这种方法是治标不治本,如果换一种服务器发布,照样会出现乱码问题,这时就需要采用第二种方法。

方法二:

  定义一个中文过滤器,步骤如下:

  第一步:创建过滤器

    

import java.io.IOException;
import java.net.URLDecoder; import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest; public class EncodingFilter implements Filter{ String encoding=null;
FilterConfig filterConfig=null;
//销毁方法
public void destroy() {
// TODO Auto-generated method stub
this.encoding=null;
this.filterConfig=null;
} //过滤处理方法
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest req = (HttpServletRequest) request;
String uri = req.getRequestURI();
String ch = URLDecoder.decode(uri, encoding);
if(uri.equals(ch)) {
chain.doFilter(req, response);
return;
}
ch = ch.substring(req.getContextPath().length());
filterConfig.getServletContext().getRequestDispatcher(ch).forward(req, response);
} //初始化方法
public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig=filterConfig;
this.encoding=filterConfig.getInitParameter("encoding");
} }

  第二步:在web.xml中配置此过滤器

  

   <!-- 中文编码过滤器 -->
<filter>
<filter-name>encodingFilter</filter-name><!--过滤器的名字-->
<filter-class>com.hdsx.gispf.filter.EncodingFilter</filter-class><!--过滤器文件所在位置-->
<init-param>
<param-name>encoding</param-name><!--初始参数名,指定jsp页面所用 编码集-->
<param-value>UTF-8</param-value><!--初始参数值 ,指定中文编码集-->
</init-param>
</filter>
<!-- 过滤器 映射路径配置 -->
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern><!-- 对所有目录进行中文过滤 -->
</filter-mapping>

  

  ok,大功告成,这样就可以正常显示中文名称的图片了。

  

关于SSH中tomcat下中文名称图片不显示的问题的更多相关文章

  1. 如何在Linux中tomcat下运行一个web项目

    如何在Linux中tomcat下运行一个web项目 然后启动Tomcat项目.运行的运行后会自动将war包解压. 如果页面报404,那么请查看tomcat日志文件,它一定是报错了....

  2. 笔记-ubuntu中/home下中文目录改英文

    安装ubuntu后,如果选择的语言是中文,那/home下的文件夹会默认中文,在使用命令行的时候很不方便,此文记录切换成英文的方式,以便日后查看. 将目录重命名为英文 可以使用图形化界面,直接重命名 可 ...

  3. eclipse中Tomcat修改项目名称

    1.打开你的项目目录,找到一个.project文件,打开后修改<name> test</name>中的值,将test修改成你要修改的名字: 2.在项目目录下,打开.settin ...

  4. myeclipse下拷贝的项目,tomcat下部署名称和导出为war包的名称默认值修改

    拷贝一个项目,作为一个新的项目,给它换了名字,这时候默认的部署名称等都是原来项目的,这时候要在属性里面修改一下.

  5. silverlight中 设置 头像(添加图片)

    参考文章: http://www.cnblogs.com/wsdj-ITtech/archive/2009/08/26/1554056.html 1. ChainManager.xaml 前台 < ...

  6. IOS下拉放大图片

    代码地址如下:http://www.demodashi.com/demo/11623.html 一.实现效果图 现在越来越多的APP中存在下拉放大图片的效果,今天贡献一下我的实现这种方法的原理,和我遇 ...

  7. TextView显示HTML文本时<IMG>标签指定图片的显示处理

    TextView显示文本时是支持一些HTML标签的(具体支持那些标签会在下面附录列出),不会需要先用HTML的static方法fromHtml来转换一下. Spanned text = Html.fr ...

  8. 在MyEclipse中改了项目名称,到tomcat的webroot下发现,部署的名称还是原来的。

    在MyEclipse中改了项目名称,到tomcat的webroot下发现,部署的名称还是原来的. 解决方法:选中项目名称右键properties,展开Myeclipse,选择web,web Conte ...

  9. python 1: 解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题

    问题: 我在ubuntu14.04下用python中的matplotlib模块内的pyplot输出图片不能显示中文,怎么解决呢? 解决: 1.指定默认编码为UTF-8: 在python代码开头加入如下 ...

随机推荐

  1. KNN算法应用

    import numpy as np# 运算符模块,这里主要用来排序 import operator import matplotlib.pylab as plt def create_dataset ...

  2. 1、str.join() 2、fromkeys() 3、深浅拷贝 4、set()

    1. 补充基础数据类型的相关知识点 1. str. join() 把列表变成字符串 2. 列表不能再循环的时候删除. 因为索引会跟着改变 3. 字典也不能直接循环删除. 把要删除的内容记录在列表中. ...

  3. Android 中Application向Activity 传递数值

    比如极光注册时获取用户的唯一标示ID需要在登录时进行传递,实现消息的指定用户推送功能 public String id; public String getId() { return id; } pu ...

  4. laravel框架部署后有用命令

    1.重新生成APP_KEY php artisan key:generate执行后.env文件内的APP_KEY重新生成. 2.修改.env文件内系统运行环境,由debug环境设置为生产环境 APP_ ...

  5. rviz1

    msckf_vio ####查看topic列表:wj@wj-Inspiron-5437:~$ rostopic list/benchmark_publisher/path/cam0/image_raw ...

  6. sqlserver数据库的备份与还原——完整备份与还原

    sqlserver提供四种数据库备份方式 完整备份:备份整个数据库的所有内容包括书屋和日志 差异备份:只备份上次完整备份后更高的数据部分 事务日志备份:只备份事务日志里的内容 文件或文件组备份:只备份 ...

  7. Sqlserver的身份验证模式

    1.服务器名称: . 在服务器名称这里,我们有以下几种选择来连接到本地: (1)默认的服务器名称:也就是电脑主机的名称 (2)".",“.”就表示主机. (3)localhost ...

  8. JFinal上传文件时用getFile()方法报错

    原因是缺少cos.jar包,补上即可.

  9. Windows 获取unix timestamp

    #include <stdio.h> #include <time.h> int main(){ SYSTEMTIME lpSysTime; GetLocalTime(& ...

  10. VS2013中Nuget程序包管理器控制台使用入门(三)-项目实战(原创)

    VS2013中Nuget程序包管理器控制台使用入门(三)-项目实战 1.给指定项目安装Newtonsoft.Json ,Version 4.5.11 PM> Install-Package Ne ...