2008. 11. 22. 00:08

request 객체 속성


♣ request 내부객체

HTTP 요청이 있을 때 발생하는 모든 정보와 이 정보를 얻어 낼 수 있는 여러가지 기능을 하는 객체가 바로 request 객체입니다.
이 객체는 response와 더불어 _jspService의 매개변수역할을 하며, Server Page 프로그램에서 가장 기본이 되는 객체입니다.

HTTP 프로토콜로 사용자 요청이 있을 때 요청된 메세지는 HTTP 헤더 부분과 HTTP 몸체 부분으로 나뉘어 집니다.
HTTP 메시지 자체의 목적지가 Java Server Page라면 JSP는 HTTP 메세지 전부를 이용하여 HttpServletRequest 객체를 생성하게 되며, 이것을 _jspServer 메서드내에서 매개변수로 넘겨받게 되는 것입니다.
코딩을 할때, 가장 많이 사용하게 될 request.getParameter()라는 메소드가 여기에 해당됩니다.
Request 객체에는 request.getParameter() 말고도 많은 메소드가 있으며, 메소드의 종류는 아래 표와 같습니다.

⊙ 클라이언트가 넘겨주는 파라미터에 관련된 정보를 얻는 메서드

메소드
설명
public Enumeration getParameterNames()
모든 요청 매개변수의 이름을 Enumeration으로 반환한다.
public String getParameter( String name )
해당 이름값에 해당하는 매개변수의 값을 반환한다.
지정된 이름의 파라미터가 존재하지 않을 경우 null을 반환한다.
public String[] getParameterValues( String name )
해당 이름값에 해당되는 매개변수의 모든 값을 String 배열로 반환한다.

⊙ HTTP 헤더와 관련된 메소드

메소드
설명
public String getHeader( String headerName )
HTTP요청 헤더에 지정된 headerName의 값을 문자열로 반환한다.
HTTP요청헤더에 headerName헤더가 존재하지 않는 경우 null을 반환한다.
public Enumeration getHeaderNames()
HTTP요청 헤더에 포함된 모든 헤더의 이름을 Enumeration으로 반환한다.
public Enumeration getHeaders( String headerName)
HTTP요청 헤더에 포함된 headerName헤더의 모든값을 Enumeration으로 반환한다.
public int getIntHeader( String headerName )
HTTP요청헤더에 포함된 headerName헤더의 값을 int로 반환한다.
지정된 headerName헤더의 값을 int로 변환할 수 없는 경우 NumberFormatException이 발생하고, headerName헤더가 HTTP요청헤더에 존재하지 않는 경우에는 -1 값을 반환한다.
public long getDateHeader( String headerName )
HTTP요청헤더에 포함된 headerName헤더 값을 1970년 1월 1일 00시 00분 기준으로 현재까지의 밀리초를 long형으로 반환한다.
HTTP요청 헤더에 headerName헤더가 존재하지 않은 경우 -1을 반환한다.
headerName헤더를 long형 숫자로 변환자지 못할 경우 IllegalArgumentException을 발생시킨다.  
getCookies()
요청에 대한모든 쿠키를 반환한다.

⊙ 세션데이터에 관련된 메서드

메소드
설명
public HttpSession getSession()
요청을 시도한 클라이언트에 지정된 HttpSession객체를 얻어낸다.
이전에 생성된 HttpSession객체가 없었다면 새로운 세션 객체를 생성하게 된다.
public HttpSession getSession( boolean create )
요청을 시도한 클라이언트에 지정된 HttpSession 객체를 얻어낸다.
create가 false로 지정된 경우 해댱 클라이언트에 대해 생성 된 HttpSession객체가 없는 경우 null을 반환한다.
create가 true로 지정된 경우 이미 존재하는 경우 생성된 HttpSession객체를 리턴하고 해당 클라이언트에 생성된 HttpSession객체를 리턴하고 해당 클라이언트에 생성된 HttpSession객체가 없으면 새로운 HttpSession객체를 생성하여 반환한다.
public String getRequestedSeeionId()
요청을 시도한 클라이언트이 세션 id를 문자열로 반환한다.
public String isRequestedSessionIdValid()
요청에 포함된 클라이언트이 세션id가 유효하면 true아니면 false를 반환한다.
isRequestedSessionIdFromCookie()
요청에 포함된 클라이언트이 세션 id가 쿠키로부터 전달된 경우 true 아니면 false를 반환한다. 

⊙ 기타 메소드

메소드
설명
getRequestURI()
요청에 사용된 URL로부터 URI부분을 문자열로 반환한다. 
getMethod()
요청에 사용된 요청방식 GET, POST 등을 문자열로 반환한다.
getRequestURL()
요청 URL을 반환 한다.(질의 문자열은 안 한다.)
getQueryString()
요청 URL을 반환 한다.( 질의 문자열 포함)
getRequestDispatcher(path)
Path에 지정된로컬URL에 대한 요청 전달자를 반환한다.
getRemoteHost()
요청을 보낸 호스트의 이름을 반환한다.
getRemoteAddr()
요청을 보낸 호스트의 IP를 반환한다.
getRemoteUser()
요청을 보낸 사용자의 이름을 반환한다.

사용 예) String name = request.getParameter(“name”);
2008. 11. 14. 13:27

Orange for Oracle에서 Loader 사용해서 데이터 입력하기

처음에 오라클을 배울 때는 ISQLPLUS를 이용해서 디비작업을 했었는데 그때는 상당히 초기에 쿼리를 배우는 수준이었기에 그게 당연한줄 알았고 그렇게 어려운 쿼리도 날리지 않았는데 한참동안 MS-SQL을 사용하다가 보니까 엔터프라이즈 매니저에 익숙해져서 비쥬얼툴이 아닌 콘솔로 디비를 다루는 것이 여간 불편한게 아니었다. 거의 작업하기가 어려울 정도로....

그래서 이것저것 찾아보았다. 툴은 여러가지가 있었다. 토드, 프리토드, 웹디벨로퍼등 이것저것.... 처음에는 이클립스에 DbEdit플러그인을 붙혀서 사용했는데 디비 확인을 위해서 항상 이클립스를 띄워야 하는 점과 프로그램이 아니라 플러그인이기 때문에 기능상의 부족함등으로 금새 털어버리고 Orange for Oracle이라는 툴을 현재 사용하고 있다.(제법 괜찮은것 같다. 내가 쓰는 기능은 아직 한정적이고 아직 손에 많이 익지는 않지만... 이런거 보면 EM이 참 좋단말야.. ㅎㅎ)

이번에 프로젝트를 하다가 SQL Loader라는게 오라클에 있다는 걸 알게 되었다. 쉽게 말하자면 txt파일의 자료를 오라클로 올리는 것이다.(실제 로더는 ctl이나 dbf를 통해서 이런저런 작업을 하는 듯 하지만...) 상당히 쉬워서 편할 것 같다. 지난달에 MDB를 오라클로 올리느라고 삽질을 꽤 했는데.....

사용자 삽입 이미지
메뉴바에 보면 왼쪽과 같은 아이콘이 있다. Export, Import 옆에 Loader라는 녀석이 있다. Export와 Import는 DB 또는 Owner, table등을 통째로 dmp파일로 내보내거나 들여오는 것이고 Loader는 훨씬 유연한 데이터 로드기능을 지원하고 있다. 메뉴에서 [Tools] - [Loader]를 선택해도 동일하다.

로더를 실행하면 아래와 같은 창이 뜬다.

사용자 삽입 이미지
약간 보고 있자면 그리 어려운 구성은 아니다. SQL Loader를 명령어를 통해서 오라클로 실행하면 ctl파일을 통해서 txt를 불러들이는데(검색해 보면 많이 나온다.) 여기서는 그냥 txt를 불러서 로드할 수 있다. [1] 부분에서 Owner와 원하는 테이블을 선택해 주고 [2]에서 TXT파일을 불러온다.

TXT파일은 다양한 형태가 될 수 있는데 가장 기본적인게 탭이나 콤마(,)를 통해서 구분을 지어주는 것이다. 엑셀에서 CSV파일로 내보내기 등을 생각하면 될 것이고 엑셀이나 다양한 툴에서 이런 방식으로 내보내기하는 것은 지원하고 있기 때문에 TXT를 만들어 내는 것은 그리 어렵지 않다. TXT의 데이터가 심볼로 구분되어 있는지 아니면 고정된 넓이인지를 선택해 주고 첫줄이나 첫 행이 실데이터인지 아니면 각 행열에 대한 이름인지를 선택해 준다.

구분자를 탭이나 콤마외에도 임의로 기호를 입력할 수 있기 때문에 다양한 형식의 데이터를 로드할 수 있다. 파일을 불러들이면 [3]번 부분에 해당데이터의 예시가 나온다. 어떤식으로 입력되는지를 15열로 예시로 보여준다. 오른쪽에는 현재 테이블의 컬럼구조가 나와있는데 [4]버튼을 누르면

사용자 삽입 이미지

위에처럼 TXT파일의 필드와 테이블의 필드를 매핑시킬수 있는 화면이 나온다. TEXT에 컬럼수가 많아도 필요한 것만 매칭 시키면 데이터가 잘 올라간다.

사용자 삽입 이미지
준비가 다 되었으면 로드창의 상단에 있는 Run버튼을 누르면 데이터가 올라간다. 업로드후에 결과를 보여주는 팝업창을 통해서 올려진 로우수와 에러난 로우수를 확인 할 수 있고 에러가 난 로우는 TXT파일과 같은 위치에 파일명_bad.err과 파일명_bae.txt 2개의 error파일이 생기면서 로드되지 않은 데이터가 저장되기 때문에 올라가지 않은 데이터를 쉽게 확인 할 수 있다.

거꾸려 데이터를 내려받을 때는 상단탭의 Unload를 사용하면 txt파일로 내보낼 수 있다.

출처 : http://blog.outsider.ne.kr/105?category=10
2008. 11. 13. 17:50

오라클 10g에서 scott 계정 풀기


오라클 10g를 설치하면 scott 계정이 lock 되어 있습니다.
이렇게 하면 풀리더군요.

alter user scott account unlock;

'Database' 카테고리의 다른 글

오라클 10i(utf-8) zipcode 테이블 생성  (0) 2008.12.24
oracle sid 확인  (0) 2008.11.11
oracle sql 관련 링크  (0) 2008.08.24