상세 컨텐츠

본문 제목

contentType을 이미지(jpg)로 출력하기

프로그램 언어/Java

by husks 2014. 3. 18. 14:12

본문

반응형


넘어오는 파라미터 값에 따라서 다른 이미지를 보여 주고 싶은 경우 사용하는 방식입니다.

물론 이런 기능은 아주 쉽게 구현 가능 합니다.

하지만 제가 보여드리고 싶은 부분은 약간 다른 방식이라서 소개시켜 드릴려고 합니다.

html의 img태그 에 jsp 주소를 작성 하면 (이미지 경로 말고 jsp) 해당 jsp가 이미지를 출력하도록 만드는 방식 입니다.

이런 방식이 사용되는 경우를 예를 들어 설명해보겠습니다.

A사이트가 있는데 해당 A사이트의 한 부분에 이미지를 넣어야 하는 경우가 발생 합니다.

그런 경우 A사이트에서는 html소스의 img태그 안에 제가 만든 jsp를 호출 해주기만 하면 됩니다.

물론 저는 A사이트의 페이지를 수정 하지 못하지만 넘어온 파라미터의 값에 따라서 다른 이미지를 출력해 줄 수 있습니다.

아래 소스를 참고 하시기 바랍니다.

테스트 방식은 testView.jsp 페이지를 작성 후 웹에 올리고 이미지를 보여주려는 A사이트의 html의 img태그에 해당 하는 주소를 넣어줍니다.

testView.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<%@ page contentType="images/jpg" %>
 
<%@ page import="java.util.*,java.io.*" %>
<%
//parameter을 받는 부분
String type = request.getParameter("id");
 
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
 
String imagePath = "";
 
//해당 아이디에 맞는 이미지를 찾는 조건문 간단하게 if로 구현 하였지만 기타 방식으로 데이터를 가져오면 됩니다.
if(type.equals("husk")){
    imagePath = "C:/test/1.jpg";
}else{
    imagePath = "C:/test/2.jpg";
}
 
File file = new File(imagePath);
int size = (int)file.length();
 
out.clear();
bos = new BufferedOutputStream(response.getOutputStream());
byte b[] = new byte[2048];
int read = 0;
if( size>0 && file.isFile() ) {
    bis = new BufferedInputStream(new FileInputStream(file));
    while((read=bis.read(b))!=-1 ) {
        bos.write(b,0,read);
    }
bos.close();
%>

contentType 부분이 images/jsp 방식으로 되어있는데 해당 부분은 응답을 어떤 MIME 방식으로 지정할지 정하는 속성입니다.

MIME에 대한 설명은 여기를 참고하시면 될 것 같습니다. http://www.emh.co.kr/content.pl?mime


A사이트에서 수정해야 하는 부분 입니다. img태그 부분에 위에서 작성한 jsp주소를 넣어줍니다.

test.html

1
2
3
4
5
6
7
8
9
<html>
    <head>
        <title>Img Test</title>
    </head>
    <body>
        <!-- jsp 주소를 넣어줌 -->
        <img src="http://localhost:8080/testView.jsp?id=husk" />
    </body>
</html>


반응형

관련글 더보기

댓글 영역