반응형
회사의 구조가 조금 특이하다. 관리자용 페이지는 내부망에 연결이 되어있고, 실제 고객이 보는 페이지는 당연히 인터넷망에 연결이 되어있다. 이렇다보니 이미지를 다룰 때 관리자 페이지에서 이미지를 보여주는데 문제가 있었다.
요즘은 WAS, WEB 서버가 분리되어 있는 경우가 대부분이라 WAS에서 이미지를 처리하는 경우가 거의없다. 그런데 그 일을 해야하는 경우가 생겨서 포스팅을 한다.
지금처럼 이런 경우가 생긴다면 WAS Server에서 Java로 이미지를 읽고 이를 스트림형태로 페이지에 보내주면 된다. 아래의 소스가 이러한 예제를 보여준다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public void getIMG(HttpServletRequest req, HttpServletResponse res){ ServletOutputStream imgout = res.getOutputStream(); String imgPath = "was/img/location"; String imgName = req.getParameter("img_nm"); // JSP에서 넘겨주는 파라미터 이름 //이미지의 확장자명까지 넘어왔을시 확장자 체크 없이 진행 File f = new File(imgPath + File.separator + imgName); if(! f.exists()){ //파일이 없는 경우 체크하여 이후 로직실행 //생략 } FileInputStream input = new FileInputStream(imgPath); int length; byte[] buffer = new byte[10]; while( (length = input.read(buffer)) != -1) imgout.write(buffer, 0, length); } | cs |
딱히 코드에 대한 설명이 필요 없을 정도로 간단한 소스이다. 다 필요없이 경로랑 파일명을 알고 있다면 11~15줄까지만 코드가 있으면 돌아간다.(2번째줄 포함)
이걸 페이지에서 부를 때 조금 다른 방법이 img태그를 처리할 때 나타난다.
1 2 3 4 5 | <!--일반적인 경우 WEB서버에서 콜할때--> <img src="/img/location/milkye.png"/> <!--WAS서버에서 콜할때--> <img src="/getImg"/> | cs |
img태그의 src 부분에 서블릿 경로를 지정해주면 알아서 불러오게 된다.
반응형
최근댓글