기술면접준비
1. model1과 model2패턴의 차이
model1과 model2의 가장 큰 차이는 view의 역할입니다.
model1은 controller과 view의 역할까지 같이 하기 때문에 프로그램 제작기간이 단축되지만 view단과 controller단의 코드가 섞여 있어 분리가 어렵고 코드의 재사용성도 낮은 단점이 있습니다.
반면 model2는 controller가 view와 분리되어 제작기간은 늘어날 수 있지만, 코드 가독성이 높아지고 재사용성도 높은 장점이 있습니다.
2. JSTL은 무엇이고, 사용하는 이유는 무엇인가?
jstl이란 jsp standard tag library의 약자로 jsp에서 자바의 각종 기능을 태그로 사용할 수 있도록 제공되는 라이브러리를 말합니다. 이로 인해 자바의 조건문, 반복문등을 jsp에서 쉽게 사용할 수 있고, el 태그를 통해 컨트롤러에서 전송한 값을 쉽게 사용할 수 있습니다.
3. jsp에서 세션에 값을 저장하고 꺼내는 방법은 무엇인가요?
컨트롤러 부분에서 HttpSession클래스를 활용해 세션을 생성하여 키와 값의 형태로 데이터를 저장합니다. 그 이후 jsp에 세션을 전달하면 jsp에서는 sessionScope를 통해 세션에 저장된 값을 사용할 수 있습니다. 이 때, 세션을 해제하고 싶은 경우에는 HttpSession클래스의 invalidate()함수를 이용하면 됩니다. 이를 활용해 로그인/ 로그아웃을 구현합니다.
4. jsp에서 한글이 깨지는 문제가 발생하면 어떻게 해야 하나요?
한글이 깨지는 원인은 컨트롤러에서 HttpServletResponse클래스를 이용해 인코딩 처리를 하지 않았거나, jsp에서 인코딩 선언을 하지 않았기 때문입니다. setCharacterEncoding이라는 메소드를 활용해 인코딩 처리하면 한글 깨짐현상을 해결할 수 있습니다.
5. Jsp란 무엇인가?
java Server Page의 약자로, html코드에 java코드를 넣어서 동적인 웹페이지를 생성하는 웹어플리케이션 도구라고 할 수 있습니다. jsp가 실행되면 자바 서블릿으로 변환되어 웹 페이지의 내용이나 모양을 제어합니다.
6. Servlet이란 무엇인가요?
서블릿은 클라이언트의 요구를 받아 그에 대한 처리 후, 결과를 되돌려주는 서버 모듈입니다. 동적인 웹페이지를 생성하는 역할을 하고, 자바 기반 웹 어플리케이션 프로그래밍 기술입니다. 흔히 CGI(Common Gateway Interface)라고 하고, java thread를 이용해 동작하며 mvc패턴에서 controller역할입니다.
7. Ajax란 무엇인가?
비동기 자바스크립트와 xml로써, 웹페이지에서 페이지 이동없이 필요한 일부분만 업데이트 해야 할 때 사용하는 기술입니다. 페이지의 이동 없이 일부분만 비동기방식으로 요청이 가능하기 때문에 시스템 자원소모를 절약할 수 있는 장점이 있습니다. 반면 요청을 남발할 경우에는 서버 부하가 올 수 있습니다.
8. RESTful은 무엇이라고 생각하나요?
*
출처 : jeong-pro.tistory.com/180
REST는 분산 시스템 설계를 위한 아키텍처 스타일이다. (제약 조건의 집합)
RESTful은 아키텍처 스타일을 모두 만족하는 것을 의미한다.
- 왜 분산시스템을 위한 설계인가? 분리된 모듈/ 기능간에 상호 통신이 가능하기 때문
- 웹페이지가 아닌 클라이언트를 위해 데이터만 전송한다.
: 웹 페이지를 위한 html / 이미지를 보내던 이전과 달리 이제는 데이터만 보내면 여러 플랫폼에서 클라이언트가 원하는 데이터를 이용할 수 있다. (모바일에서는 모든 브라우저가 앱에 있는 것이 아니기 때문에 이러한 RESTful api가 적절하고 유지보수성도 좋아짐.)
REST 제약조건
- 클라이언트와 서버가 구분
- Stateless: 각 요청에 클라이언트의 context가 서버에 저장되서는 안된다.
- uniform interface: 자원은 유일하게 식별가능해야 하고 http method로 표현해야 하고 메세지는 스스로 설명해야 하고 하이퍼링크를 통해 애플리케이션의 상태가 전이되어야 한다.
분산시스템 설계를 위한 아키텍처 스타일인 REST를 따라서 만든 API입니다. 해당 api를 구현하기 위해서는 몇 가지 원칙을 따라야 하는데요. 클라이언트와 서버는 구분되어야 하고, URI는 정보의 자원을 표현해야 합니다. stateless로 각 요청에는 클라이언트 정보가 저장되지 않으며, 클라이언트는 캐싱이 가능해야 합니다. 요청된 리소스는 식별가능해야 하고 자원에 대한 행위는 http method인 get,post.put.delete로만 표현가능합니다.
9. 쿠키와 세션의 차이점
http는 비연결성, 비상태성 특징으로 인해 요청과 응답에 대한 이전 정보가 저장되지 않습니다. 이를 보완하고자 쿠키와 세션이 등장하였습니다.
쿠키와 세션의 가장 큰 차이는 저장위치입니다.
쿠키는 서버에서 보낸 응답에 대한 정보들을 웹클라이언트의 지역저장소에 저장하고, 재요청시 함께 보내 사용자를 식별 할 수 있도록 합니다.
그러나 방문한 웹사이트에서 개인정보가 기록되면 로그아웃해도 삭제하지 않으면 유지되기 때문에 보안에 다소 취약하다는 단점이 있습니다.
반면 세션은 요청을 받으면 쿠키를 사용해 세션 id를 생성하고 지역저장소에 저장합니다. 이 세션 id를 이용해 웹서버에 암호화해 전달해 사용자를 식별합니다. 웹브라우저를 닫거나 서버에서 세션 삭제 시 삭제가 되므로 쿠키보다 비교적 보안성이 높습니다.
10. get/post 전송방식의 특징
둘 다 웹브라우저에서 입력한 값이 서버로 넘어갈 때 그 방식을 지정하는 메소드입니다.
get방식
- 데이터 길이가 256byte를 넘지 않는 짧은 데이터를 전송할 때 사용
- 사용자의 웹브라우저에 주소를 노출시켜도 관계없을 때 사용
- 요청 헤더의 url에 쿼리스트링 형태로 인자가 노출되어 전송 됨.
post방식
- 전송 데이터 길이가 비교적 길고 복잡한 양식일 때 사용
- 보안 상 위험문제로 url에 인자값 노출을 피하고자 할 때 사용
11. jquery를 사용한 후 느낀 점은 무엇인가요?
자바스크립트 코드를 훨씬 간결하게 사용할 수 있도록 재사용할 수 있는 형태로 가공해 프로그래밍의 효율을 높여준다고 느꼈습니다.