파라미터넘어가고  컨트롤러에서 model.addAttribute("searchInfo", param);

검색조건을 다시 넘겨준다


<c:forEach items="${searchInfo}" var="entry">

//KING_로 시작하는 파라미터들을 다시 담는다.

//그냥 넘어온 파라미터전체를 돌려서 그중에 KING_로시작하는 파라미터가있으면 input태그를 만들면서 그값을을 가지고있게하고 다음 페이지에서 가져갈수있도록해준다.

<c:if test="${fn:startsWith(entry.key,'KING_ ')}" >

<input type="hidden" id="${entry.key}" name="${entry.key}" value="

<c:out value="${entry.value}" escapeXml="true"/>" />

</c:if>

</c:forEach>

'JAVA > JSP' 카테고리의 다른 글

JsTl 체크박스 체크 조건문  (0) 2016.09.08
jsp 차단된 콘텐츠 허용 코드  (0) 2016.08.29
JSP Thumnail 처리  (0) 2015.08.25
JSP jai 라이브러리 다운 및 추가  (0) 2015.08.25
JSP Thumbnail 폼  (0) 2015.08.25
블로그 이미지

왕왕왕왕

,

@RequestMapping(value="/find/host.do")

//최초 호출 메소드

public String hostMethod(HttpServletRequest request, Model model){


subDirList(경로); 

   

return "find.host";

}


// 최초경로에 있는 디렉토리에 있는 파일을 읽어 해당 각 파일별 문자열중복이 있는지 체크

public void subDirList(String source){

File dir = new File(source); 

File[] fileList = dir.listFiles(); 

try{

for(int i = 0 ; i < fileList.length ; i++){

File file = fileList[i]; 

if(file.isFile()){

    // 파일이 있다면 파일 이름 출력

System.out.println("\t 파일 이름 = " + file.getName()+" /t 파일 전체경로 = "+file.getPath());

overlapChk("id=",file.getPath()," /t 파일 전체경로 = "+file.getPath(),"디렉토리 이름 = " + file.getName());

}else if(file.isDirectory()){

System.out.println("디렉토리 이름 = " + file.getName());

    // 서브디렉토리가 존재하면 재귀적 방법으로 다시 탐색

subDirList(file.getCanonicalPath().toString()); 

}

}

}catch(IOException e){

}

}


페이지별 아이디 중복체크(정규식으로 아이디 말고도 다른거찾을수도)

public void overlapChk(String ovStr,String fileNm,String allPath, String directNm){

System.out.println("오버랩 시작  ");

        String[] search = new String[2];

        TreeSet<String> overlapList = new TreeSet<String>();

        

        search[0] = ovStr;                          // 'GV_' 단어를 가지고 있는 모든 열을 검색한다.

        search[1] =fileNm;        // 검색할 *.txt 파일의 파일명(확장자까지 같이 적어줘야 한다.)


        // (?i) <- "찾을 문자열"에 대소문자 구분을 없애고

        // .*   <- 문자열이 행의 어디에 있든지 찾을 수 있게

        String findStr = "(?i).*" + search[0] + ".*";

        // int lineNumber = 1;    // 행 번호


        try {

            

            BufferedReader buffer = new BufferedReader(new FileReader(search[1]));

            String low = null;

            String regexStr =".*(id=\")[a-zA-Z_-]+(\").*";

            

        List<String> overlist = new ArrayList<String>();

            while ((low = buffer.readLine()) != null) {

             File f = new File("C:\\Users\\king\\Desktop\\regext.txt");

             FileWriter fw =new FileWriter(f,true);

//             System.out.println("readline "+low +"   매칭결과" + low.matches(regexStr));              

            if(low.matches(regexStr)){

            Pattern pt = Pattern.compile(" (id)=\"[a-zA-Z-_]+\"");

            Matcher mt = pt.matcher(low);

            while(mt.find()){

            if(!overlist.contains(mt.group())){

            if(mt.group().replace(" ","").equals("id=\"whspg\""))

            System.out.println("중복안됨 "+ mt.group()+ " " +overlist.contains(mt.group())+ " "+overlist.toString());

            fw.write("중복안됨 "+ mt.group()+ " "+allPath+" "+directNm+"\n");

            overlist.add(mt.group());

            }else{

            System.out.println("아이디 중복 "+ mt.group());

            fw.write("아이디 중복  "+ mt.group()+ " "+allPath+" "+directNm +"\n");

           

            }

}

            }

        fw.write("\n");

            fw.flush();

            fw.close();

          } 

          

        } catch (IOException e) {

            System.err.println(e); // 에러가 있다면 메시지 출력

            System.exit(1);

        } catch (PatternSyntaxException e) { // 정규식에 에러가 있다면

            System.err.println(e);

            System.exit(1);

        }

}

'JAVA > 자바' 카테고리의 다른 글

JAVA poi 엑셀 파일쓰기  (0) 2019.01.06
자바 JSON스트링 리스트로 변환  (0) 2016.12.08
자바 웹 다운로드  (0) 2016.10.20
자바 bufferedimage to byte[] convert  (0) 2016.10.19
자바 현재날짜뽑기  (0) 2016.10.14
블로그 이미지

왕왕왕왕

,

   //날짜 월별 max 일 확인

    var fieldObj = new Array();

    var dayValid;

    var equalDate;

    var dataValidate;

    var bol;

    //날짜검사할 id에 # 빼고 나머지만 추가

    fieldObj.push("restreginumFront");

    fieldObj.push("superMngEduFinishd");

    fieldObj.push("superMngDsvYmd");

    

    $.each(fieldObj,function(index,val){

      dataValidate =  $("#"+fieldObj[index]).val().split("-");

      

      var dateArr = new Array();

    for(var i=0; i<dataValidate.length; i++){

   

    if(i != 2){

        dateArr.push(dataValidate[i]);

    }else{

    dayValid = dataValidate[i];

    }

    }

        //month 는 0 부터 시작해서..

       equalDate = 32 - new Date(dateArr[0], dateArr[1]-1, 32).getDate();

   if(equalDate <dayValid){

    alert( $("label[for='"+fieldObj[index]+"'").text()+"에 날짜는 "+dateArr[0]+"년"+dateArr[1]+"월은"+equalDate+"일까지 입니다.");

    $("#"+fieldObj[index]).focus();

    bol = false;

   }

   //each탈출

   if(!bol){

    return bol;

   }

    });

    //함수탈출

    if(!bol){

    return 

    }




날짜포맷 


  var yymd = /[12][0-9]{3}-[01][0-9]-[0-3][0-9]/;


 if(!yymd.test($("#아이디").val()))

블로그 이미지

왕왕왕왕

,


jquery 배열 처리

var arr = [];

$.each($(아이디).val().split(","),function(i,v){

arr.push(v);

});


만들어진 배열로 ajax로 서버측에 전송  

$.ajax({

url: URL,

data:{넘길파라미터명 : arr},

async: false,

dataType:"json",

type:"POST",

contentType: "application/x-www-form-urlencoded; charset=UTF-8",

success:function(response) {

if(response != null){

$.each(response, function(index,value){

   

})

}

}

,error:function(request, status,erreo){

}

});



ajax에서 받은 배열 구분처리


@RequestMapping(value = "url.do")

public ModelAndView method(HttpServletRequest request) {

if(request.getParameterValues("파라미터명[]") != null){

String arr[] =request.getParameterValues("파라미터명[]");

//배열 length로 하면 값이없어도 1값이나와서

//첫번째 값 존재로 확인

if(arr[0] != ""){

     }

}

        }



ibatis 쿼리호출


//비어있는지 먼저 체크해서 값이 있으면 iterate로 넘어온 배열을  IN 처리 해준다 

<isNotEmpty property="파라미터이름">

<iterate prepend="IN " open="(" close=")" property="파라미터이름" conjunction=",">

#param[]#

</iterate>

</isNotEmpty>

블로그 이미지

왕왕왕왕

,

Jquery 정규식 예제

JAVA/Jquery 2016. 11. 24. 18:13

출처:http://letusgo.tistory.com/30


모든 공백 체크 정규식
var regExp = /\s/g;

 

숫자만 체크 정규식
var regExp = /^[0-9]+$/;


이메일 체크 정규식
var regExp = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;


핸드폰번호 정규식
var regExp = /^\d{3}-\d{3,4}-\d{4}$/;


일반 전화번호 정규식
var regExp = /^\d{2,3}-\d{3,4}-\d{4}$/;


아이디나 비밀번호 정규식 
var regExp = /^[a-z0-9_]{4,20}$/;


휴대폰번호 체크 정규식 
var regExp = /^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/;

 

##############  정규표현식

1. 확장문자 (: backslash)
    - s : 공백 문자(스페이스, 탭, 폼 피드, 라인 피드)
 
    - b : 단어의 경계
    - B 이를 제외한 모든 문자 매칭
 
    - d : 숫자
    - D : 숫자가 아닌 문자 [^0-9] 와 동일
 
    - w : 알파벳, 숫자로 된 문자, 밑줄 기호(_) [A-Za-z0-9]
    - W : w의 반대 문자 [^A-Za-z0-9]
 
    - 특수문자 : 특수문자 자체를 의미 예) + (+ 기호 자체)
 
2. 특수문자
    - * : 0회 이상 반복
    - + : 1회 이상 반복
    - ? : 0 또는 1개의 문자 매칭
    - . : 정확히 1개 문자 매칭
 
3. 플래그
    - g : 전역매칭
    - i : 대소문자 무시
    - m : 여러 줄 매칭
 
4. 기타
    - () : 괄호로 묶인 패턴은 매칭된 다음, 그 부분을 기억한다.
    - $1,...,$9 : 괄호로 갭처한 부분 문자열이 저장 됨.
    - | : ~또는~
    - {} : 반복 횟수


##############  간단한 정규 표현식
var re = /a/         --a 가 있는 문자열
var re = /a/i        --a 가 있는 문자열, 대소문자 구분 안함
var re = /apple/    -- apple가 있는 문자열
var re = /[a-z]/    -- a~z 사이의 모든 문자
var re = /[a-zA-Z0-9]/    -- a~z, A~Z 0~9 사이의 모든 문자
var re = /[a-z]|[0-9]/  -- a~z 혹은 0~9사이의 문자
var re = /a|b|c/   --  a 혹은 b 혹은 c인 문자
var re = /[^a-z]/  -- a~z까지의 문자가 아닌 문자("^" 부정)
var re = /^[a-z]/  -- 문자의 처음이 a~z로 시작되는 문장
var re = /[a-z]$/  -- 문자가 a~z로 끝남


상기에 정의된 간단한 표현식을 아래에 넣어 직접 해 보시기 바랍니다.
var str = "sample string";
re.test(str)?"true":"false";

* 특수문자('''', ''^'', ''$'', ''*'', ''+'', ''?'', ''.'', ''('', '')'', ''|'', ''{'', ''}'', ''['', '']'')를 검색할 경우는 '''' 를 넣는다.

 

##############  간단한 응용예제
 
 
var re = /s$/;          -- 공백체크
var re = /^ss*$/;   -- 공백문자 개행문자만 입력 거절
var re = /^[-!#$%& amp;'*+./0-9=?A-Z^_a-z{|}~]+@[-!#$%&'*+/0-9=?A-Z^_a-z{|}~]+.[-!#$%& amp;'*+./0-9=?A-Z^_a-z{|}~]+$/; --이메일 체크
var re = /^[A-Za-z0-9]{4,10}$/ -- 비밀번호,아이디체크 영문,숫자만허용, 4~10자리
var re = new RegExp("(http|https|ftp|telnet|news|irc)://([-/.a-zA-Z0-9_~#%$?&=:200-377()]+)","gi") -- 홈페이지 체크

var re = "<[^<|>]*>";  -- 태그제거 
var re = /[<][^>]*[>]/gi;-- 태그제거 
str = str.replace(RegExpTag,""); 

var RegExpJS = "<script[^>]*>(.*?)</script>";  -- 스크립트 제거  
str = str.replace(RegExpJS,""); 

var RegExpCSS = "<style[^>]*>(.*?)";  -- 스타일 제거  
str = str.replace(RegExpCSS,""); 

var RegExpHG = "(/[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/)";  -- 한글 제거  
str = str.replace(RegExpHG,"");  
 
var RegExpDS = /<!--[^>](.*?)-->/g;   -- 주석 제거  
str6 = str.replace(RegExpDS,""); 

var regExp = /[a-z0-9]{2,}@[a-z0-9-]{2,}.[a-z0-9]{2,}/i; --이메일 체크


## 기타 응용
re = new RegExp("^@[a-zA-Z0-9]+s+","i");//문장의 처음이 @이고 문자가 1나 이상 있으면 ok

 

기타 상기와 동일하나 약간씩 다른 샘픔
영숫자 조합책크
if ((new RegExp(/[^a-z|^0-9]/gi)).test(frm.loginid.value)) {
    alert("ID는 영숫자 조합만 사용하세요"); 
    frm.loginid.focus(); 
}

홈페이지 주소 책크
 function chk(v){
  str='';
  re = new RegExp("^http://","i");  
  re.test(v)?str='y':str='n';
  alert(str);
 }

hanmail인지를 책크
 function chk(v){
  str='';
  re = new RegExp("hanmail.net","i");  
  re.test(v)?str=true:str=false;
  return str
 }

//본문내에서 도메인 구하기
var patt = /(http(s)?://)?w+(.w+)+/gi;
      var result = (aa.value.match(patt));

//본문내에서 url구하기
상기와 유사 var patt = /(http(s)?://)?w+(.w+).S*-gi;

########### 정규식 메소드 및 사용법

참조 http://eknote.tistory.com/1251
참조 http://www.javascriptkit.com/javatutors/redev3.shtml
RegExp.exec(string)
RegExp.test(string)
String.match(pattern)
String.search(pattern)
String.replace(pattern,string)
String.split(pattern)

 

 

 

 

 

 

 

* 특수문자 검증 및 제거

function regExp(){  
 //특수문자 검증 start
 var str = "2011-12-27";
 var regExp = /[\{\}\[\]\/?.,;:|\)*~`!^\-_+<>@\#$%&\\\=\(\'\"]/gi
 if(regExp.test(str)){
  //특수문자 제거
  var t = str.replace(regExp, "")
  alert("특수문자를 제거했습니다. ==>" + t)
 }else{
  alert("정상적인 문자입니다. ==>" + str)
 }
 //특수문자 검증 end
}

 

 

* 닉네임 체크 - 특문 제외 2자 ~ 20자

var pattern = /^[\w\Wㄱ-ㅎㅏ-ㅣ가-힣]{2,20}$/;

[\w]는 [A-Za-z0-9_] 이다
[\W]는 \w를 제외한 특수문자들이다.
[ㄱ-ㅎ] 은  ㄱㄴㄷㄹㅁㅂㅅㅇㅈㅊㅋㅌㅍㅎ
[ㅏ-ㅣ]는 ㅏㅑㅓㅕㅗㅛㅜㅠㅡㅣ
[가-힣]는 가나다라~~타파하 ~ 기니디리~ 티피히 ~ 각낙닥락 ~ 틱픽힉 ~ 깋닣딯맇 ~ 팋핗힣  이 된다.


즉 그냥 모든 문자열에 대한 {2,20} 글자 수 체크가 된다.

 

 

 

 

 

 

 

 

****

 

var pattern = 정규식;
var testee = "테스트 스트링";
var true_or_false = pattern.test( testee);  // 정규식 필터를 통과하면 true, 아니면 false 리턴.

다른 방법들도 있는데 나는 그냥 위와 같이 사용중이다.
아래는 내가 사용하는 정규식 몇 가지 예제..

1) 정수와 소수점 달고다니는 수들만 통과시키는 필터. 예를 들어 '12' '12.123' '-0.571' '-8100' 등에 대해 true를 리턴하고 나머지는 false 리턴.
 
var pattern =  /^[-]?\d+(?:[.]\d+)?$/;
return pattern.test( testee);

1-2) 위의 필터에서 좀더 조건을 추가해서, 양수면서 최대 소수점 2자리 이하까지만 통과시키는 필터. 예를 들어 12.23, 0.41, 51 등에는 true를 리턴하고, -12, -9.43, 1.234 등에는 false를 리턴하는 필터.
var pattern = /^\d+(?:[.]?[\d]?[\d])?$/;
return pattern.test( testee);

2) 숫자 및 x, X, P, E 만 포함한 스트링만 통과시키는 필터. 
예를 들어, 
x123 : true
XPE : true
125 : true
1234O : false
pXP : false

var pattern = /[^1234567890xXPE]/;
return !(pattern.test( testee));

3) 문자 전체에서 특수문자를 하나라도 포함하지 않아야만 함
예를 들어, 
@123 : false
12Hello5 : true
!!! : false

var pattern = /[^\w\s]/i;
return !(pattern.test( testee));

4) 다음과 같은 형식만 통과함. Q로 시작하면서, 0000~9999 까지의 숫자만 Q 뒤에 달고 있어야 함. 
즉, 
Q0001, Q0002, Q1234, Q9999  : true
Q00, Q194, Q1  : false
Q0001A  : false
QUESTION : false

var pattern = /^Q[0-9][0-9][0-9][0-9]$/;
return pattern.test( testee);


5) 정규식에서 g 플래그를 쓸 때 주의해야 한다. 최근에 매칭한 곳에서부터 다시 정규식 검사를 시작하는 속성이 있다.

이것때문에 다음 문제가 일어난다. 연속적으로 한 스트링에 대해 정규식 테스팅을 하면, 처음에는 필터가 잘 동작하다가 나중에는 통과하지 말아야 할 조건을 가진 스트링이 정규식 패턴을 통과했다고 나오게 된다. 구글에서 'regex g flag consecutive' 등으로 검색하면 이 문제로 매우 많은 질문과 답이 나온다. 해결 방법은.. 난 g 플래그 대신 i 플래그를 줘서 해결했다. 아래 링크도 도움이 될 것이다.

http://stackoverflow.com/questions/15610251/why-pattern-testname-opposite-results-on-consecutive-calls
http://stackoverflow.com/questions/6739136/consecutive-calls-to-regexp-test-fail-for-pattern-with-global-option


6) 문자열 양 끝에 공백문자를 없애 주는 정규식. 예를 들어 "   hi hello! "; 를 "hi hello!"; 로 바꿔 주는 코드.
(출처 : http://stackoverflow.com/questions/3000649/trim-spaces-from-start-and-end-of-string)

function trim_whitespace( str) 
{
    return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}


7) "[192.244.1.123]" 같은 string에서 안의 ip부분만 빼낸다("192.244.1.123" 을 빼내는 작업)
function main()
{
    var regex = /\[([.\d]+)]/;
    var str = "[192.244.1.123]";
    var res = regex.exec( str);
    
    // print res[1] = "192.244.1.123";
}

 

 

 

// 정규식 휴대폰 번호 마스킹

** 출처 : http://ironnip.tistory.com/15

 

- num  : '-' 문자가 들어있지않은 숫자로된 전화번호

- type : 0 을 보내면 가운데 자리 마스킹

 

function phoneFomatter(num,type){

    

    var formatNum = '';

    

    if(num.length==11){

        if(type==0){

            formatNum = num.replace(/(\d{3})(\d{4})(\d{4})/, '$1-****-$3');

        }else{

            formatNum = num.replace(/(\d{3})(\d{4})(\d{4})/, '$1-$2-$3');

        }

    }else if(num.length==8){

        formatNum = num.replace(/(\d{4})(\d{4})/, '$1-$2');

    }else{

        if(num.indexOf('02')==0){

            if(type==0){

                formatNum = num.replace(/(\d{2})(\d{4})(\d{4})/, '$1-****-$3');

            }else{

                formatNum = num.replace(/(\d{2})(\d{4})(\d{4})/, '$1-$2-$3');

            }

        }else{

            if(type==0){

                formatNum = num.replace(/(\d{3})(\d{3})(\d{4})/, '$1-***-$3');

            }else{

                formatNum = num.replace(/(\d{3})(\d{3})(\d{4})/, '$1-$2-$3');

            }

        }

    }

    return formatNum;

    

}

 

 

phoneFomatter('01000000000');   //010-0000-0000

phoneFomatter('01000000000',0); //010-****-0000

phoneFomatter('0100000000');    //010-000-0000

phoneFomatter('0100000000',0);  //010-***-0000

phoneFomatter('0200000000');    //02-0000-0000

phoneFomatter('0200000000',0);  //02-****-0000

phoneFomatter('0310000000');    //031-000-0000

phoneFomatter('0310000000',0);  //031-***-0000

phoneFomatter('16880000');      //1688-0000

블로그 이미지

왕왕왕왕

,

var timer = setInterval(function () {

   iframe = document.getElementById('excelDown');

   var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;

   // Check if loading is complete

   if (iframeDoc.readyState == 'complete' || iframeDoc.readyState == 'interactive') {

       clearInterval(timer);

       console.log(iframeDoc.readyState)

       return;

   }

}, 1);



이건 다운로드할때 자바에서 다운로드 파일 쓰고 , 다시 프로트단으로 넘어오면서 다운로드 창이 뜨는 시점을 잡기위한

'JAVA > Jquery' 카테고리의 다른 글

Jquery 입력한 날짜 월별 일수 및 날짜포맷확인  (0) 2016.11.25
Jquery 정규식 예제  (0) 2016.11.24
jquery 각종위치 함수  (0) 2016.10.21
jquery html2canvas div 다운로드  (0) 2016.10.18
Jquery 옵션체크방법  (0) 2016.10.17
블로그 이미지

왕왕왕왕

,

innerWidth() : 400 box사이즈(padding,scrollBar포함)
outerWidth() : 402 box사이즈(border,padding,scrollBar포함)
position().top : 50 parent(wrap)로 부터 위치
offset().top : 101 document로 부터 위치
height() : 250 style에 작성한 사이즈
offsetParent().offset().left : 50 parent에 접근

$(window).height(): 983 브라우저 화면사이즈
$(document).height(): 1052 문서사이즈
$(window).scrollTop() : 0 객체 스크롤 값


box2 $(this).bind 마우스좌표

clientX : 799 브라우저기준(스크롤무시)
clientY : 459 브라우저기준(스크롤무시)
pageX : 799 document기준
pageY : 459 document기준
offsetX : 799 객체기준(마우스가 지나는 객체가 변함)
offsetY : 459 객체기준(마우스가 지나는 객체가 변함)
screenX : 1049 모니터기준
screenY : 622 모니터기준
box3 $("#box3").bind 마우스좌표
offsetX : 34 객체기준
offsetY : -9 객체기준
e.pageX-$box3.offset().left:46 직접계산
e.pageY-$box3.offset().top:55 직접계산


'JAVA > Jquery' 카테고리의 다른 글

Jquery 정규식 예제  (0) 2016.11.24
jqeury iframe ready state check  (0) 2016.10.24
jquery html2canvas div 다운로드  (0) 2016.10.18
Jquery 옵션체크방법  (0) 2016.10.17
Jquery get방식 보낼때 한글깨짐 인코딩  (0) 2016.09.02
블로그 이미지

왕왕왕왕

,

자바 웹 다운로드

JAVA/자바 2016. 10. 20. 11:36

public void chartRiskStatusDownload(HttpServletRequest request , HttpServletResponse response) throws IOException, AWTException{

Map<String, Object> rtnMap = new HashMap<String, Object>();

String filename = request.getParameter("filename");

String path = request.getParameter("path");

/** HTTP 헤더 셋팅 */

// response.reset();

 

// IE 체크

response.setContentType("application/octet-stream;charset=utf-8");

response.setCharacterEncoding("UTF-8");

response.setHeader("Content-Disposition", "attachment;filename=" + filename);

response.setHeader("Content-Transfer-Encoding", "binary;");

 

/** 파일 다운로드 */

LOGGER.info(String.format(LogFormat.DEBUG,"filename "+filename+" filepath "+path));

    Robot robot = new Robot();

    

        //모니터 화면 크기 가지고 오는 객체

        Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();

 

        //모니터의 화면을 selectRect에 가로,세로 표현

        Rectangle selectRect = new Rectangle((int)screen.getWidth(), (int)screen.getHeight());

        

        //스크린샷된 데이터를 bufferedimage에 담음

        BufferedImage buffimg = robot.createScreenCapture(selectRect);

 

        

        //bufferedimage to inputstream convert

        ByteArrayOutputStream baos = new ByteArrayOutputStream();

        ImageIO.write(buffimg, "png", baos);

        InputStream is = new ByteArrayInputStream(baos.toByteArray());

        

        //output을 위해 bufferedimage를 byte데이터로 바꿈

        byte[] imageBytes = baos.toByteArray();

        

int read = 0;

BufferedInputStream fin =

new BufferedInputStream(is);

BufferedOutputStream outs =

new BufferedOutputStream(response.getOutputStream());

// 파일 읽어서 브라우저로 출력하기

try {

       while((read=fin.read(imageBytes)) != -1){

        LOGGER.info(String.format(LogFormat.DEBUG,"fileread "+read));

         outs.write(imageBytes, 0, read);

       }

} catch (Exception e) {

e.printStackTrace();

} finally{

if (outs != null) {outs.close();}

       if (fin != null) {fin.close();}

  }

}

}

블로그 이미지

왕왕왕왕

,