본문 바로가기

스프링 Spring

(15)
Part 6. 파일 업로드 처리 21. 04. 14. 21. 파일 업로드 방식 태그를 이용하는 방식: 브라우저의 제한이 없어야 하는 경우에 사용 1.페이지 이동과 동시에 첨부파일을 업로드하는 방식 (동기형!) 2. 을 이용해 화면의 이동 없이 첨부파일을 처리하는 방식 Ajax를 이용하는 방식: 첨부파일을 별도로 처리하는 방식 1. 을 이용하고 Ajax로 처리하는 방식 2. HTML5의 Drag And Drop 기능이나 jQuery 라이브러리를 이용해 처리하는 방식 21.2 form 방식의 파일 업로드방식의 파일 업로드 UploadController.java package site.levinni.controller; import java.io.File; import java.io.IOException; import javax.servlet.ServletCon..
Part 5. AOP와 트랜잭션 21. 04. 14. 19. 스프링에서 트랙잭션 관리 한 번에 이루어지는 작업의 단위, 쪼개 질 수 없는 하나의 단위 작업. 트랜잭션의 성격- 'ACID 원칙' 원자성 (Atomicty): 항상 A, B의 처리 결과는 동일해야 함. 한 쪽이 실패하면 다른 한 쪽도 원래 상태로 되돌려져야 함. 일관성 (Consistency): 트랜잭션이 성공했다면 데이터베이스의 모든 데이터는 일관성을 유지해야만 함. 격리 (isolation): 트랜잭션으로 처리되는 중간에 외부에서의 간섭은 없어야 함. 영속성 (Durability): 트랜잭션이 성공적으로 처리되면, 그 결과는 영속적으로 보관되어야 함. 계좌이체를 생각해 보면, 내부적으로는 하나의 계좌에서는 출금이 이루어져야 하고 이체 대상 계좌에서는 입금이 이루어져야 한다. '출금'과 '입금..
댓글 더보기 처리 이어서 21. 04. 14. 🔎 댓글 더보기 처리 이어서.. reply.js 일부 $(function() { getList: function(param, callback, error) { var bno = param.bno; var rnoStr = param.rno ? "/" + param.rno : ""; var url = "/replies/more/" + bno + rnoStr; $.getJSON(url, function(result) { if(callback) { callback(result); } }).fail(function(xhr, status, er) { if(error) { error(er); } }); } }); 🔶 getList()의 변수들 수정. get.jsp 일부 $(function() { var bno = ;..
21. 04. 13. 어제 모달 댓글 처리 하던 거 버그 수정 // 댓글목록 모달팝업 이벤트 $(".chat").on("click", "li", function() { var rno = $(this).data("rno"); console.log(rno); replyService.get(rno, function(result) { console.log(result); $("#reply").val(result.reply); $("#replyer").val(result.replyer); $("#replyDate").val(replyService.displayTime(result.replyDate)).prop("readonly", true).closest("div").show(); $("#myModal").data("rno", rno..
21. 04. 12. 17.4 JavaScript 준비 JavaScript의 모듈화 관련 있는 함수들을 하나의 모듈처럼 묶음으로 구성하는 것. JavaScript의 클로저를 이용하는 것이 가장 대표적인 방법. 클로저: 함수를 리턴. 리턴된 함수를 통해 재호출. 파라미터과 리턴을 함수로 보냄. 클로저의 예술은 익명함수를 리턴하는 데에서 온다. src/main/webapp/resources/js/reply.js get.jsp에 넣어주기. ❓ var replyService = (function() {})(); 익명함수를 호출한 replyService의 타입은 ? 함수를 호출한 결과인 리턴 타입이 아무 것도 없기 때문에 언디파인드!!! reply.js 등록 처리 var replyService = (function() { return..
21. 04. 07. 11.4 조회 페이지와 이동 get.jsp Tables DataTables is a third party plugin that is used to generate the demo table below. For more information about DataTables, please visit the official DataTables documentation. Board List write Show 102550100 entriesSearch: 번호 제목 작성자 작성일 수정일 ${board.bno} Showing 1 to 10 of 10 entries Prev ${num} Next Alert × 처리 완료 Close 🔶 input 태그는 value안에 ${}를 넣지만 input 태그가 아닌 것들은 태그 ..
21. 04. 06. 목차 9. 비즈니스 계층 고객의 요구사항을 반영하는 계층. 프레젠테이션 계층과 영속 계층의 중간 다리 역할 로직을 기준으로 처리. ex) 쇼핑몰에서 상품을 구매 : Business- 구매 서비스 / Persistence- 상품 처리 객체, 회원 처리 객체 (포인트 적립) 9.1 비즈니스 계층의 설정 인터페이스 BoardService.java package site.levinni.service; import java.util.List; import site.levinni.domain.BoardVO; public interface BoardService { void register (BoardVO boardVO); BoardVO get(Long bno); // 상세 조회 boolean modify(Board..
Part3. 기본적인 웹 게시물 관리 21. 04. 05. 07. 스프링 MVC 프로젝트의 기본 구성 7.1 각 영역의 Naming Convention(명명 규칙) 화면계층, 비즈니스 계층, 영속 계층 각 영역은 설게 당시부터 영역을 구분하고, 해당 연결 부위는 인터페이스를 이용해 설계하는 것이 일반적. 네이밍 규칙 xxController xxService, xxServiceImpl xxDAO, xxRepository VO, DTO: VO는 Read Only 목적이 강하고, 데이터 자체도 불변하게 설계하는 것이 정석. DTO는 데이터 수집의 용도가 더 강함. ex) 웹 화면에서 로그인하는 정보는 DTO 사용. 7.2 프로젝트를 위한 요구사항 프로젝트를 진행하기 전 고객의 요구사항을 인식하고, 이를 설계하는과정이 필요!! (요구사항 분석 설계) 고객이 무엇을 원하..