티스토리 뷰

JAVA(프로그래밍)

JAVA WAS 서버단에서 이미지 처리하기

알 수 없는 사용자 2017. 12. 27. 02:14

요즘은 WEB서버와 WAS 서버가 분리된 경우가 많다. 예전에는 WAS 서버 한곳에서 이미지와 HTML , JSP등을 다 처리하였지만 요즘은 WEB서버에서 HTML, JS, CSS, IMAGE등을 처리하고 WAS에서 JSP 등 동적인 페이지를 처리하게 된다.

 

간혹 이미지가 웹서버가 아닌 WAS에 위치해 있는 경우가 있다.

보통은 파일 업로드를 한 경우 WEB서버가 아닌 WAS서버에 저장이 된다.

JAVA SERVER단에서 UPLOAD 처리를 하기 때문에 ..

 

WEB서버에 있는 이미지 파일은 불러 오기가 간단하다.

왜냐면 WEB서버에 있는 이미지 파일은 웹 경로로 접근이 가능하기 때문이다.

EX) < img src = '/FILE/test.jpg' />

이런식으로 접근이 가능하다.

 

하지만 was에 존재하는 경우 URL로 접근이 불가능하다.

그럼 어떻게 해야 접근할수 있을까?

 

WAS JAVA에서 이미지를 읽어와 스트림형태로 뿌려주면 된다..

 

 

간단히 소스를 첨부함.

 

---------------------------------------------------------------------------------------------

RequestMapping("/userpic.do")
 public String listAttach(HttpSession session,HttpServletResponse response ,EduVO eduVO ) throws Exception {
  UserInfo userInfo = (UserInfo) UserInfo.getSessionInfo();
  
  response.setContentType( "image/gif" );
  ServletOutputStream bout = response.getOutputStream();
  String imgpath = fileRepositoryPath + File.separator + fileUserPicPath +  File.separator + "nophoto.jpg";
  String[] exts = {".bmp", ".jpg", ".gif", ".png", ".jpeg"};
  String idno=userInfo.getIdno();
  if(eduVO.getIdno()!=null && ! "".equals(eduVO.getIdno()) )idno=eduVO.getIdno();
  for(String ext : exts ){
   File f = new File(fileRepositoryPath + File.separator + fileUserPicPath +  File.separator +  idno +ext);
   if(f.exists()){
    imgpath = fileRepositoryPath + File.separator + fileUserPicPath +  File.separator +   idno +ext;
    break;
   }
  }
  FileInputStream f = new FileInputStream(imgpath); 
  int length;
  byte[] buffer = new byte[10];
  while ( ( length = f.read( buffer ) ) != -1 )
  bout.write( buffer, 0, length );  
  return null;
 }

---------------------------------------------------------------------------------------------

소스는 정말 간단하다..

이미지가 저장된 물리적인 경로에 파일 접근하여 읽어서 FileInputStream 에 저장만 하면 되기 때문이다.

 

워낙 간단한 소스라 별도로 소스 설명은 하지 않겠음.

 

이런식으로 was서버에 저장된 이미지를 읽어오려면

< img src="/userpic.do" >

이런식으로 img 태그 src 부분에 서블릿 경로를 적어주면 된다.

 

 

 

댓글