关于SSH中tomcat下中文名称图片不显示的问题
最近做一个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下中文名称图片不显示的问题的更多相关文章
- 如何在Linux中tomcat下运行一个web项目
如何在Linux中tomcat下运行一个web项目 然后启动Tomcat项目.运行的运行后会自动将war包解压. 如果页面报404,那么请查看tomcat日志文件,它一定是报错了....
- 笔记-ubuntu中/home下中文目录改英文
安装ubuntu后,如果选择的语言是中文,那/home下的文件夹会默认中文,在使用命令行的时候很不方便,此文记录切换成英文的方式,以便日后查看. 将目录重命名为英文 可以使用图形化界面,直接重命名 可 ...
- eclipse中Tomcat修改项目名称
1.打开你的项目目录,找到一个.project文件,打开后修改<name> test</name>中的值,将test修改成你要修改的名字: 2.在项目目录下,打开.settin ...
- myeclipse下拷贝的项目,tomcat下部署名称和导出为war包的名称默认值修改
拷贝一个项目,作为一个新的项目,给它换了名字,这时候默认的部署名称等都是原来项目的,这时候要在属性里面修改一下.
- silverlight中 设置 头像(添加图片)
参考文章: http://www.cnblogs.com/wsdj-ITtech/archive/2009/08/26/1554056.html 1. ChainManager.xaml 前台 < ...
- IOS下拉放大图片
代码地址如下:http://www.demodashi.com/demo/11623.html 一.实现效果图 现在越来越多的APP中存在下拉放大图片的效果,今天贡献一下我的实现这种方法的原理,和我遇 ...
- TextView显示HTML文本时<IMG>标签指定图片的显示处理
TextView显示文本时是支持一些HTML标签的(具体支持那些标签会在下面附录列出),不会需要先用HTML的static方法fromHtml来转换一下. Spanned text = Html.fr ...
- 在MyEclipse中改了项目名称,到tomcat的webroot下发现,部署的名称还是原来的。
在MyEclipse中改了项目名称,到tomcat的webroot下发现,部署的名称还是原来的. 解决方法:选中项目名称右键properties,展开Myeclipse,选择web,web Conte ...
- python 1: 解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题
问题: 我在ubuntu14.04下用python中的matplotlib模块内的pyplot输出图片不能显示中文,怎么解决呢? 解决: 1.指定默认编码为UTF-8: 在python代码开头加入如下 ...
随机推荐
- python内置函数getattr用法
class Tests(object): #定义类 aaa = '10' #定义变量 def test(self): #定义类的方法test ...
- pta7-19打印学生选课清单(模拟)
题目链接:https://pintia.cn/problem-sets/1101307589335527424/problems/1101314114875633664 题意:输入n个学生,k門课程, ...
- xadmin系列之单实例模式
先看下单实例的定义 python的模块实现单例模式是python语言特有的,python的模块天然就是单例的,因为python有个pyc文件,导入一次后,第二次导入直接从pyc中取数据了 这里我们主要 ...
- Exceptions
[定义] error: external, like out of memory exception: internal, like file not found 父类都是throwable 逻辑有错 ...
- 在eclipse上写代码的时候,tomcat突然不能用了,重启都是闪一下就关了
严重: A child container failed during start 严重: The required Server component failed to start so Tomca ...
- listView 解决焦点冲突问题 item项和子控件之间的冲突
listView 在item布局的顶级布局中设置 android:descendantFocusability="blocksDescendants"可以阻止子控件获取焦点 这样使 ...
- jQuery 向另一个页面传参,同时跳转到该页面
为了使参数能够传递到另外一个页面,使用ajax的跳转方式 $.ajax({ type: "POST", url:"/admin/sysjgl/sysjck/sjcs&qu ...
- Struts框架的数据封装二之模型驱动方式
Struts2中提供了两类数据封装的方式? * 第二种方式:模型驱动 > 使用模型驱动的方式,也可以把表单中的数据直接封装到一个JavaBean的对象中,并且表单的写法和之前的写法没有区别! & ...
- [z]根据awr报告查看最慢的sql语句
http://blog.itpub.net/12679300/viewspace-2125679/ 当系统运行了一段时间后,系统基本也趋于稳定了,SQL调优也变了DBA的一个主要的工作内容,很多时候都 ...
- echart.js组件编写
1.传参 <area-chart :chartdata='monitorTimes' :datatype='typeSelected' :dataX = '"tid"' :t ...