System.out.println("Hello, World");

'2012/05/09'에 해당되는 글 4건

  1. 2012.05.09 MVC 패턴
  2. 2012.05.09 Filter
  3. 2012.05.09 안드로이드 - View의 속성
  4. 2012.05.09 안드로이드 - 리니어 레이아웃(LinearLayout)

MVC 패턴

○ GUI기반 Application 설계 패턴

○ 클라이언트의 요청을 받아 처리하여 응답하는 로직을 세개의 로직(Model, View, Controller)로 나누어 개발


-Model

  >Business Logic(클라이언트 요청에 대한 업무 처리)을 담당

  >Business Service와 Data Access Object로 분리

   >Business Service

    ◇ Business 로직의 일의 흐름을 관리

    ◇ #DB 관련된 작업을 제외한 로직을 처리

   >Data Access Object(DAO)

    ◇ Database 관련된 로직만 처리

    ◇ DB 관련 로직을 제외한 어떠한 업무처리도 가지지 않는다.


-View

 >처리 결과를 응답하는 로직을 담당(Presentation Logic)


-Controller

 > Client의 요청을 처리하는 전체 흐름을 control하는 역할을 담당


 처리내용

 1. client의 요청을 받는다.

  1-1 client가 요청시 입력한 내용을 읽는다.

  1-2 client로 부터 받은 값을 검증한다.

 2. Business 로직을 호출한다. - Model 호출

 3. 응답처리 로직을 호출한다. - View 호출


Model2 -> Web Application에 MVC 패턴 적용

Model - java bean -> java class

view - JSP

Controller - Servlet


<calculator를 MVC 패턴으로 만들기>

controller는 servlet으로 만들며, View는 JSP, Model은 Java를 이용하여 만들도록 한다. 


[컨트롤러]CalculatorServlet


[Model]CalculatorService


[클라이언트가 입력하는 페이지]Calculator_form.jsp


[View]Calculator_Servlet.jsp




Posted by 김마농

Filter

- 클라이언트의 요청을 받은 component(Servlet, JSP)가 일하기 전 처리, 일한 후 처리를 담당하는 컴포넌트

 - 구현

> javax.servlet.Filter를 implments

> callback(liftcycle) 메소드 재정의

-init(FilterConfig)

-destroy()

-doFileter(ServletRequest, ServletResponse, FilterChain)

> web.xml에 filter 등록

<filter>태그 : filter 객체 등록

<filter-mapping>태그 : 필터가 호출될 url 설정



<예제>

EncodingFilter

web.xml

웹서버가 실행되면 클라이언트의 요청 전에 Filter를 거친다음에 응답한다. 그래서 클라이언트의 요청전에 

한글처리가 되어 서블릿에 한글처리르를 안해도 한글처리되어 값이 넘어간다.


Posted by 김마농
id

뷰를 칭하는 고유한 이름을 정의한다. 코드나 XML 문서에서 이 뷰를 참조할때 id를 사용하므로 의미를 잘 설명할 수 있는 직관적인 이름을 붙인다. XML 문서에 id를 지정해 놓으면 이 이름이 R.java에 정수 상수로 정의된다. 코드에서 이 뷰를 참조할 때는 findViewById라는 메서드를 호출하며 인수로 참조할 뷰의 id를 전달한다.


layout_width, layout_height


위젯은 보통 부모의 크기를 가득 채우거나 아니면 자신의 내용물 크기에 맞추거나 둘 중 하나의 방식으로 배치된다. 예를 들어 "start"라는 캡션을 가지는 버튼을 배치할때 수평, 수직 각 방향에 대해 어떤 크기를 지정하는가에 따라 버튼의 크기가 달라진다.


Posted by 김마농

방향 설정

 - LinearLayout은 차일드 뷰를 일렬로 배치하는 레이아웃이다. XML 문서에 나타나는 순서대로 뷰가 차곡 차곡 배치된다. 별도의 지정이 없는 한 뷰 사이의 공백은 없으며 다닥 다닥 붙어서 배치된다. 가장 단순해 보이지만 직관적이어서 사용 빈도가 높다. 또한 응용의 묘미가 있어서 활용도가 높으며, 리이너 몇개만 조합해도 왠만한 화면 모양은 거의 만들 수 있다.


 리니어의 가장 중요한 속성은 뷰의 배치 방향을 결정하는 orentation이다. 차일드를 일렬로 배치하는 방법은 수평, 수직 두 가지가 있다. vertical은 차일드를 위에서 아래로 수직으로 배열하고, horizontal은 차일드를 왼쪽에서 오른쪽으로 수평배열한다. 이 속성을 별도로 지정하지 않을때는 dafault인 수평으로 적용된다.


 리니어 레이아웃을 적용시키기 위해서는 android:orientatin="horizontal"을 적용시키면 된다.


 만약 텍스트의 속성이에서 android:layout_width="fill_parent"로 지정해놓으면 부모의 폭 전체를 모두 차지해버리기 때문에 나머지 텍스트들은 보이지가 않는다. 그리하여 fill_parent를 android:layout_width="wrap_content"로 바꿔야 한다.


 바꾼후 실행해보면 각 문자열이 자신의 폭만큼만 차지하여 나란히 배열될 것이다. 수평으로 배치할려면 차일드가 꼭 필요한만큼의 폭만 사용해야 한다. 단 화면 폭이 좁아 마지막 문자열은 자동 개행되어 표시된다. 만약 앞쪽 두 문자열이 레이아웃의 폭을 다 써버렸다면 마지막 문자열은 화면 밖으로 밀려나 보이지 않을 것이다.


리니어는 무조건 차일드를 일렬로 배치하기만 할 뿐 자동 개행기능은 제공하지 않는다. 위쪽에서 자동 개행되는 것은 텍스트 뷰의 기능이지 리니어의 기능이 아니다. 


정렬 지정

뷰의 영역이 충분히 크면 상하좌우에 넓은 여백이 생긴다. 하지만 뷰가 커진다고 해서 내용물도 같이 커지는게 아니기 때문에 어느족에 배치할 것인지의 문제가 생긴다. 내용물을 뷰의 어느쪽에 배치할 것인가는 gravity 속성으로 지정한다. 수평, 수직 방향에 대해 정렬 방식을 각각 지정할 수 있으며 | 연산자로 두 개의 속성을 묶어서 지정할 수 있다.





Posted by 김마농