2020-12-31

jsbak·2020년 12월 31일
0

오늘 우리가 볼 것
1. 트랜잭션관리 어떻게
2. 우리 어플리케이션 단점? 해결 ? 리스너

제목, 작성자, 비밀번호, 이메일, 첨부파일, 내용 있어야한다. (비회원도 작성?)

미들 티어 - 파일 시스템 리소스 형태로 저장

Command Object - 클라이언트가 보내주는 데이터? ModelAttribute로 받아옴?

Transaction 트랜잭션 - 절대로 쪼갤수 없는 작업의 단위
원자성!
게시글은 게시글과 첨부파일 모두 DB에 메타데이터가 업로드 됐을때가 게시글 작성이 완료 된 것이다.

우리 어플리케이션의 문제점
prod가 controller 에서 트랜잭션을 처리 해야한다 그런데 컨트롤러에서는 하지않는다
다만 웹리소스를 저장하려면 req가 필요하다
뒤의 모델부분은 웹하고도 관계X(servletContext를 쓰지 않는다)

그래서 이 문제를 리스너로 해결해보자 또한 이것은 매번 실행이 아닌 한번만 실행되면된다.

String saveFolderUrl = "prodImages";
	File saveFolder = new File(req.getServletContext().getRealPath(saveFolderUrl));
	if(!saveFolder.exists()) { // 배포시 빈 폴더를 이클립스가 버림			
    		// mkdir, 그 것만, mkdirs 계층 구조까지
    		saveFolder.mkdirs(); 
	}

이벤트 처리 4단계
Ex) 버튼을 클릭했을때 알러창을 띄워서 메시지 보여주기
1. Event Target
2. Target을 대상으로 처리하고 싶은 Event
3. 이벤트 핸들러 구현 Event Handler
4. Target 에 Handler 를 붙인다.

타겟 - 어플리케이션
이벤트 - 어플리케이션 시작되는부분
어플리케이션 시작처리 핸들러 - 리스너
부착 관계 - web.xml 등록

언젠가는 생성되고 소멸되는데 이 주기를 어떤 범위로 할 것인지 정한다.

벌써 6개 3 * (시작, 종료)
Scope도 존재하기 때문에 attribute
삽입,삭제,수정

어떤 이벤트를 지원하는지는 가지고 있는 메서드를 보면 된다.

단 이것은 싱글턴인 경우에만 가능하다?

트랜잭션 관리에서
1. 어디 레이어에서 할지 결정이 필요하다
2. 로직을 끌고 가는 능력이 필요하다?

비지니스 레이어에서 하니까
비정상적인 ?? 의존성 발생.
중복문제

스프링을 쓰면 해결이 된다?

핵심 방법론? AOP (Aspect Oriented Programming)
관점 지향 프로그래밍?

1. 트랜잭션 관리 구조
2. 직접 관리의 문제점

나중에 스프링 썻을때 뭐가 다르나지

추천 기능 넣기??
누구나 다 접근 가능
인가되지 않은 추천자를 DB에 저장할 수는 없다.
-> 클라이언트 상태 를 어디에 저장할 것인가?
쿠키, 세션(미들티어, 로그아웃, 세션 기간 지나면 소멸, 세션에 많이 넣으면 서버사이드 프로그램이 무거워짐)

응답데이터에 어떤 글을 추천했는지 포함

쿠키는 단순 문자열, 그 안에 여러 글을 포함 시켜야한다.
방법은? 이미지 뷰쪽에서 처리한 방식?
어떤 클라이언트가 봤다는걸 쿠키로 남겨두고 그 이미지를 복원하자 이때 쿠키를

imageStreamingServlet
어떤 이미 본것을 배열로 남겨두는데
배열을 문자열로 바꾸는 과정에서 마샬링을하고있다.

ckeditor?

링크 : https://ckeditor.com/ckeditor-4/
플러그인 생태계가 많다.
가져가 쓸수 있는 녀석이 많다.

사용법

이미지 플러그인
이용?
링크 : https://ckeditor.com/docs/ckeditor4/latest/examples/image.html

여기를 변경?
-> filebrowserImageUploadUrl: '/apps/ckfinder/3.4.5/core/connector/php/connector.php?command=QuickUpload&type=Images', 얘만

  1. ckeditor 요청 보내기
  2. 요청 정보 수정
  3. ckeditor에게 url을 반환?

유튜브? 플러그인
https://ckeditor.com/cke4/addon/youtube

첨부파일 신규 인서트
삭제 딜리드
게시글 수정 수정
트랜잭션 관리하는게 정상인데
모디파이나 리무브에서는 트랜잭션 관리하지말자

게시글 수정이 비밀번호를 받아서 인증해야한다.
업데이트시 비밀번호도 수정해야하기 때문에

수정, 등록, 삭제 쿼리 (삭제는 메타, 2진 둘다 지워야한다. 2진데이터의 저장명이 필요하다. 그래서 selectAttach를 통해서 우선 먼저 2진 데이터를 가져와야하는것 그다음 메타 지우고?)

지우려고하는 첨부파일의 ID를 hidden으로 숨겨야한다.?

profile
끄적끄적 쓰는곳

0개의 댓글