프로그래밍 10

[Spring] Spring MVC

Spring MVC - 톰캣을 실행시키면 서블릿 컨테이너가 구동된다. 그 후 web.xml 의 내용을 불러와 생성해주고 관리해준다. - Web.xml 내용대로 .do 리퀘스트가 생기면 디스패처 서블릿이 실행된다. - 디스패처 서블릿은 스프링 컨테이너를 구동하고 핸들러 매핑을 이용해 컨트롤러를 검색하도록 요청하고 핸들러 매핑은 해당 컨트롤러 객체를 리턴한다. - Controller 는 model and view 에 비즈니스 로직 후에 얻은 결과물을 셋팅하고 View 단으로 리턴한다. - 디스패처 서블릿은 응답할 View 객체를 찾기 위해 ViewResolver 에게 질의를 한다. - ViewResolver 를 통해 찾아낸 Viewp(jsp)에 request를 전달 한다.

[Spring] Model1, Model2 아키텍쳐

Model1 아키텍쳐 - 클라이언트가 jsp 요청 - jsp 에서 View 단의 html 과 css 를 처리하고 Controller 단의 사용자 입력정보추출, DB연동처리, 화면 네비게이션 등의 기능을 처리한다. - jsp 에서는 자바빈즈를 이용해 비즈니스 로직인 Model 에 접근한다. - 그 다음으로 DB 연동을 통해 사용자가 요청한 정보를 가져온다. - 요청에 대한 응답으로 통신을 마친다. - 이 구조의 특징은 jsp 에서 Controller 기능과 View 기능을 모두 제공한다는 것이다. 이로 인해서 jsp 파일에 자바 코드와 디자인 소스들이 혼재하기 때문에 유지보수에 어려움이 따른다. Model2 아키텍쳐 - 클라이언트가 jsp 를 요청 - Controller 단의 Servlet 은 브라우저의 ..

Clean Code - 객체와 자료구조

자료 추상화 구체적인 클래스는 구현을 외부로 노출하고 추상적인 클래스는 구현을 감춘다. 그저 조회 함수와 설정 함수로 변수를 다룬다고 그것이 클래스는 아니다. 추상 인터페이스를 제공해 구현을 모른 채 자료의 핵심을 조작할 수 있는 것이 클래스이다. 또한 클래스 메소드명도 추상적이게 표현하여 구현을 감추는 것이 더 추상화 된 표현이다. 인터페이스와 조회/설정 함수만으로는 추상화가 이루어지지 않는다. 객체가 포함하는 자료를 표현할 방법을 고민하여 추상화 시켜야지, 아무 생각 없이 조회/설정 함수를 추가하는 방법이 가장 나쁜 표현 방법이다. 자료/객체의 비대칭 객체는 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만을 공개한다. 반면, 자료구조는 자료를 그대로 공개하며 별다른 함수를 제공하지는 않는다. 자료구..

Clean Code - 주석

주석 나쁜 코드에 주석을 달지 마라. 새로 짜라. – 브라이언 W. 커니핸, P.J. 플라우거 주석은 사실상 ‘필요악’이다. 프로그래밍을 통해 좋은 코드를 만들면 주석은 전혀 필요없다. 코드로 의도를 표현하지 못해서 실패를 만회하기 위해 주석을 사용하는 것이다. 주석이란 1. 주석은 나쁜 코드를 보완하지 못한다 : 코드 품질이 나쁘기 때문에 주석을 달아 알아먹기 쉽게 만들기 위해 주석을 단다. 틀렸다. 코드를 정리해서 좋은 코드를 만드는게 정답이다. 자신이 저지른 난장판을 주석으로 설명하려 애쓰는 대신에 그 난장판을 깨끗이 치워라. 2. 코드로 의도를 표현하라 : 개발자는 코드를 “의도를 표현하기 위한 훌륭한 수단” 이라고 생각해야 한다. 코드만으로 의도를 설명하기 어려운 것은 잘못된 생각이다. Ex) ..

Clean Code - 깨끗한 함수

깨끗한 함수란? 함수 : 프로그램의 기본적인 단위 함수를 잘 만드는 방법 1. 작게 만들어라 : 함수를 만드는 규칙은 첫번째 ‘작게!’, 두번째 ‘더 작게!’ 이다. 중첩 구조가 생길만큼 함수가 커져서는 안된다. 블록 들여쓰기는 1단이나 2단이 적당하다. 2. 한가지만 해라 : “함수는 한 가지를 해야한다. 그 한 가지를 잘해야 한다. 그 한 가지만을 해야한다.” 3. 함수 당 추상화 수준은 하나로 : 한 함수 내에 추상화 수준을 섞으면 코드를 읽는 사람이 헷갈린다. Ex) getHtml() 과 .append(“\n”) 은 다른 추상화 수준이므로 함수 내에 저 두개의 코드가 있으면 이 규칙을 위반한 함수이다. 4. 서술적인 이름을 사용하라 : 서술적인 이름을 사용하면 개발자 머릿속에서 설계가 뚜렷해지므로..

[JAVA] 문자열에서 가운데 글자만 출력하기. (문자열)

getMiddle메소드는 하나의 단어를 입력 받습니다. 단어를 입력 받아서 가운데 글자를 반환하도록 getMiddle메소드를 만들어 보세요. 단어의 길이가 짝수일경우 가운데 두글자를 반환하면 됩니다. 예를들어 입력받은 단어가 power이라면 w를 반환하면 되고, 입력받은 단어가 test라면 es를 반환하면 됩니다. 풀이법 이 문제에서 사용되는 기법은 크게 세가지가 있습니다. 1. 문자열에서 원하는 위치의 문자를 찾기 위한 charAt() 메소드 2. 문자를 문자열로 형변환 시켜주는 String.valueOf() 메소드 3. 문자열의 길이를 기준으로 문자열이 홀수인지 짝수인지 판단해주는 if 분기문 코드 전문-------------------------------------------------------..