gpt4 book ai didi

java - Servlet 无法将 HashMap 键输出到 jsp : FileNotFoundException, util 类在部署后找不到本地文件

转载 作者:行者123 更新时间:2023-12-02 10:17:24 28 4
gpt4 key购买 nike

我有一个 TranslateServlet,它接受一些文本,创建一个 Cracker 类的实例,并调用一个 getCrackedResult 方法,该方法返回一个 >键和值的 HashMap:

public class TranslateServlet extends HttpServlet {
public static void main(String[] args) {
Cracker cracker = new Cracker("German", "English");
HashMap<String, ArrayList<Cracker.EntrySet<String, ArrayList<String>>>> crackedResults =
cracker.getCrackedResult("Ich bin");

for (String category: crackedResults.keySet()) {
System.out.print(category); //works fine
}

}


public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
Cracker cracker = new Cracker("German", "English");

HashMap<String, ArrayList<Cracker.EntrySet<String, ArrayList<String>>>> crackedResults =
cracker.getCrackedResult("Ich bin");

for (String category: crackedResults.keySet()) {
response.getWriter().print(category); //doesn't work
}

response.getWriter().print("DONE"); //works fine
}
}

但是,虽然在 main 方法内迭代 HashMap 工作正常,但当尝试通过 doPost() 方法获取键值时,我只得到 DONE 作为输出,没有其他值。为什么??

编辑:“不起作用”意味着不输出类别。如果main方法输出“Dog”,“Cat”,则jsp页面只输出“Done”,而不是“Dog”,“Cat”,“Done”。

我的问题有什么问题足以结束它?也谢谢匿名投反对票的人。

编辑:我检查了 tomcat 的日志,每次调用 servlet 时都会出现 java.io.FileNotFoundException: some_folder/some_file.bin 错误。

我意识到函数getCrackedResult使用了这样的本地文件:

InputStream inputPOS = new FileInputStream("some_folder/some_file.bin");

我尝试将文件移动到 WEB-INF 并更改文件路径:

InputStream inputPOS = new FileInputStream("WEB-INF/some_folder/some_file.bin");

但我仍然遇到异常:java.io.FileNotFoundException: WEB-INF/some_folder/some_file.bin

我应该如何处理该文件,以便 Cracker 类(特别是它的 getCrackedResults 函数)可以在部署后获取它。我的文件结构如下所示:

Project Root
------------src
---------------com
------------------util
----------------------Cracker.java
------------------web
---------------------TranslateServlet.java
------------target
------------------classes
-------------------------com
----------------------------util
--------------------------------Cracker.class
----------------------------web
-------------------------------TranslateServlet.class
------------imgs
------------some_folder
-----------------------some_file.bin
------------WEB-INF
-------------------classes
-------------------lib
-------------------some_folder
------------------------------some_file.bin (tried putting it here)

最佳答案

解决方案:

请将/WEB-INF/some_file/some.bin部署在正确的位置,然后您可以从servlet环境访问其FileInputStream,例如:

java.io.InputStream inS = /*httpRequest.get*/servletContext
.getResourceAsStream("/WEB-INF/some_file/some.bin");

参见:ServletContext Javadoc (Java8)

关于java - Servlet 无法将 HashMap 键输出到 jsp : FileNotFoundException, util 类在部署后找不到本地文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54581418/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com