전체 글
-
[기술면접 JAVA] 클래스변수와 인스턴스변수 차이점, static 키워드취업준비/기술면접 2022. 9. 13. 16:49
면접 예상 질문지를 살펴보며 클래스변수, 인스턴스변수, 지역변수의 차이점 static 키워드에 대해 다시 한 번 정리해보는 시간을 가져볼까 한다. 선언 위치에 따른 변수의 종류 변수는 클래스 변수, 인스턴스 변수, 지역변수 모두 3종류가 있다. 변수의 종류를 결정짓는 중요한 요소는 '변수의 선언 위치' 이므로 변수의 종류를 파악하기 위해서 변수가 어느 영역에 선언되었는지를 확인하는 것이 중요하다. 멤버변수를 제외한 나머지 변수들은 모두 지역변수이며, 멤버변수 중 static이 분은 것을 클래스 변수, 붙지 않은 것을 인스턴스 변수라고 한다. 1. 인스턴스 변수(instance variable) : 클래스 영역에 선언되며, 인스턴스를 생성할 때 만들어진다. 그래서 인스턴스 변수(iv)의 값을 읽어 오거나 ..
-
[웹개발 기술면접] 모델1, 모델2와 MVC 패턴 알아보기취업준비/기술면접 2022. 9. 13. 12:21
스프링을 시작하면서 MVC 패턴에 대해 이해하는데 시간을 많이 투자했다. 개념을 보고 또보고 손으로 적어보니 조금씩 정리가되는 느낌이었다. 취준을 본격적으로 시작하면서 다시 한 번 개념들을 적어보며 정리해보려고 한다. 모델 1 구조 모델 1은 뷰와 로직을 모두 jsp 하나에서 처리하는 구조를 말한다.즉) JSP 페이지 내에 로직 처리를 위한 자바 코드가 출력을 위한 코드와 함께 섞여 삽입된다. 브라우저에서 요청이 들어오면 JSP 페이지는 자신이 직접 자바빈이나 따로 작성한 서비스 클래스를 이용해 작업을 처리하고, 그 처리한 정보를 클라이언트에 출력한다. 장점 단점 - 구조가 단순하여 익히기 쉽다. - 출력을 위한 뷰 코드와 로직을 처리하기 위한 자바 코드가 함께 섞이기 때문에 JSP 코드 자체가 복잡해진..
-
[5-ch18 Spring AOP] 설정, execution, args, @Around, @before, @AfterThrowingBack-End/Spring Legacy 2022. 9. 7. 14:50
이전 포스팅에서 AOP 개념에 대한 설명을 적어봤다. 이번엔 AOP가 그래서 어떻게 사용되는건데?에 대한 궁금증을 풀어보려고 한다. AOP기능은 주로 일반적인 Java API를 이용하는 클래스(POJO-Plain OldJava Object)들에 적용한다. Controller에 적용이 불가능한 것은 아니지만, Controller의 경우 인터셉터나 필터 등을 이용한다. 포스팅에 적어볼 예제에서는 서비스 계층에 AOP를 적용한다. AOP 기능 구현 과정 1. 타깃(Target) 클래스 지정 -> 핵심코드로 아래 예제에서는 SampleServiceImpl이 핵심 코드 2. 어드바이스(Advice) 클래스 지정 -> LogAdvice 3. root-context.xml에서 빈 생성, aspectj 설정 1. 타깃..
-
[5-ch18 Spring] AOP 개념, 용어(JoinPoint, Pointcut, Advice..)Back-End/Spring Legacy 2022. 9. 7. 11:02
AOP란? AOP는 흔히 '관점 지향 프로그래밍' 이라고 불린다. 이때 '관점(Aspect)'이라는 용어는 개발자들에게 '관심사(concern)'라는 말로 통용된다. '관심사'는 개발 시 필요한 고민이나 염두에 두어야 하는 일이라고 생각할 수 있다. 예를들어 - 파라미터가 올바르게 들어왔을가? - 이 작업을 하는 사용자가 적절한 권한을 가진 사용자인가? - 이 작업에서 발생할 수 있는 모든 예외는 어떻게 처리해야 하는가? 위와 같은 고민들은 '핵심 로직'은 아니지만, 코드를 온전하게 만들기 위해 필요한 고민들이다. 전통적인 방식에서는 개발자가 반복적으로 이러한 고민들을 코드에 반영하게 된다. AOP는 이러한 고민에 대한 문제를 조금 다른 방식으로 접근한다. AOP가 추구하는 것은 '관심사의 분리(sepe..
-
[Github Repository] 새로운 내용 업데이트, push 오류 해결Tools/Git & Github 2022. 9. 7. 09:10
이전 게시글에서 깃허브 계정을 생성하고 새로운 repository에 소스 코드를 업로드 하는 방법을 포스팅했다. 이번 포스팅에선 새롭게 프로젝트를 추가했거나 소스 코드를 수정했을 때 로컬 저장소에 저장된 내용을 원격 저장소인 깃허브에 업로드 하는 방법을 적어볼까 한다. Github에 업데이트 하는 법 1. 추가할 파일 더하기 git add . 2. 히스토리 만들기 git commit -m "up to part04" 3. Github로 올리기 git push origin master 이 3개의 스텝만 반복하면 새롭게 업데이트할 수 있는데 문제가 생겼다. push error hint: Updates were rejected because the remote contains work that you do hi..
-
[4-ch17 댓글 처리 ④] 댓글의 페이징 처리 (인덱스 생성, 화면 처리)Back-End/Spring Legacy 2022. 9. 6. 14:01
앞의 포스팅에서는 해당 게시물의 전체 댓글을 가져와서 화면에 출력한다. 문제는 댓글의 수가 엄청 많을 경우이다. 댓글 숫자가 많다면 데이터베이스에서 많은 양의 데이터를 가져와야 되고, 이는 성능상의 문제를 가져올 수 있다. 데이터베이스의 인덱스 설계 댓글에 대해 우선적으로 고려해야 하는 일은 tbl_reply 테이블을 접근할 때 댓글의 번호(rno) 중심이 아니라, 게시물 번호(bno)가 중심이 된다는 점이다. 댓글을 조회할 때에는 해당 게시물의 댓글을 가져오기 때문에 'tbl_reply where bno = 200 order by rno asc'와 같은 방식으로 접근하게 된다. 효율을 높이고 싶다면 게시물의 번호에 맞게 댓글을 모아서 빠르게 찾을 수 있는 구조로 만드는 것이 좋다. 위와 같은 구조를 이..
-
[4-ch17 댓글 처리 ③] jQuery와 Ajax 처리, JavaScript 모듈화Back-End/Spring Legacy 2022. 9. 1. 20:25
JavaScript 모듈화 화면에 사용되는 jQuery는 막강한 기과 다양한 플러그인을 통해 많은 프로젝트에서 기본으로 사용된다. 특히 Ajax를 이용하는 경우 jQuery의 함수를 이용해서 쉽게 사용할 수 있기 때문에 많이 사용한다. 화면 내에서 JavaScript를 처리하다 보면 어느 순간 이벤트 처리와 DOM 처리, Ajax 처리 등이 마구 섞여 유지보수 하기 힘든 코드를 만드는 경우가 있다. 이런 경우를 대비해 좀 더 JavaScript를 하나의 모듈처럼 구성하는 방식을 이용하는 것이 좋다. webapp 내 resources 폴더에 js 폴더 내 reply.js 파일을 작성한다. reply.js 파일은 게시물의 조회 페이지에서 사용하기 위해 작성된 것이므로, views/board/get.jsp 파..
-
[4 -ch17 댓글 처리 ② ] 서비스 영역과 Controller 처리 (@RequestBody, @PathVariable, consumes, produces )Back-End/Spring Legacy 2022. 9. 1. 17:10
게시판에서 게시글을 클릭했을 때 나오는 게시글 상세보기 페이지에서 댓글을 처리하려고 한다. 영속계층, 서비스/ 컨트롤러, javascript로 ajax 처리, 화면 처리 순서대로 작업할 예정이다. https://wonisdaily.tistory.com/71 [4-ch17 댓글 처리 ① ] sql 댓글 테이블 생성과 영속 영역 설계 (MyBatis) 댓글 처리를 위한 영속 영역 댓글 추가하기 위해서 댓글 구조에 맞는 테이블 설계한다. --댓글 테이블 설계 create table tbl_reply ( rno number(10,0), -- 댓글 번호 bno number(10,0) not null, -- 어떤 게시글.. wonisdaily.tistory.com 앞 페이지에서 영속계층 구현은 완료하였다. Repl..