测试tomcat上通过servlet新建文件名称含有中文乱码时是否是环境问题,docker环境,tomcat环境,宿主机环境
//webapps/ROOT/WEB-INF/web.xml
<web-app>
<servlet>
<servlet-name>WriteFileServlet</servlet-name>
<servlet-class>WriteFileServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>WriteFileServlet</servlet-name>
<url-pattern>/WriteFileServlet</url-pattern>
</servlet-mapping>
</web-app>
//webapps/ROOT/WEB-INF/classes/*.class
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Properties;
import java.io.File;
import java.nio.charset.Charset;
import java.util.Calendar;
public class WriteFileServlet extends HttpServlet {
private String message;
public void init() throws ServletException{
message="Hello World!";
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.println("<h1>"+message+"</h1>");
Properties properties=System.getProperties();
System.out.println("file.encoding编码"+properties.getProperty("file.encoding"));
System.out.println("sun.jnu.encoding编码"+properties.getProperty("sun.jnu.encoding"));
System.out.println(Charset.defaultCharset());
String fileName="";
fileName="【"+Calendar.getInstance().getTimeInMillis()+"】测试专用文件名"
File f = null;
String savePath="";
savePath="/home/test";
fileName=String.valueOf(savePath)+fileName+".xls";
System.out.println(fileName);
f=new File(fileName);
try{
boolean fvar=f.createNewFile();
if (fvar){
System.out.println("新建文件成功!");
}
else{
System.out.println("新建文件失败!文件已存在!");
}
}catch (IOException e){
System.out.println(e);
}
}
public void destroy() {
}
}
配置好后,可以直接通过http://localhost:8080/WriteFileServlet访问
网友评论