목록Spring (37)
YJ의 새벽
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nhosn/btsftKiG5RI/zhKgCplpkBKtM77Rzi5Gf1/img.png)
WebSocket - 브라우저와 웹 서버간의 전이중 통신을 지원하는 프로토콜 전이중 통신(Full Duplex) : 두대의 단말기가 데이터를 동시에 송/수신 하기 위해 각각 독립된 회선을 사용하는 통신 방식(ex. 전화 ) - HTML5 부터 지원 - Java 7 부터 지원 (8 버전 이상 사용 권장) - Spring Framework 4 이상 부터 지원 WebSocketHandler 인터페이스 : 웹소켓을 위한 메소드를 지원하는 인터페이스 -> WebSocketHandler 인터페이스를 상속받은 클래스를 이용해 웹소켓 기능을 구현 **** WebSocketHandler 주요 메소드 *** void handlerMessage(WebSocketSession session, WebSocketMessage m..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/KdPjS/btse3FV7HeA/6NiOgxK3JmmFD6P1VWZkAK/img.png)
Spring AOP ?? -- 관점 지향 프로그래밍 !!! -- 중복되는 공통 코드부분을 별도의 영역으로 분리 !!! -- 소스코드의 중복을 줄이고, 필요할때마다 가져다 쓸수있게 객체화 하는 기술 !!! *** Aspect ?? : Advice + Pointcut == 기능이 수행. -- 동작코드를 의미하는 Advice 와 작성한 Advice가 실제로 적용된 메소드인 Pointcut 을 합친 개념. -- AOP 개념을 적용하면 핵심기능 코드 사이에 끼어있는 부가기능을 독립적인 요소로 구분해 낼 수 있고, 이렇게 구분된 부가기능 Aspect는 런타임 시에 필요한 위치에 동적으로 참여하게 할 수 있다. -- pom.xml 설정정보 확인 . --- servlet-context.xml 에 proxy 추가. **..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cWtraY/btseP6sdHAx/Bbre1IoOGi1dywCpJVUKCK/img.png)
@Scheduled Spring에서 제공하는 스케줄러 - 스케줄러 : 시간에 따른 특정 작업(Job)의 순서를 지정하는 방법. * 설정 방법 1) servlet-context.xml -> Namespaces 탭 -> task 체크 후 저장 2) servlet-context.xml -> Source 탭 -> 추가 @Scheduled 속성 - fixedDelay : 이전 작업이 끝난 시점으로 부터 고정된 시간(ms)을 설정. - fixedRate : 이전 작업이 수행되기 시작한 시점으로 부터 고정된 시간(ms)을 설정. cron 속성 : UNIX계열 잡 스케쥴러 표현식으로 작성 - cron="초 분 시 일 월 요일 [년도]" - 요일 : 1(SUN) ~ 7(SAT) ex) 2019년 9월 16일 월요일 10..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/MMJoY/btseHmuhedK/Lk6OzKZGCz6BLJL571iM8K/img.png)
--- 댓글 테이블을 살펴보자. -- 이상태로 목록을 뽑아가면 , 댓글,대댓글 정렬이 아니라, DB 순서대로 정렬이 된다. -- 댓글과 대댓글 순서가 뒤죽박죽이다. 계층형쿼리로 만들어주자 댓글 목록 조회 ( 계층형 구조 ) -- 상위 타입과 하위 타입간의 관계를 계층식으로 표현할 수 있게 하는 질의어 (SELECT) -- START WITH : 상위 타입(최상위 부모) 으로 사용될 행을 지정 -- CONNECT BY : 상위타입과 하위타입 사이의 관계를 규정. PRIOR (이전의) 연산자과 같이 사용하여, 현재행 이전에 상위타입, 또는 하위타입이 있을지 규정. 부모 --> 자식 계층구조 : CONNECT BY PRIOR 자식컬럼 = 부모컬럼 자식 --> 부모 계층구조 : CONNECT BY PRIOR 부..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ELGle/btsexhUmGNS/WSlVssySR7VrcvNZJ6DmK1/img.png)
---- 삭제는 간단하다. BOARD_ST = 'N' --> BOARD_ST = 'Y' 로 update 문 사용. --- @PathVariable 로 boardCode, boardNo 값을 가져와 --boardNo 값으로 DB 접근 , --boardCode 값으로 redirect 해주자 . --삭제버튼 누르면 , 게시글이 삭제되도록 해보자 . -- 삭제버튼이 화면에 존재할때, 버튼을 누르면 작동하는 이벤트로 함수를 걸어놨다. js 에서 만져보자. -- boardCode 를 맵핑하기위해 jsp -> js 로 쓰일수있도록 전역변수를 jsp 에 선언해두자. // 즉시 실행 함수 : 성능up, 변수명 중복 X (function(){ const deleteBtn = document.getElementById("d..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cq166e/btserfol1cE/oYWsFKdaGDNdnpkgwmdLOK/img.png)
-- 게시글 작성과, 수정이 쿼리파라미터 ( mode-insert / mode-update ) 로 구분된다. -- 일단 먼저, 글쓰기 버튼을 눌렀을때, 받는 주소를 연결해주자. ( 글목록 글쓰기 버튼 ) -- 수정 버튼 눌렀을때, 받는 주소 수정. ( 글목록 타이틀 클릭후 나오는 수정 버튼 ) ---- 수정버튼 누르면, 다시 글쓰기로 ! 이동하는걸 확인하자. ---- BoardController 에서, GetMapping. --- 글쓰기 버튼으로 들어온 글쓰기폼과, 수정하기버튼으로 들어온 글수정폼을 하나의 컨트롤러로 맵핑해주었다. --- '수정하기' 버튼으로 들어왔다면 ( mode='update' ) 미리 게시글정보를 받아온 service 를 호출하여 데이터를 깔아주자. ( title, image , c..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cFDLEK/btsdECThEDz/6WkaQCuIygVWrHZNQCOdX1/img.png)
--- 페이지 이동을 해보자 . -- boardList.jsp 수정 . --- 넘어가는것을 확인 . ---- 상세 게시글 조회를 해보자 . --- boardList.jsp 에서 경로 설정 . --- BoardController , 컨트롤러 클래스 ---- BoardService . 서비스 클래스 --- BoardDAO . DB접근 클래스 --- board-mapper.xml 쿼리문 작성 . SELECT * FROM BOARD_IMG WHERE BOARD_NO = #{boardNo} ORDER BY IMG_LEVEL SELECT BOARD_NO, BOARD_TITLE, BOARD_CONTENT, TO_CHAR(CREATE_DT, 'YYYY"년" MM"월" DD"일" HH24:MI:SS') CREATE_DT..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Jj74H/btsddTIStYp/Zn6y8aWOpXlCEmVy3iAw90/img.png)
-- interceptors : 인터셉터를 모아둔 태그 , ( servlet-context.xml ) 에작성 -- interceptor : 요청이 Dispatcher Servlet 에서 Controller 에 도달하지 전, 또는 후에 요청 / 응답 객체 (req,resp ) 를 가로채서 사용할 수 있는 객체 . --mapping : 가로챌 요청의 패턴을 지정 --beans:bean : 인터셉터 역할을 수행할 클래스를 찾아서 bean 으로 등록 . -- servlet-context.xml 에 인터셉터 빈 추가 . -- 인터셉터가 요청을 가로채는 시기 1. preHandle ( 전처리 ) : 컨트롤러 수행 전 2. postHandle ( 후처리 ) : 컨트롤러 수행 후 ( 컨트롤러 수행 결과 참조 가능 ) ..