为了账号安全,请及时绑定邮箱和手机立即绑定

Servlet 无法向jsp输出HashMap键:

Servlet 无法向jsp输出HashMap键:

qq_遁去的一_1 2022-06-08 17:21:32
我有一个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    }}但是,虽然迭代方法HashMap内部main工作正常,但尝试通过方法获取键值时doPost(),我只得到DONE输出,没有其他值。为什么??编辑: “不起作用”意味着不输出类别。如果main方法输出“Dog”、“Cat”,jsp页面只输出“Done”,而不是“Dog”、“Cat”、“Done”。我的问题有什么问题足以关闭它?也感谢匿名投票者。编辑:我检查了tomcat的日志,java.io.FileNotFoundException: some_folder/some_file.bin每次调用servlet时都会出错。我意识到该函数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.
查看完整描述

2 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

解决方案:

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

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


查看完整回答
反对 回复 2022-06-08
?
梦里花落0921

TA贡献1772条经验 获得超6个赞

现在,我设法修复它

InputStream inputPOS = Cracker.class.getClassLoader().getResourceAsStream("some_folder/some_file.bin");

解决方案并将some_folder/some_file.bin 两者都放在里面

  1. Project Root/target/classes(这样代码就可以在 IDE 中运行)

  1. Project Root/WEB-INF/classes(以便该代码在部署在 tomcat 上时可以工作)。


查看完整回答
反对 回复 2022-06-08
  • 2 回答
  • 0 关注
  • 104 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信