前提条件
Tomcat 7.0.90
方法一:修改配置文件
在TOMCAT_HOME/conf/server.xml配置文件内的内添加一子标签:
方法二:添加Servlet
新建一应用,然后添加如下的Servlet,然后部署应用并启动Tomcat。
package com.lun.servlet;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(name = "imgservlet", urlPatterns = { "/imgservlet/*" })
public class ImgServlet extends HttpServlet {
private static final long serialVersionUID = -3351976768417931566L;
private static final String IMG_PATH = "C:/exambase";
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String pathInfo = request.getPathInfo();
try{
BufferedInputStream in = new BufferedInputStream(new FileInputStream(String.format("%s%s", IMG_PATH, pathInfo)));
BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
try {
byte[] content = new byte[in.available()];
in.read(content);
response.setContentType("image/png,image/jpeg,image/gif,image/bmp");
out.write(content);
}finally {
in.close();
out.close();
}
}catch(FileNotFoundException ex) {
throw new IOException(String.format("%s Not Found.", pathInfo));
}catch(Exception ex) {
throw ex;
}
}
}
解决路径含中文时出现乱码问题
本次测试使用的是Tomcat/7.0.90,默认解码URL的字符集是ISO-8859-1,而浏览器发出URL是用UTF-8编码。若URL含中文,乱码现象自然而然会发生。
解决之道:在TOMCAT_HOME/conf/server.xml配置文件内的
添加一属性URIEncoding="UTF-8"。
参考资料
文章来源: www.oschina.net,作者:巨輪,版权归原作者所有,如需转载,请联系作者。
原文链接:https://my.oschina.net/jallenkwong/blog/3165160