当我转到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开始不显示页面,而是下载一个没有扩展名的文件。
我检查了ascii表中的垂直选项卡是否保留了11号。为什么ascii表中的11代码使浏览器不显示而是下载文件?
这就是这个文件的内容:
1条答案
按热度按时间lzfw57am1#
为什么我要使用servlet下载一个没有扩展名的文件?
因为您刚刚打开了一个响应流并开始写入它。在俗语中,您只是将一些字节发送回浏览器,但浏览器不知道字节是什么。是html吗?是纯文本吗?这是图像吗?还有别的事吗?
因此,在开始编写响应之前,您需要通过设置内容类型来说明该响应是什么。替换您的此代码:
与:
或任何您喜欢的内容类型(a)
text/plain
也可以为您正在做的事情工作)。另见:
servlet中“response.setcontenttype(“text/html”)的用法是什么
java—servlet的默认内容类型