关于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代码开头加入如下 ...
随机推荐
- 解决镜像无法删除的问题multiple repositories
Error response from daemon: conflict: unable to delete ea5f89e79b1e (must be forced) - image is refe ...
- mysql垂直分区和水平分区
数据库扩展大概分为以下几个步骤: 1.读写分离:当数据库访问量还不是很大的时候,我们可以适当增加服务器,数据库主从复制的方式将读写分离: 2.垂直分区:当写入操作一旦增加的时候,那么主从数据库将花更多 ...
- xadmin系列之django的url分发的方式
一.先介绍一下我们自己的urls中是如何进行路由分发的 一.一级路由 urlpatterns = [ url(r'^upload/', views.upload,name="upload&q ...
- js文字展示各种滚动效果
js文字展示各种滚动效果:http://www.dowebok.com/demo/188/
- 如何利用git由本机向github上传文件 ssh方式的
1.直接在git bash里操作,输入命令cd ~/.ssh ls 2.如果不是这样的,说明没有生产公匙,然后输入命令 ssh-keygen -t rsa -C "自己的邮箱地址" ...
- java命令启动jacocoagent及生成报告
启动jacocoagent: java -Xms1024m -Xmx2048m -XX:-UseGCOverheadLimit -Ddruid.keepAlive=true -javaagent:/h ...
- php新增的一些特性
php新增的特性,只是略微整理,并不完全. 一.php5.3添加的新特性 1.?:简化的三元运算符 <?php $cur = $cur ? $cur : 1; $cur = $cur ?: 1; ...
- Linux下实时查看GPU状态
参考链接: http://blog.csdn.net/yao_yao_2015/article/details/53404389 1. 显示当前GPU使用情况 Nvidia自带了一个nvidia-sm ...
- C#设计模式-2工厂方法模式(Factory Method)
什么是工厂模式?类比生活中的概念,当我们需要打电话的时候,我们需要一部手机,我们通常会选择直接去卖手机的实体店买.但在程序设计中,当我们需要调用一个类(PhoneA或PhoneB)的方法的时候,我们往 ...
- linux 发送Post请求 json格式
curl -H "Content-type: application/json" -X POST -d '{"text":"总体来说很不错,环境挺好的 ...