본문 바로가기
728x90
SMALL

Java46

프로젝트(2)-등록화면처리 첨부파일 자체의 처리는 AJax를 통해서 이루어진다. 즉 게시물의 등록 시점에는 현재 서버에 업로드된 퍼일들에 정보를 등록하려는 게시물의 정보와 같이 전송된다. 이때 게시물의 등록버튼을 클릭했을때 현재 서버에 업로드된 파일의 정보를 으로 만들어서 한번에 전송하는 방식을 사용하겠다. 등록 화면인 http://localhost:8080/board/register 의 화면을 담당하는 register.jsp 파일에 첨부파일 업로드할 수 있도록 태그를 추가한다. File Attach 그럼 어렵지 않게 첨부파일을 놓을 수 있는 란이 생겼다. JS처리 복잡한 부분은 파일을 선택하거나 Submit Button을 클릭했을 때의 JS처리이다. 가장 먼저 Submit Button을 클릭했을때 첨부파일 관련된 처리를 할 수 .. 2021. 10. 14.
프로젝트(1)-첨부파일등록 이제 내가 그동안 작업해왔던 프로젝트에 첨부파일기능을 탑재할 차례이다. 첨부파일 정보를 위한 준비 첨부파일이 게시말과 합쳐지면 가장 먼저 진행해야 하는 일은 게시물과 첨부파일의 관계를 저장하는 테이블이 있어야한다. 게시물의 첨부파일은 각자 고유한 UUID를 가지고 있기 때문에 별도의 PK를 지정할 필요는 없지만, 게시물의 등록할 때 첨부파일의 테이블 역시 같이 insert 작업이 진행되어야 하므로 트랜잭션 처리가 필요하다. 첨부파일을 보관하는 테이블은 tbl_attack로 설계한다. tbl_board는 tbl_reply와 이미 외래키의 관계를 가지고 있으므로 첨부파일이 추가되면 아래와 같은 구조가 된다. create table tbl_attach ( uuid varchar2(500) not null, u.. 2021. 10. 14.
파일업로드(6)-첨부파일삭제 첨부파일 삭제 첨부파일 삭제는 생각보다 많은 고민을 해야한다. 1. 이미지 파일의 경우에는 썸네일까지 같이 삭제되어야 한다. 2. 파일을 삭제한 후에는 브라우저에서도 썸네일이나 파일 아이콘이 삭제되도록 처리해야한다. 3. 비정상적으로 브라우저의 종료 시 업로드된 파일의 처리 우선은 일반 파일과 이미지 파일의 삭제에 대해 다뤄보겠다. 업로드된 첨부파일 삭제는 Ajax를 이용하거나 태그를 이용하는 방식 모두를 적용 할 수 있다. 이미 업로드된 첨부파일의 삭제는 일반파일의 경우에는 업로드된 파일만을 삭제하면 되지만, 이미지의 경우 썸네일과 파일과 원본파일을 같이 삭제해주어야 한다. 서버 측에서는 삭제하려는 파일의 화장자를 검사해서 일반 파일인지 이미지 파일인지를 파악하거나, 파라미터로 파일의 종류를 파악하고,.. 2021. 10. 14.
파일업로드(5)-원본 이미지 보여주기 일반 첨부파일과 달리 썸네일이 보여지는 이미지 파일의 경우 썸네일을 클리하면 원본 이미지를 볼 수 있게 한다. 썸네일의 이미지가 업로드 된 경로 + /thumb + UUID 파일이름이었다면, 원본 이미지의 이름은 중간에 /thumb_ 가 /로 순수하게 바뀌는 점이 달라진다. 원본 이미지를 화면에서 보기위해서는 태그를 생성하고 해당 에 이미지 태그를 작성해서 넣어주는 작업과 이를 화면상에서 절대 위치를 이용해서 보여주어야 한다. 원본 이미지를 보여줄 처리 이미지의 겨우 일반 파일과 달리 이미 이미지 파일 데이터는 썸네일과 동일한 방식으로 처리 될 수 있기에 사실상 핵심적인 부분은 이미지를 보여주는 를 처리하는 부분이다. 썸네일을 클릭할때 이루어지도록 JS함수를 작성한다. function showImage(.. 2021. 10. 14.
쓰레드 제어문(3) suspend(), resume(), stop() 쓰레드의 실행을 일시정지, 재개, 완전정지 시키는 메서드에 대해 알아보자! void suspend() //쓰레드를 일시정지 시킨다. void resume() //suspend()에 의해 일시정지된 쓰레드를 실행대기 상태로 만든다. void stop() //쓰레드를 즉시 종료시킨다. 우선 쓰레드의 생성주기를 다시 복습해보자 쓰래드는 생선된다 (new!) 그리고 start() 당한다. 그리고 자기차례때 줄서다가 진짜 실행이되고, 그사이사이 waiting, bloked 당하고 시간이 다되어 종료되되고 그런다. 그런데 suspend, resume, stop 메서드들은 쓰레드의 실행을 제어하는 가장 손쉬은 방법이지만, 교착상태를 일으키기 쉽게 작성되어있어서 권장하.. 2021. 10. 14.
쓰레드 제어문(2) interrupt() 대기상태( waiting)인 쓰레드를 실행대기 상태로 만든다. 잠자거나, 쉬고있거나 등등 진행 중인 쓰레드의 작업이 끝나기 전에 취소시켜야 할 때가 있다. 예를 들어 큰 파일을 다운로드 받을때 시간이 너무 오래 걸리면 중간에 다운로드를 포기하고 취소할 수있어야 한다. interrupt는 쓰레드에게 작업을 멈추라고 요청하는 것이다. 단지 멈추라고 요청만 하는 것일 뿐 쓰레드를 강제로 종료시키지는 못한다! void interrupt() //쓰레드의 interrypted상태를 false에서 true로 변경, boolean isInterrupted() //쓰레드의 interrupted 상태를 반환 static boolean interrupted() // 현재 쓰레드의 interrupted상.. 2021. 10. 13.
쓰레드 제어문(1) Sleep() -현재 쓰레드를 지정된 시간동안 멈추게 한다. static void sleep(long millis); static void sleep(long millis, int nanos); -static 메서드인 특성상 자기 자신만 제어할 수있다. 다른 쓰레드를 제어할 순없다. 매개변수 내에 잠잘 시간을 정해준다. 밀리세컨드(3초 = 3000밀리세컨드)와 나노세컨드의 시간단위로 세밀하게 값을 지정할 수 있지만 어느정도 오차가 발생할 수 있다. try{ Thread.sleep(1, 500000); }catch(InterruptedException e){} sleep()메서드는 예외를 발생시킬수 있으므로 예외문과 함께 다닌다. Exception 클래스의 자손인 InterruptedException이기 .. 2021. 10. 13.
파일업로드(4)-첨부파일의 다운로드 첨부파일의 업로드가 처리되는 과정도 복잡하지만, 이를 사용자가 사용하는 과정 역시 신경 써야한다. 브라우저에 보이는 첨부파일은 1. 이미지 종류, 2. 일반파일 로 구분되므로 사용자의 첨부파일관련된 행위도 종류에 따라 다르게 처리 되어야 한다. 만약 이미지인 경우에는 썸넬 이미지를 클릭했을 때 화면에 크게 원본 파일을 보여주는 형태로 처리되어야 한다. 이 경우 브라우저에서 새로운태그를 생성해서 처리하는 방식을 이용한다. 이걸 light-box라고 한다. light-box는 제이쿼리를 이용하는 많은 플로그인들이 있다. 이를 이용하거나 직접 구현할 수있다. 한번 직접 구현해보겠다. 첨부파일이 이미지가 아닌 경우 , 기본값은 다운로드로 설정하겠다. 첨부파일의 다운로드 이미지를 처리하기 전 간단한 첨부파일의 다.. 2021. 10. 13.
파일업로드(3)-업로드데이터변환 첨부파일 데이터의 업로드가 완료되었지만, 아직도 많은 작업이 남아있다... Ajax로 파일을 업로드해도 아직 브라우저 쪽에서 아무런 데이터도 전달하지 않았기 때문에 브라우저는 과 같은 오류만나오고 응답을 얻을 수 가 없다. 또는 파일을 올려놓아도 와같은 간단한 형식으로 "아 첨부가 되긴했구나"까지만 알뿐이다. 이것을 시각적으로나 정보를 포함시켜야한다. 그렇다면 브라우저로 전송해야하는 데이터는 어느것이 있을까? 1. 업로드 된 파일의 이름과 원본 파일의 이름 2. 파일이 저장된 경로 3. 업로드된 파일이 이미지인지 아닌지에 대한 정보 이에 대한 정보를 처리하는 방법은 1. 업로드된 경로가 포함된 파일이름을 반환하는 방식 2. 별도의 객체를 생성해서 처리하는 방법 이렇게 2가지가 있다. 1번의 방식은 브라우.. 2021. 10. 13.
파일 업로드(1) 첨부파일을 처리하고자.. 첨부파일을 서버에 전송하는 방식은 크게 태그를 이용해서 업로드 하는 방식과 Ajax를 이용하는 방식으로 나눠 볼 수있다. 태그를 이용하는 방식 브라우저의 제한이 없어야 하는 경웨 사용 -일반적으로 페이지 이동과 동시에 첨부파일을 업로드하는 방식 - 을 이용해서 화면의 이동없이 첨부파일을 처리하는 방식 Ajax를 이용하는 방식 첨부파일을 별도로 처리하는 방식 -을 이용하고 Ajax로 처리하는 방식 -HTML5 의 Drag and Drop기능이나 jQuery라이브러리를 이용해서 처리하는 방식 브라우저 상에서 첨부파일 처리하는 방식은 다양하지만, 서버쪽에서의 처리는 거으 ㅣ비슷하다. 지금의 프로젝트는 Ajax를 위주로 처리할 것이다. 시작전 새로운 브랜치생성 새로운 과정을 공부, 기능.. 2021. 10. 12.
데몬 쓰레드와 쓰레드의 상태(실행제어) 데몬쓰레드란? 데몬쓰레드 : 일반 쓰레드의 작업을 돕는 보조적인 역할을 수행한다. 일반쓰레드가 종료되면 데몬 쓰레드는 강제적으로 자동 종료된다. 즉 데몬쓰레드가 아닌 쓰레드가 종료되면 데몬쓰레드는 모두 종료된다. 어떤 쓰레드가 대표적으로 사용되는가? 가비지 컬렉터, 자동저장, 화면, 자동갱신 등 쓰지않는 메모리를 제거하거나, 워드에서 자동저장(시간이 셋팅되어있으면), 화면 자동갱신(자동 새로고침 등) 그럼 데몬쓰레드는 어떻게 작성하는가? public void run(){ while(true) try{ Thrad.sleep(3*1000); //3초마다 }catch(InterruptedException e) {} //autoSave값이 true면 autoSave()를 호출한다. if(autoSave){ au.. 2021. 10. 12.
쓰레드의 우선순위, 그룹 쓰레드의 우선순위 쓰레드는 우선순위라는 속성을 가지고 있다.(멤버변수) 이 우선순위 값에 따라 쓰레드가 얻는 실행시간이 달라진다. 쓰레드가 수행하는 작업의 중요도에 따라 쓰레드의 우선순위를 서로 다르게 지정하여 쓰레드가 더 많은 작업시간을 갖도록 할 수있다. -즉 더 중요한 쓰레드에게 우선순위를 높게 주어서 더 많은 작업시간을 가지게 할 수 있다는 것 자바에서 쓰레드의 우선순위를 1~10까지 보유할 수있다. 기본적으로 보통우선순위는 5, 최소 우선순위는1, 최대 우선순위는 10이다. 우리가 생성하고, 아무것도 지정하지않으면 5, 기본값을 얻게된다. void setPriority(int newPriority) // 쓰레드의 우선순위를 지정한 값으로 변경 int getPriority() //쓰레드의 우선순위.. 2021. 10. 12.
728x90
LIST