为什么我要使用 servlet 下载没有扩展名的文件?
Why am I downloading a file with no extension using servlet?
我在访问 servlet 时正在下载没有扩展名的文件
这是doGet方法的代码(这些只是测试线,不要当真):
try {
PrintWriter pw = response.getWriter();
pw.write("test");
pw.println(request.getParameter("a"));
DAOFactory m = DAOFactory.getDAOFactory(1);
Connection conForTests = MySQLDAOFactory.getConnection();
UserDao s = m.getUserDao();
boolean check = s.validateUser("test1","test1",conForTests);
pw.write(String.valueOf(check));
User user = s.findUser("test1",conForTests);
int id = user.getUserId();
pw.write(11);
} catch (SQLException|IOException sqlException) {
System.out.println("asdsad");
sqlException.printStackTrace();
}
System.out.println("asdsad");
}
我逐行检查了所有删除它们的行,我发现在这一行:
pw.write(11);
那 11 是一个用户 ID,所以为了不每次都检索该 ID,我刚刚写了 11。servlet 开始时不显示页面,而是下载没有扩展名的文件。
我检查了 11 个数字用于 ASCII 中的垂直制表符 table。为什么 ASCII table 中的 11 代码使浏览器无法显示但正在下载文件?
这就是这个文件的内容:
Why am I downloading a file with no extension using servlet?
因为您刚刚打开了一个响应流并开始写入其中。通俗地说,您只是将一些字节发送回浏览器,但浏览器不知道字节是什么。是html吗?是纯文本吗?是图像吗?还有其他事情吗?
因此在开始编写响应之前,您需要通过设置内容类型来说明该响应是什么。替换你的这段代码:
try {
PrintWriter pw = response.getWriter();
....
与:
try {
response.setContentType("text/html")
PrintWriter pw = response.getWriter();
....
或您喜欢的任何内容类型(text/plain
也适用于您正在做的事情)。
另请参阅:
- what is the use of "response.setContentType("text/html")" in servlet
我在访问 servlet 时正在下载没有扩展名的文件
这是doGet方法的代码(这些只是测试线,不要当真):
try {
PrintWriter pw = response.getWriter();
pw.write("test");
pw.println(request.getParameter("a"));
DAOFactory m = DAOFactory.getDAOFactory(1);
Connection conForTests = MySQLDAOFactory.getConnection();
UserDao s = m.getUserDao();
boolean check = s.validateUser("test1","test1",conForTests);
pw.write(String.valueOf(check));
User user = s.findUser("test1",conForTests);
int id = user.getUserId();
pw.write(11);
} catch (SQLException|IOException sqlException) {
System.out.println("asdsad");
sqlException.printStackTrace();
}
System.out.println("asdsad");
}
我逐行检查了所有删除它们的行,我发现在这一行:
pw.write(11);
那 11 是一个用户 ID,所以为了不每次都检索该 ID,我刚刚写了 11。servlet 开始时不显示页面,而是下载没有扩展名的文件。
我检查了 11 个数字用于 ASCII 中的垂直制表符 table。为什么 ASCII table 中的 11 代码使浏览器无法显示但正在下载文件?
这就是这个文件的内容:
Why am I downloading a file with no extension using servlet?
因为您刚刚打开了一个响应流并开始写入其中。通俗地说,您只是将一些字节发送回浏览器,但浏览器不知道字节是什么。是html吗?是纯文本吗?是图像吗?还有其他事情吗?
因此在开始编写响应之前,您需要通过设置内容类型来说明该响应是什么。替换你的这段代码:
try {
PrintWriter pw = response.getWriter();
....
与:
try {
response.setContentType("text/html")
PrintWriter pw = response.getWriter();
....
或您喜欢的任何内容类型(text/plain
也适用于您正在做的事情)。
另请参阅:
- what is the use of "response.setContentType("text/html")" in servlet