목록Records (45)
Keep going
브라우저에서 첨부파일의 업로드 결과가 JSON 객체로 반환되었다면 남은 작업은 다음과 같다. 업로드 후에 업로드 부분을 초기화 시키는 작업 결과 데이터를 이용해서 화면에 섬네일이나 파일 이미지를 보여주는 작업 23.1 의 초기화 은 다른 DOM 요소들과 조금 다르게 readonly라 안쪽의 내용을 수정할 수 없기 때문에 별도의 방법으로 초기화 시켜서 또 다른 첨부파일을 추가할 수 있도록 만들어야 한다. uploadAjax.jsp var cloneObj = $(".uploadDiv").clone(); $("#uploadBtn").on("click", function(e){ var formData = new FormData(); var inputFile = $("input[name='uploadFile']"..
22.1 파일의 확장자나 크기의 사전 처리 최근 포털에서도 특정한 확장자를 제외한 파일들의 업로드를 제한하는 경우가 많은데, 이는 첨부파일을 이용하는 웹 공격을 막기 위해서 행해지는 조치이다. 실습에서는 확장자가 (exe, sh, zip)등의 경우에는 업로드를 제한하고, 특정 크기 이상의 파일은 업로드할 수 없도록 제한하는 처리를 JavaScript로 처리한다. uploadAjax.jsp에 파일의 확장자와 크기를 설정하고, 이를 검사하는 함수 checkExtension()을 작성해서 적용한다. uploadAjax.jsp Insert title here Upload with Ajax Upload $(document).ready(function() { var regex = new RegExp("(.*?)\...
첨부파일을 서버에 전송하는 방식은 크게 태그를 이용해서 업로드하는 방식과 Ajax를 이용하는 방식으로 나눠볼 수 있다. 태그를 이용하는 방식 : 브라우저의 제한이 없어야 하는 경우에 사용 일반적으로 페이지 이동과 동시에 첨부파일을 업로드하는 방식 을 이용해서 화면의 이동 없이 첨부파일을 처리하는 방식 Ajax를 이용하는 방식 : 첨부파일을 별도로 처리하는 방식
tbl_reply 테이블에 insert하고, tb1_board 테이블에는 댓글의 수를 의미하는 replyCnt라는 칼럼을 추가해서 해당 게시물 댓글의 수를 update 한다. tb1_board 테이블에는 replyCnt 칼럼을 추가 alter table tb1_board add (replycnt number default 0); cs 기존의 댓글에 존재했다면 replyCnt에 반영해 두어야 하므로 아래의 쿼리를 실행한다. update tb1_board set replycnt = (select count(rno) from tbl_reply where tbl_reply.bno = tb1_board.bno); cs 20.1 프로젝트 수정 데이터베이스가 수정 되었으므로 BoardVO 클래스, MyBatis의 S..
비즈니스에서는 쪼개질 수 없는 하나의 단위 작업을 말할 때 트랜잭션이라는 용어를 사용한다. 원자성 하나의 트랜잭션은 모두 하나의 단위로 처리되어야 한다. 좀 더 쉽게 말하면 어떤 트랜잭션이 A와 B로 구성된다면 항상 A, B의 처리 결과는 동일한 결과이어야 한다. 즉 , A는 성공했지만, B는 시래할 경우 A,B는 원래 상태로 되돌려져야 한다. 일관성 트랜잭션이 성공했다면 데이터베이스의 모든 데이터는 일관성을 유지해야 한다. 트랜잭션으로 처리된 데이터와 일반 데이터 사이에는 전혀 차이가 없어야 한다. 격리 트랜잭션으로 처리되는 중간에 외부에서의 간섭은 없어야 한다. 영속성 트랜잭션이 성공적으로 처리되면, 그 결관느 영속적으로 보관되어야 한다. 예를 들어, 트랜잭션의 가장 흔한 예시는 계좌 이체( bank..
AOP는 흔히 '관점 지향 프로그래밍' 이라는 용어로 번역되는데, 이때 관점 이라는 용어는 개발자들에게는 관심사라는 말로 통용된다. 관심사는 개발 시 필요한 고민이나 염두에 두어야 하는 일이라고 생각할 수 있는데, "파라미터가 올바르게 들어왔는지" "이 작업을 하는 사용자가 적절한 권한을 가진 사용자인지", "이 작업에서 발생할 수 있는 예외는 어떻게 처리해야 하는지" 등이 있다. 핵심 로직은 아니지만 , 코드를 온전하게 만들기 위한 고민들로, 전통적인 방식에선 개발자가 반복적으로 이 고민을 코드에 반영한다. AOP는 이러한 고민을 다른 방식으로 접근하는데. 바로 "관심사의 분리"이다. AOP는 개발자가 염두에 두어야 할 것들을 관심사로 분리하고, 핵심 비즈니스 로직만을 작성할 것을 권장한다. AOP는 ..
REST 방식을 가장 많이 사용하는 형태는 역시 브라우저나 모바일 APP 등에서 Ajax를 이용해서 호출하는 것이다. 댓글은 데이터베이스 상에서 전형적인 1:N의 관계로 구성된다. 하나의 게시물에 여러 개의 댓글을 추가하는 형태로 구성하고, 화면은 조회 화면상에서 별도의 화면 이동 없이 처리하기 때문에 Ajax를 이용해서 호출한다. 17.1 댓글 처리를 위한 영속 영역 댓글을 추가하기 위해서 댓글 구조에 맞는 테이블을 설계한다. 댓글 테이블은 tbl_reply라는 이름의 테이블로 지정해서 생성한다. create table tbl_reply ( rno number(10, 0), bno number(10, 0) not null, reply varchar2(1000) not null, replyer varch..
과거 서버의 데이터를 소비하는 주체가 '브라우저'라는 특정한 애플리케이션으로 제한적 과서버는 브라우저라는 하나의 대상만을 상대로 데이터를 제공했기 때문에 아예 브라우저가 소화 가능한 모든 데이터를 HTML이라는 형태로 전달하고, 브라우저는 이를 화면에 보여주는 역할을 해 왔다. 모바일 시대 앱이나 웹은 서버에서 제공하는 데이터를 소비하게 된다. 스마트폰에서는 앱이라 불리는 고유한 애플리케이션을 이용해서 데이터를 소비하게 되고, 보이는 화면 역시 자신에게 필요한 순수한 데이터만을 요구하게 되었다. 앱에서 서버에 기대하는 것은 완성된 HTML이 아니라 그저 자신에게 필요한 순순한 데이터만 요구 이처럼 서버의 역할은 점점 더 순수하게 데이터에 대한 처리를 목적으로 하는 형태로 진화하고 있다. 또한, 브라우저와..