【发布时间】:2013-08-13 19:33:32
【问题描述】:
我的图像 servlet 出现了奇怪的情况。它适用于 Eclipse 内部网络浏览器,但不适用于 FireFox、InternetExplorer、Chrome、Opera....
Servlet 代码(下)
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
File fl=new File("C:\\Documents and Settings\\Administrator\\My Documents\\Eclipse\\zadatak\\WebContent\\WEB-INF\\upload\\"); PrintWriter pw=response.getWriter(); response.setContentType("text/html"); pw.println("<html>"); pw.println("<head>"); pw.println("<style type=\"text/css\">"); pw.println("img{display:block-inline;width:100px;height:100px;"); pw.println("</style>"); pw.println("</head>"); pw.println("<body>"); pw.println("<table border=\"1\">"); pw.println("<tr>"); for(File f:fl.listFiles()){ pw.println("<td>"); pw.println("<img src=\"" + f.getPath() + "\">"); pw.println("</td>"); } pw.println("</tr>"); pw.println("</table>"); pw.println("</body>"); pw.println("</html>");}
在 Eclipse 内部网络浏览器中看起来像这样(下)
PrintScreen of Eclipse internal web browser
我终于找到了解决问题的方法。谢谢大家帮助我!
现在,这段代码可以工作了!
ServletContext context=request.getServletContext(); String path=context.getRealPath("upload"); File fl=new File(path); PrintWriter pw=response.getWriter(); response.setContentType("text/html"); pw.println("<html>"); pw.println("<head>"); pw.println("<style type=\"text/css\">"); pw.println("img{display:block-inline;width:100px;height:100px;"); pw.println("</style>"); pw.println("</head>"); pw.println("<body>"); pw.println("<table border=\"1\">"); pw.println("<tr>"); LinkedHashMap<Integer, String> hm=new LinkedHashMap<Integer,String>(); int imageIndex=-1; for(File f:fl.listFiles()) { if(f.getName()!=null){ if(f.getName().endsWith(".bmp")) hm.put(++imageIndex, f.getName()); } } Iterator<String> pic=hm.values().iterator(); while(pic.hasNext()){ pw.println("<img src=\"upload/" + pic.next() + "\"/>"); } pw.println("</tr>"); pw.println("</table>"); pw.println("</body>"); pw.println("</html>");
我的项目中的类层次结构看起来像
MyWebProject
|-- src
| :
|
|-- web
| |-- META-INF
| | `-- MANIFEST.MF
| |-- WEB-INF
| | `-- web.xml
|-- upload (the place where I keep pictures)
:
Firefox 现在可以正确显示图片了
【问题讨论】:
-
您似乎期望图像以某种方式内联在 HTML 输出中。这不是真的。图片是根据
src属性中的 URL 单独/单独请求和下载的。 -
顺便说一句,部署空间中有一个名为“upload”的文件夹也令人担忧。您不应该将上传的文件存储在部署文件夹中,原因很简单,一旦您重新部署 WAR,或者即使您只是重新启动服务器,它们都会丢失,而这又具有非常简单的原因,即新添加的文件不包含在原始 WAR 文件。总而言之,尽管我对您之前就相关问题提出的问题发表了评论,但您仍然完全走错了方向。
标签: servlets