이번에는 리니어 레이아웃에 대해서 알아보겠습니다. 리니어 레이아웃을 보통 가장 많이 사용하며 이 레이아웃으로만으로도 웬만한 앱은 만들 수 있습니다. 리니어 레이아웃에서 빠질 수 없는게 방향 설정하기 입니다. 방향 설정은 리니어 레이아웃에서 꼭 필요한 속성으로, 뷰를 차례대로 추가할 때 가로 방향으로 할 것인지 또는 세로 방향으로 할 것인지를 지정할 수 있습니다. 리니어 레이아웃을 처음 추가했을 때는 기본 값이 세로방향으로 되어 있습니다. 리니어 레이아웃 안에 세 개의 버튼을 순서대로 추가할 경우에 XMl과 자바 코드를 구성하는 방법은 다음과 같습니다.



LinearLayout_vertical.xml 

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:orientation="vertical"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context=".MainActivity" >


    <Button

        android:id="@+id/button01"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="버튼1" />

    

    <Button

        android:id="@+id/button02"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="버튼2" />

    

    <Button

        android:id="@+id/button03"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="버튼3" />


</LinearLayout>



위 속성에 보면 android:orientation="vertical" 보이시나요? vertical 은 수직방향으로 레이아웃을 구성하겠다는 의미입니다.


프로젝트를 실행하면 다음의 그림과 같이 나오게 됩니다.





버튼이 세로(수직) 방향으로 내려오네요. 그렇다면 가로 방향은 어떻게 하면 될까요? 단순히 리니어 레이아웃의 orientation 속성 값만 'horizontal'로 바꾸면 됩니다. 속성을 바꾼 후에 실행해 보면 다음과 같은 화면을 볼 수 있습니다.





그런데 에뮬레이터에 보이는 화면을 보면 세 개의 버튼 중에 첫번째 버튼만 보이는 것을 알 수 있습니다. 왜 그럴까요? 그 이유는 버튼들 가로 속성을 match_parent를 했기 때문입니다. 그러므로 리니어 레이아웃을 세로 방향으로 했을때는 정상적으로 보이지만 가로방향을 했을때에는 버튼 2, 3이 버튼1에 가려지게 되는것입니다. 이걸 정상적으로 볼려면 버튼들 속성을 바꿔주면 됩니다. 버튼들의 각각 속성인 android:layout_width="match_parent" 를 android:layout_width="wrap_content"로 바꿔 보겠습니다.



네...이제 화면이 정확하게 나오네요.


다음 포스팅에서는 리니어 레이아웃을 자바코드로 만드는 방법을 알아보도록 하겠습니다.


Posted by 정윤문경아빠

안녕하세요. 이번에는 안드로이드 레이아웃에 대해서 알아보겠습니다.


안드로이드에서 제공하는 기본 레이아웃은 다음과 같이 크게 다섯 가지로 나눌 수 있습니다.



레이아웃 이름 

설 명 

 리니어 레이아웃(LinearLayout)

- 박스(Box) 모델

- 사각형 영역들을 이용해 화면을 구성하는 방법

- 표준 자바의 BoxLayout과 유사 

 상대 레이아웃(RelativeLayout)

- 규칙(Rule) 기반 모델

- 부모 컨테이너나 다른 뷰와의 상대적 위치를 이용해 화면을 구성하는 방법 

 프레임 레이아웃(FrameLayout)

- 기본 단위 모델

- 하나의 뷰만 보여주는 방법

- 가장 단순하지만 여러 개의 뷰를 추가하는 경우 중첩시킬 수 있으므로 뷰를 중첩한 후 각 뷰를 전환하여 보여주는 방식으로 사용할 때 유용함 

 테이블 레이아웃(TableLayout)

- 격자(Grid) 모델

- 격자 모양의 배열을 이용하여 화면을 구성하는 방법

- HTML 에서 많이 사용하는 정렬 방식과 유사하여 실용적임 

 스크롤 뷰(ScrollView)

- 스크롤이 가능한 컨테이너

- 뷰 또는 뷰그룹이 들어갈 수 있으며 화면 영역을 넘어갈때 스크롤 기능 제공


추가로 절대 레이아웃(AbsoluteLayout) 이라는것이 있기는 한데 안드로이드 단말은 해상도나 화면 크기가 모두 달라 절대 좌표를 사용하는 경우에는 단말마다 다른 해상도를 맞추기 어렵기 때문에 더이상 지원하지 않게 되었습니다. 그냥 예전에 단말의 종류가 몇개 없을때 잠깐 사용된 적이 있다는것 정도로만 아시면 되겠습니다.


안드로이드에서 기본적으로 제공하는 레이아웃들을 사용할 때는 항상 android:layout_width와 android:layout_height 속성이 들어가야 합니다. 그 외의 다른 속성들도 필요 없으면 넣지 않을 수 있지만 위의 두 가지 속성을 넣지 않으면 오류가 발생하게 됩니다. 


다음 포스팅에서는 리니어 레이아웃에 대해서 알아보도록 하겠습니다.


Posted by 정윤문경아빠
IT 프로그래밍/JSP2014. 2. 1. 16:56

자바는 다양한 기능의 클래스를 제공하고 있으며, 이 클래스들을 사용해서 프로그래밍을 하게 됩니다. JSP 페이지 역시 자바를 기반으로 하고 있기 때문에, 자바 언어가 제공하는 클래스들을 사용할 수 있습니다. JSP 페이지에서 자바의 클래스를 사용하기 위해서는 어떤 자바 클래스를 사용할 것인지 미리 지정해 주어야 하는데, 이럴 때 사용하는 것이 바로 page 디렉티브의 import 속성입니다. import 속성은 다음과 같이 사용됩니다.



<%@ page import = "java.util.Calendar" %>

<%@ page import = "java.util.Date" %> 


위 코드는 JSP 페이지에서 java.util.Calendar 클래스와 java.util.Date 클래스를 사용할 것이라고 지정하고 있습니다. 위 코드에서는 한 줄에 하나씩 지정했는데, 다음과 같이 한줄에 여러 개를 콤마로 구분하여 함께 표시할 수 있습니다.



<%@ page import = "java.util.Calendar, java.util.Date" %> 


위 코드는 java.util 패키지에 있는 두 클래스인 Calendar와 Date를 사용한다고 명시한 것인데, 다수의 클래스를 사용해야 할 경우 위 코드와 같이 일일이 입력해 주는 것은 성가실것입니다. 이 경우 다음과 같이 '*' 를 사용하여 간단하게 특정 패키지에 속해 있는 모든 클래스를 사용할 수 있습니다.



<%@ page import = "java.util.*" %> 


위 예제처럼 표현하면 util 패키지의 모든 클래스를 사용한다는것을 간결하게 표현할 수 있지만 왠만하면 모든 클래스를 사용하는 경우는 없기때문에 가급적이면 제일 첫번째 예제처럼 사용하고자 하는 클래스를 일일이 지정하는것을 권장합니다. 왜냐하면 사용안하는 클래스까지 import 해버리면 메모리 낭비 및 속도저하를 일으킬 수 있기 때문입니다. 간단한 프로그램에서는 크게 영향을 미치지 않겠지만 복잡하고 큰 프로젝트에서는 분명한 차이가 있기 때문에 사용하고자 하는 클래스만 지정해서 사용하시기를 권장합니다.


page 디렉티브의 import 속성을 사용해서 사용할 패키지를 지정하게 되면 JSP 페이지에서 해당 클래스를 사용할 수 있게 됩니다. 예제를 통해 선언하는 방법과 사용법을 보도록 하겠습니다.




<%@ page contentType = "text/html; charset=euc-kr" %>

<%@ page import = "java.util.Calendar" %>  // import 속성을 사용하여 java.util.Calendar 클래스를 사용한다고 지정

<html>

<head><title>Calendar 클래스 사용방법</title></head>

<body>

<%

    Calendar cal = Calendar.getInstance();  // 현재 날짜 및 시간 정보를 갖고 있는 Calendar 클래스의 인스턴스를 생성

%>

오늘은

    <%= cal.get(Calendar.YEAR) %>년

    <%= cal.get(Calendar.MONTH)  +1 %> 월  // Calendar.MONTH 의 리턴값은 0부터 시작하기 때문에 반드시 +1 을 해줘야 제대로 표현됨

    <%= cal.get(Calendar.DATE) %> 일

입니다.

</body>

</html>


실행을 해보면 현재 사용하시는 컴퓨터의 날짜가 나오게 될것입니다.


지금까지 page 디렉티브에 대해서 알아보았습니다.


이해가 안되시거나 궁금하신점은 댓글 남겨주시기 바랍니다.^^



Posted by 정윤문경아빠
IT 프로그래밍/JSP2014. 2. 1. 16:35

page 디렉티브의 contentType 속성은 JSP 페이지가 생성할 문서의 타입을 지정합니다. contentType 속성의 값은 다음과 같이 구성됩니다.



TYPE


또는


TYPE; charset=캐릭터 셋 


TYPE은 생성할 응답 문서의 MIME 타입을 입력합니다. JSP에서 주로 사용되는 MIME 타입으로는 "text/html", "text/xml", "text/plain"이 있습니다. 아래는 HTML 문서를 생성하는 경우 contentType 속성의 설정 예 입니다.



<%@ page contentType="text/html" %> 


contentType 속성을 설정하지 않을 경우 기본값은 "text/html" 입니다. 그리고 '; charset=캐릭터 셋' 부분은 생략이 가능합니다. 캐릭터 셋 부분을 생략할 경우 기본 캐릭터 셋인 ISO-8859-1을 사용하게 됩니다. 국내에서는 주로 한글로 구성된 HTML 문서를 생성하는 JSP 페이지를 작성하게 되는데, 한글로 구성된 HTML 문서를 생성할 때에는 다음과 같이 euc-kr 캐릭터 셋을 사용하게 됩니다. 참고로 캐릭터 셋을 입력할 때에는 대소문자를 구분하지 않습니다.



<%@ page contentType="text/html; charset=euc-kr" %>


또는


<%@ page contentType="text/html; charset=EUC-KR" %> 


UTF-8 캐릭터 셋을 이용하는 XML 문서를 생성하고 싶은 경우에는 다음과 같이 contentType 속성에서 "text/xml" MIME 타입을 사용하고 charset의 값으로 UTF-8 을 지정하면 됩니다.



<%@ page contentType="text/xml; charset=utf-8" %> 


캐릭터 셋을 올바르게 입력하지 않으면 응답 결과에서 글자가 올바르게 출력되지 않게됩니다. 예를 보도록 하겠습니다.



<%@ page contentType="text/html; charset=iso-8859-1" %>

<%@ page import="java.util.Date" %>

<%

    Date now = new Date();

%>

<html>

<head><title>현재 시간</title></head>

<body>

현재 시각:

<%= now %>

</body>

</html> 


실행을 해보시면 위 예제에서 '현재 시각' 이라는 부분이 글자가 제대로 표현이 안되는것을 확인 할 수 있습니다.


그리고 마우스 오른쪽 버튼을 클릭하시면 [인코딩] 이 보이는데 인코딩 들어가시면 서유럽어(ISO) 가 선택되어 있는것을 볼 수 있습니다. 그래서 '현재 시각' 이라는 한글이 제대로 표현이 안되는것 입니다.


한글로 제대로 표현을 할려면 위 예제에서 charset=iso-8859-1 을 charset=euc-kr로 변경해주시면 한글이 올바르게 나오는것을 확인할 수 있습니다.


다음 포스팅은 import에 대해서 알아보도록 하겠습니다.


Posted by 정윤문경아빠
IT 프로그래밍/JSP2014. 2. 1. 16:15

이번에는 page 디렉티브에 대해서 알아보겠습니다.


page 디렉티브는 JSP 페이지에 대한 정보를 입력하기 위해서 사용됩니다. page 디렉티브를 사용하면 JSP 페이지가 어떤 문서를 생성하는지, 어떤 자바 클래스를 사용하는지, 세션에 참여하는지, 출력 버퍼의 존재 여부와 같이 JSP 페이지를 실행하는 데 필요한 정보들을 입력할 수 있습니다. 아래 예제는 보도록 하겠습니다.



<%@ page contentType="text/html; charset=euc-kr" %>

<%@ page import="java.util.Date" %> 


위 코드는 두 개의 page 디렉티브를 보여주고 있으며, 각각 contentType 속성과 import 속성을 사용해서 JSP 페이지에서 필요한 정보를 설정하고 있습니다. PAGE 디렉티브는 이 두 속성외에도 페이지 정보를 설정하는데 필요한 속성을 추가적으로 제공하고 있으며, JSP 2.1 규약에서 정의한 page 디렉티브의 주요 속성은 다음과 같습니다.



속    성 

설    명 

기본값 

  language 

JSP 스크립트 코드에서 사용되는 프로그래밍 언어를 지정합니다. JSP 2.1 버전까지는 스크립트 언어로서 자바만을 지원하고 있습니다. 

  java

  contentType 

JSP가 생성할 문서의 타입을 지정합니다. 

  text/html 

  import 

JSP 페이지에서 사용할 자바 클래스를 지정합니다. 

   

  session 

JSP 페이지가 세션을 사용할지의 여부를 지정합니다. "true"일 경우 세션을 사용하고 "false"일 경우 세션을 사용하지 않습니다. 

  true 

  buffer 

JSP페이지의 출력 버퍼 크기를 지정합니다. "none"일 경우 출력 버퍼를 사용하지 않으며 "8kb"라고 입력한 경우 8킬로바이트 크기의 출력 버퍼를 사용합니다. 

  최소 8kb 

  autoFlush 

출력버퍼가 다 찼을 경우 자동으로 버퍼에 있는 데이터를 출력 스트림에 보내고 비울지의 여부를 나타냅니다. "true"일 경우 버퍼의 내용을 웹 브라우저에 보낸 후 버퍼를 비우며, "false"일 경우 에러를 발생시킵니다. 

  true 

  info 

 JSP 페이지에 대한 설명을 입력합니다. 

 

  errorPage 

JSP 페이지를 실행하는 도중에 에러가 발생할 때 보여줄 페이지를 지정합니다. 

 

  isErrorPage 

현재 페이지가 에러가 발생될 때 보여지는 페이지인지의 여부를 지정합니다. "true"일 경우 에러 페이지이며, "false"일 경우 에러 페이지가 아닙니다. 

  false 

  pageEncoding 

JSP 페이지 자체의 캐릭터 인코딩을 지정합니다. 

 

  isELIgnored 

"true"일 경우 표현 언어를 지원하며, "false"일 경우 표현언어를 지원하지 않습니다. 기본값은 web.xml 파일이 사용하는 JSP 버전 및 설정에 따라 다릅니다. 

 

  deferredSyntaxAllowedAsLiteral 

#{문자가 문자열 값으로 사용되는 것을 허용할지의 여부를 지정합니다. 

  false 

  trimDirectiveWhitespaces 

출력 결과에서 템플릿 텍스트의 공백 문자를 제거할지의 여부를 지정합니다. 

  false 


isELIgnored 속성은 JSP 2.0 버전에 새롭게 추가된 속성이며, deferredSyntaxAllowedAsLiteral 속성과 trimDirectiveWhitespaces 속성은 JSP 2.1에 새롭게 추가된 속성입니다.


위 표에서의 속성중에서 주로 사용되는 속성은 contentType 속성과 import 속성입니다.


contentType, import 속성에 대해서는 다음 포스팅에서 다루도록 하겠습니다.


Posted by 정윤문경아빠
IT 프로그래밍/JSP2014. 2. 1. 15:53


디렉티브는 JSP 페이지에 대한 설정 정보를 지정할 때 사용되며, 다음과 같은 구문을 통해서 디렉티브를 선언할 수 있습니다.



<%@ 디렉티브이름 속성1="값1" 속성2="값2" ... %> 


디렉티브는 '<%@' 으로 시작하고 그 뒤에 디렉티브 이름이 위치합니다. 사용하려는 디렉티브에 따라서 알맞은 속성이 위치하며, '%>'로 디렉티브 선언이 끝나게 됩니다. 간단한 예를 보도록 하겠습니다.



<%@ page contentType = "text/html; charset=euc-kr" %> 


여기서 디렉티브 이름은 'page'가 되고, contentType이라는 속성을 사용했으며, contentType속성의 값은 "text/html; charset=duc-kr"이 됩니다.


현재 JSP가 제공하는 디렉티브는 아래와 같습니다.


 디렉티브

 설    명

 page

 JSP 페이지에 대한 정보를 지정합니다. JSP가 생성하는 문서의 타입, 출력 버퍼의 크기, 에러 페이지 등 JSP 페이지에서 필요로 하는 정보를 입력합니다.

 taglib

 JSP 페이지에서 사용할 태그 라이브러리를 지정합니다.

 include

 JSP 페이지의 특정 영역에 다른 문서를 포함시킵니다.




page, taglib, 디렉티브에 대한 자세한 설명은 다음 포스팅에서 보도록 하겠습니다.

Posted by 정윤문경아빠
IT 프로그래밍/ORACLE2014. 1. 26. 21:54

이번에는 having 에 대해서 알아보겠습니다.

 

글 읽기 전에 손가락 한번 꾸~욱 눌러주시면 감사하겠습니다.^^

 

 

select 절에 조건을 사용하여 결과를 제한할 때는 where 절을 사용하며, 그룹의 결과를 제한할 때는 having절을 사용합니다.

 

부서별로 그룹을 지은 후(group by), 그룹 지어진 부서별 평균 급여가 2000 이상인(having) 부서의 번호와 부서별 평균 급여를 출력하는 경우입니다.

 

select deptno, avg(sal) from emp group by deptno having avg(sal) >= 2000;

 

 

 

 

where절은 테이블에서 데이터를 가져올 때 특정 조건에 부합하는 자료만을 검색할 때 사용하는 절입니다. 반면 having절은 그룹 함수 사용 시 그룹 함수를 적용해서 나온 결과값 중에서 원하는 조건에 부합하는 자료만 산출할 때 사용하는 절입니다. where절에서 조건에 사용되는 컬럼은 단순 컬럼이고, having절에서 그룹 함수를 적용한 컬럼이 조건으로 온다고 생각하면 이해하기 쉬우실겁니다.

 

예제를 하나 더 보겠습니다.

 

select deptno, max(sal), min(sal) from emp group by deptno having max(sal) > 2900;

 

위 예제는 부서의 최대값과 최소값을 구하되 최대 급여가 2900 이상인 부서만 출력하라는 예제입니다. 결과는 아래와 같습니다.

 

 

 

 

이해가 되셨는가요?

 

어려운 부분이 있으시다면 댓글 남겨주세요.^^

Posted by 정윤문경아빠
IT 프로그래밍/ORACLE2014. 1. 26. 21:40

이번에는 오라클 group by 절에 대해서 알아보겠습니다.

 

글 읽기 전에 손가락 한번 꾸~욱 눌러주시면 감사하겠습니다.^^

 

 

 

어떤 컬럼 값을 기준으로 그룹함수를 적용해 줄지 기술해 주어야 할 경우에는 select 문에 group by 절을 추가하되 group by 절 뒤에 해당 컬럼을 기술합니다.

 

그룹 함수는 테이블에 아무리 행이 많아도 단 한 개의 결과값만을 산출합니다. 그러나 직원 중 가장 높은 급여값을 구하는 것이 아닌, 부서별 가장 높은 급여값을 구하고 싶을 때가 있습니다. 즉, 최대값이나 최소값, 합계, 평균 등을 어떤 컬럼을 기준으로 보고자 하는 경우입니다.

 

이때는 그룹 함수를 쓰되 어떤 컬럼값을 기준으로 그룹 함수를 적용할지 기술해야 합니다.

 

group by 절 뒤에 해당 컬럼을 기술하면 됩니다. 형식은 다음과 같습니다.

 

[형식]

select 컬럼명, 그룹 함수

from 테이블명

where 조건(연산자)

group by 컬럼명;

 

합계, 평균, 최대값이나 최소값 등을 어떤 컬럼을 기준으로 그 컬럼의 값을 개별적으로 보고자 할 때 group by 절 뒤에 해당 컬럼을 기술하면 됩니다. group by절을 사용할 때 주의할 점은 group by절 다음에는 컬럼의 별칭은 사용할 수 없고, 반드시 기존에 있는 컬럼명을 기술해야 한다는 점입니다.

 

사원 테이블을 부서 번호로 그룹 지어 보겠습니다.

 

select deptno from emp group by deptno;

 

 

 

사원 테이블을 부서 번호로 그룹 짓기 위해서 group by절 다음에 부서 번호(deptno)를 기술하였습니다. 위 결과를 보면 사원들은 3개(10번, 20번, 30번) 중의 하나에 소속되어 있는 것을 알 수 있습니다.

 

사원 테이블에서 부서별로 평균 급여를 구하려면 우선 전체 사원을 소속 부서별로 그룹 지어 놓아야 합니다.

 

다음은 소속 부서별 평균 급여를 구하는 예제입니다.

 

select avg(sal) from emp group by deptno;

 

 

 

 

현재 직원들이 속한 부서는 10, 20, 30번부서 단 세 곳이므로 각각 10번, 20번, 30번 부서별 평균이 산출됩니다. 이대로 실행하면 의미 있는 정보가 산출이 될까요? 위의 결과값은 분명 3개 부서의 평균값, 3개의 로우가 산출됩니다. 하지만 각 평균 급여는 어느 부서의 평균값인지의 정보가 결여되어 있어 의미 있는 정보라고 하기는 어렵습니다.

 

어떤 부서의 평균인지를 알아보기 위해 아래와 같이 부서 번호인 deptno도 select절에 함께 기술합니다.

 

select deptno, avg(sal) from emp group by deptno;

 

 

 

 

그룹 함수를 적용하지 않은 단순 컬럼은 select 리스트에 함께 사용할 수 없습니다. 이유는 개수 문제로 매치가 불가능하기 때문입니다.

 

쉽게 예제로 설명을 드리겠습니다.

 

select deptno, ename, avg(sal) from emp group by deptno;

 

 

 

오류가 발생하게 됩니다.

 

그 이유는 deptno, ename, avg(sal)의 컬럼의 산출값이 틀리기 때문입니다.

 

그룹함수 사용 시 group by 절로 묶이지 않은 단순 컬럼은 select 리스트에 사용할 수 없고, 사용시 에러가 발생하므로 주의를 하셔야 합니다.

 

쉽게 설명을 한다고 적었는데 이해가 되셨는가요?

 

궁금하신점은 댓글에 남겨주세요~^^

 

 

Posted by 정윤문경아빠
IT 프로그래밍/ORACLE2014. 1. 26. 20:38

이번에는 그룹함수에 대해서 알아보겠습니다.

 

글 읽으시기 전에 손가락 한번 꾸~욱 눌러주시면 감사하겠습니다.^^

 

 

그룹 함수는 하나 이상의 행을 그룹으로 묶어 연산하여 총합, 평균 등을 하나의 결과로 나타냅니다.

 

우선 예제를 한번 보도록 하겠습니다.

 

select deptno, round(sal, 3) from emp;

 

결과는 다음과 같습니다.

 

 

 

 

위 결과를 보면 각 행에 대해서 함수가 적용되기 때문에 출력 결과가 함수를 적용하기 전과 동일하게 4개의 row로 구해집니다. 이러한 함수를 단일행 함수라고 하며 단일행 함수는 각 행에 대해서 함수의 결과가 구해지기 때문에 결과가 여러 개의 row로 구해집니다.

 

이번에는 그룹 함수를 이용해서 사원의 총 급여를 구해 보겠습니다.

 

select sum(sal) from emp;

 

 

 

 

그룹 함수의 결과는 사원이 총 4명인데도 결과는 하나의 행으로 출력됩니다.

 

다음은 그룹 함수의 종류를 정리한 표입니다.

 

 

 구분 

 설명 

 SUM 

 그룹의 누적 합계를 반환합니다. 

 AVG 

 그룹의 평균을 반환합니다. 

 COUNT 

 그룹의 총 개수를 반환합니다. 

 MAX 

 그룹의 최대값을 반환합니다. 

 MIN 

 그룹의 최소값을 반환합니다. 

 STDDEV 

 그룹의 표준편차를 반환합니다. 

 VARIANCE 

 그룹의 분산을 반환합니다. 

 

다음은 간단한 예제입니다.

 

평균 구하는 AVG 함수

select avg(sal) from emp;

 

최대값, 최소값 구하는 함수

select max(sal), min(sal) from emp;

 

row 개수 구하는 함수(count 함수는 null값에 대한 개수를 세지 않습니다.)

select count(comm) from emp;

 

크게 어려우신 부분은 없을듯 합니다.

 

다음 포스팅은 group by 절에 대해서 알아보겠습니다.

 

궁금하신 점은 댓글 남겨주세요~^^

 

 

Posted by 정윤문경아빠
IT 프로그래밍/JSP2014. 1. 26. 02:32

이번에는 JSP 에서 날짜 관련해서 알아보겠습니다.


글 읽기 전에 손가락을 꾸~욱 눌러주시면 감사하겠습니다.^^



첫번째로 오늘 날짜 알아내는 방법에 대해서 알아보겠습니다.


자바스크립트의 Date 내장 객체를 사용하면 오늘의 날짜를 알아낼 수 있습니다. 이를 위해서는 먼저 Date 객체로 변수 하나를 선언해야 하는데, 이때 매개변수는 전혀 지정하지 않아도 됩니다. 그런 후 다음 메서드를 통해 오늘 날짜의 년/월/일 등을 알아내면 됩니다.


참고로 이 날짜는 웹서비스를 제공하는 곳의 날짜가 아닌 웹브라우저를 사용하고 있는 pc의 현재 날짜 입니다.



 Date 객체의 메서드

 기능 

 getYear()

 년도 

 getMonth() 

 월(0 = 1월, 1 = 2월, ...) 

 getDate() 

 일 


예제를 보도록 하겠습니다.


<script language="Javascript>

today = new Date()

document.write("오늘 날짜는 ", today.getYear(), " 년 ", today.getMonth()+1, "월", today.getDate(), "일")

document.write(" 입니다. <p>")

</script>


중간에 today.getMonth()+1 이 조금 특이한듯 한데 today.getMonth() 리턴값이 0 부터 시작하기때문에 반드시 + 1 을 해주셔야 정상적으로 나오게 됩니다. 그 외에는 크게 특별한 부분이 없는듯 하네요.


두번째로 오늘 요일 알아내는것을 알아보겠습니다.


먼저 Date 객체로 변수 하나를 선언해야 하는데, 이때 매개변수는 전혀 지정하지 않아야 합니다. 그런 후 다음 메서드를 통해 오늘 날짜의 요일을 알아내면 됩니다.


여기에서 나오는 요일 역시 내 자신의 pc의 현재 요일입니다.



 Date 객체의 메소드 

 기능 

 getDay() 

 요닐(0 = 일요일, 1 = 월요일, ...) 


예제를 보도록 하겠습니다.


<script language="JavaScript">

today = new Date()

switch(today.getDay()){

case 0 :

document.write("오늘은 일요일입니다.")

break

case 1 :

document.write("오늘은 월요일입니다.")

break

case 2 :

document.write("오늘은 화요일입니다.")

break

case 3 :

document.write("오늘은 수요일입니다.")

break

case 4 :

document.write("오늘은 목요일입니다.")

break

case 5 :

document.write("오늘은 금요일입니다.")

break

case 6 :

document.write("오늘은 토요일입니다.")

break

}


</script>


실행결과는 오늘이 일요일이라면 today.getDay()는 리턴값으로 0 을 내놓게 되고, 오늘이 수요일이라면 today.getDay()는 리턴값으로 3을 내놓게 됩니다.


크게 어려운부분은 없는듯하네요.


세번째는 현재 시간 알아내는것을 알아보겠습니다.


 Date 객체의 메서드 

 기능 

 getHours() 

 시 

 getMinutes() 

 분 

 getSeconds() 

 초 

getMilliseconds() 

 1/100초 


예제를 보도록 하겠습니다.


<script language="Javascript">

today = new Date()

document.write("현재 시간은 ", (today.getHours() >= 12 ? "오후 ":"오전 "), today.getHours(), "시 ", today.getMinutes(), "분 ", today.getSeconds(), "초 ", today.getMilliseconds())


document.write("입니다. ")

</script>


음...보기에는 조금 긴것같은 느낌이 드네요.


우선 처음에 (today.getHours() >= 12 ? "오후 ":"오전 ")  이것은 현재 시간이 12보다 크거나 같으면 참일경우 오후라고 표시되고 거짓이면 오전이라는 의미입니다. 


지금 제가 포스팅을 작성하고 있는 시점에 나오는 결과 화면은 "현재 시간은 오전 2시 30분 11초 720입니다." 라고 나오네요.


너무 쉬운 부분이라서 특별히 어려우신 부분은 없으실겁니다.


이해가 잘 안되시거나 궁금하신거는 댓글 남겨주세요.^^

Posted by 정윤문경아빠