Изображение внутри войны не отображается на JSP - PullRequest
0 голосов
/ 15 апреля 2019

Я знаю, что уже есть несколько подобных вопросов, но ни один из них не решает мою проблему.У меня простая JSP

<!DOCTYPE html>
<html>
   <head>
      <meta charset="UTF-8">
      <title>Home Page</title>
   </head>
   <body>    
      <jsp:include page="_menu.jsp"></jsp:include>    
      <h3>Home Page</h3>   
      <table>
            <tr>
               <td>aha</td>
            </tr>
         </table>
         ${data.image}      
         <img src="images/wappen.jpg"/>   
         <img src="/images/wappen.jpg"/>   
         <img src="../images/wappen.jpg" alt=""/>   
   </body>
</html>

, ни одно из изображений не отображается.JSP находится в состоянии войны в WEB-INF / views jpg находится в состоянии войны в изображениях папок.

Структура каталогов :

-WebContent
 - images (here are my jpgs)
 - META-INF 
 - WEB-INF 
   - lib 
   - views (here are my jsps located)

JSP вызывается через webServlet:

RequestDispatcher dispatcher = this.getServletContext().getRequestDispatcher("/WEB-INF/views/homeView.jsp");
dispatcher.forward(request, response);

1 Ответ

0 голосов
/ 11 мая 2019

Не знаю, правильный ли это путь, но, по крайней мере, я нашел решение:

создать веб-сервлет для обработки контекста. Изображения:

  • получитьзапрошенное изображение
  • построить абсолютное имя файла изображения
  • загрузить изображение с диска
  • вернуть в качестве ответа

    import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;импорт java.io.IOException;import java.lang.invoke.MethodHandles;

    import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;

    import org.slf4j.ext.XLogger;import org.slf4j.ext.XLoggerFactory;

    @ WebServlet (urlPatterns = {"/ Images / *"}) открытый класс DisplayImageServlet extends HttpServlet {/ ** содержит регистратор * / final XLogger logger = XLoggerFactory.getLog(MethodHandles.lookup (). LookupClass ());

    private static final long serialVersionUID = 1L;
    

    public DisplayImageServlet () {super ();}

    @ Переопределить защищенный void doGet (запрос HttpServletRequest, ответ HttpServletResponse) генерирует ServletException, запрос IOException {HttpServletRequest req = (HttpServletRequest);

      String realRootPath = request.getServletContext().getRealPath("");
        String servletPath = req.getServletPath();
        String image = req.getRequestURI();
        String pathInfo = request.getPathInfo();
    
        logger.debug("realRootPath = " + realRootPath);
        logger.debug("servletPath = " + servletPath);
        logger.debug("image = " + image);
        logger.debug("pathInfo = " + pathInfo);
        String imageRealPath = realRootPath +servletPath+pathInfo;
    
        logger.debug("imageRealPath = " + imageRealPath);
        response.setContentType("image/jpeg");  
        ServletOutputStream out;  
        out = response.getOutputStream();  
        FileInputStream fin = new FileInputStream(imageRealPath);  
    
        BufferedInputStream bin = new BufferedInputStream(fin);  
        BufferedOutputStream bout = new BufferedOutputStream(out);  
        int ch =0; ;  
        while((ch=bin.read())!=-1)  
        {  
            bout.write(ch);  
        }  
    
        bin.close();  
        fin.close();  
        bout.close();  
        out.close();  
    

    1029 *Защищенный void doPost (запрос HttpServletRequest, ответ HttpServletResponse) создает исключение ServletException, IOException {logger.debug ("doPost");doGet (запрос, ответ);}

    }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...