본문 바로가기

2018/04/1726

Stack Trace 바로 확인할 수 있는 개발용 에러 페이지 만들기 자바로 웹 개발시 에러가 발생하면 서버나 브라우저의 에러 페이지가 아니라 커스텀 에러페이지를 보여주도록 설정을 합니다. 이 설정은 web.xml 파일에서 아래와 같이 해 줄 수 있습니다. 500 /WEB-INF/views/error.jsp 보안 때문에 모든 에러에 동일한 에러페이지를 설정하기도 하고, 에러코드 별로 다른 에러페이지를 설정하기도 합니다. 실제 에러페이지의 내용은 보안 목적상 에러 내용을 통해서 서버 정보를 취득하지 못하도록 간단한 에러발생 알림만 보여주게 만듭니다. 디버깅에 필요한 정보들은 로그파일에 남기게 됩니다. 물론 로그 파일에도 디버깅을 위한 최소한의 정보만 남기고, 개인정보 등 민감한 정보가 남지 않도록 주의해야 합니다. 이번에 볼 내용은 개발용으로만 사용되어야 할 것으로, 에러 .. 2018. 4. 17.
스프링프레임웍 - Tomcat에서 POST/GET 데이터 인코딩 설정 Tomcat에서 스프링프레임웍을 사용할때 POST방식으로 데이터를 전송할 때와 GET 방식으로 데이터를 전송할때 인코딩 지정을 별도로 하여야 합니다. 1. POST 데이터의 인코딩은 web.xml 에서 필터를 사용해서 처리합니다. encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 encodingFilter *.do 위 설정에서는 필터 맵핑은 *.do 로 끝나는 모든 요청에 적용되어 집니다. 2. GET 방식의 데이터의 인코딩은 server.xml 파일의 Connector 설정에서 처리합니다. 웹 프로그래밍에서 전송되는 데이터의 인코딩 설정은 WAS에 따라 달라질 수 있습니다. 이 글에서는 Tomcat 에.. 2018. 4. 17.
CSS Box Model, Element Size, iframe Auto Resize 이번에 알아볼 것은 HTML 페이지를 디자인하고 레이아웃을 만들 때 엘리먼트가 화면에서 어떻게 공간을 차지하는지와 엘리먼트의 크기에 대해 알아봅니다. 그리고 추가적으로 자바스크립트에서 엘리먼트의 사이즈를 알아보는 방법과 iFrame을 사용하는 페이지가 로딩될때 iFrame이 포함하고 있는 컨텐츠에 따라 자동으로 크기를 조정하는 방법을 알아보겠습니다. 1. CSS Box Model 화면에 보여지는 모든 HTML 엘리먼트들은 사각형 박스 모양으로 공간을 차지합니다. 이것은 CSS에서는 Box Model(박스 모델)이라고 합니다. HTML 요소는 실제 컨텐츠를 패딩(Padding), 보더(Border), 마진(Margin)의 세가지 박스가 둘러싸고 있는 모양 입니다. 각각을 알아보면 다음과 같습니다. * Co.. 2018. 4. 17.
Maven 저장소와 의존성 관리 Maven은 빌드 툴이지만 라이브러리 의존성 관리 툴로 더 많이 사용되고 있는것 같습니다. 스프링 프레임웍이나 전자정부 표준 프레임웍을 사용하게 되면 프로젝트의 기본 빌드 설정을 그대로 사용해서 별로 문제가 되는게 없으므로 손댈 것이 별로 없었던것 같습니다. 대부분 필요한 라이브러리를 추가하거나 하기 위해서 저장소(repository)와 의존성(dependency) 부분만을 많이 사용하게 됩니다. 이 글에서는 저장소(repository)와 의존성(dependency)을 사용하는 부분에 대해서 알아보겠습니다. Maven은 단독으로 설치해서 사용할 수도 있습니다. http://maven.apache.org 에서 다운로드 받아서 설치하면 됩니다. 여기서는 직접 설치하지 않고, Eclipse에 기본으로 포함되어.. 2018. 4. 17.
sqldeveloper를 사용하여 export/import 하기 오라클 데이터베이스를 export/import 하기 위해서 Original Utility인 exp/imp 또는 10g 이후부터 새로 나온 Oracle Data Pump (expdp/impdp)를 주로 사용합니다. 하지만 스키마 만을 옮기거나 데이터가 작을 경우 sqldeveloper를 사용해서 간단하게 export/import 할 수 있습니다. sqldeveloper를 사용하여 export 하는 방법을 알아 보겠습니다. 이 글의 테스트는 Oracle 11g express editon과 SQL Developer 17.2를 사용하였고 샘플 데이터베이스는 전자정부 표준프레임워크 Portal Site 템플릿의 테이블을 사용하였습니다. 1. SQL Developer 메뉴에서 도구(T) -> 데이터베이스 익스포트(.. 2018. 4. 17.
전자정부 표준프레임워크 - dataSource (DBCP) 설정하기 전자정부 표준프레임워크의 템플릿 프로젝트를 설치하고 실행해보면 데이터베이스와의 연결풀을 설정하는 DataSource 설정에 Apache Common DBCP(Database Connection Pool)을 사용하고 있습니다. 대부분 개발후 운영환경에서는 WAS(Web Application Server)에서 제공하는 DataSource를 사용하도록 수정할 것이므로, 기본 설정을 그대로 사용하고 변경하는 일은 잘 없을 것입니다. 하지만 운영환경이 Tomcat 이라면 대부분 연결풀로 DBCP 를 사용하므로 설정 방법을 알아 두는 것도 나쁘지 않을 것입니다. 다음은 전자정부 표준프레임웍 Portal 사이트 템플릿 프로젝트의 DataSource 기본 설정입니다. 이 템플릿은 commons-dbcp 1.4 버전을 .. 2018. 4. 17.
새로운 Oracle export/import 유틸리티 - Oracle Data Pump(expdp/impdp) Oracle 10g 부터는 데이터의 백업과 복원을 위해서 기존에 사용되는 exp/imp툴을 대신할 Oracle Data Pump(expdp/impdp) 유틸리티가 제공되어 집니다. exp/imp 툴이 없어진것은 아닙니다. Oracle 11g 부터는 기존의 Original exp/imp툴에 대한 일반적인 사용지원이 되지 않는다고 합니다. Oracle Data Pump 유틸리티는 더욱 유연하고, 빠른 속도의 기존의 exp/imp를 대체할 유틸리티 라고 합니다. 기존의 exp/imp와의 차이점을 간단히 알아보겠습니다. 1. exp/imp는 덤프 파일을 유틸리티를 실행하는 컴퓨터에 생성합니다. expdp/impdp 는 덤프 파일이 데이터베이스 서버의 지정된 폴더에 생성됩니다. 즉, 덤프 파일을 받고 올리기 위해.. 2018. 4. 17.
C++ 문법 공부 - 할당 연산자(Assignment Operator) 연산자(Operator)는 뭔가 계산을 하기 위해서 사용되는 기호입니다. 모두가 잘 알고 있는 사칙연산인 더하기(+), 빼기(-), 곱하기(*), 나누기(/)가 그 예가 되겠습니다. (곱하기, 나누기 기호는 컴퓨터 프로그래밍에서는 수학에서 배운것과는 다른 기호인데, 키보드로 입력하기 쉬운 기호를 사용하는 것입니다.) 이 글에서 알아보게 될 할당 연산자는 위의 사칙연산과 같은 연산의 결과를 저장하기 위해 사용되는 연산자입니다. 할당 연산자를 대입 연산자라고도 부릅니다. 할당 연산자를 나타내는 기호는 하나의 등호(=)를 사용합니다. 수학에서는 같다는 의미인데, 컴퓨터 프로그램에서는 같다는 의미가 아니라 할당 연산자로 사용됩니다. a = 2 + 3; 위 처럼 사용해서 2와 3을 더한 결과를 변수 a 에 저장(.. 2018. 4. 17.
Spring Tool Suite에서 Organize Imports 단축키 Ctrl+Shift+O가 동작 하지 않을 때 자바소스에서 다른 패키지의 클래스를 사용하기 위해서 import 를 사용하게 됩니다. 개발중에 이것저것 import 하다 보면 나중에 사용되지 않는 import 가 생깁니다. 이것을 한번에 정리해주는 기능이 Eclispe의 Organize Imports 입니다. 메뉴에서 Source -> Organize Imports (Ctrl + Shift + O)를 선택하면 사용하지 않는 import 를 자동으로 제거해 줍니다. 이 기능은 현재 java 파일 소스가 선택된 상태에서 실행을 하면 현재 소스에만 적용이되고 프로젝트를 선택한 상태에서 실행을 하면 프로젝트내의 모든 java 파일에 대해서 실행이 됩니다. STS(Spring Tool Suite)도 이클립스를 기반으로 Spring Framework를 사용하기 .. 2018. 4. 17.
내가 메이븐(Maven) (빌드 툴, 의존성 관리도구)을 사용하는 이유 메이븐(Maven)은 빌드 툴이자 의존성 관리도구 입니다. 나는 이것을 자바를 사용하는 웹 프로젝트에만 사용합니다. 다른 프로젝트에는 사용해 본적이 없습니다. 전에는 이클립스를 이용해서 자바 웹 프로젝트를 만들때 프로젝트 위저드의 "Dynamic Web Project" 템플릿을 사용해서 생성을 해서 사용을 했었습니다. 이때 프로젝트 폴더의 구조는 아주 직관적인 구조였습니다. 단순했다고 할 수 있겠습니다. 이 경우 필요한 라이브러리(jar 파일)들은 /WEB-INF/lib 폴더에 넣어서 컨텍스트 전용으로 배포할 것과 WAS 에서 제공되어질 것을 직접 수동으로 관리를 하였습니다. 프로젝트가 오래되어 질수록 문서가 잘 정리되어 있지 않으면 라이브러리 버전 관리가 잘 안되는 경향이 있었습니다. 요즘은 형상관리도.. 2018. 4. 17.
Eclipse 선택된 변수들이 반전 표시가 안될 때 Eclipse 사용시 소스에서 변수를 더블클릭해서 선택하면 동일한 변수들이 모두 반전되어 표시됩니다. 어느날 갑자기 이 기능을 동작하지 않는것입니다. 쓸때는 아무 생각없이 그냥 사용하던 기능인데, 갑자기 안되니까 매우 불편한것 같습니다. 다시 반전 표시가 되도록 하려면 방법은 두 가지가 있었습니다. 1. Eclispe 툴바에서 Toggle Mark Occurrences (Alt+Shift+O) 아이콘을 눌러 기능을 켭니다. 2. 메뉴에서 Window -> Preferences 를 선택합니다. Preferences 창에서 Java -> Editor -> Mark Occurrences 를 선택합니다. 필요한 항목에 체크를 하고, "Apply" 버튼을 누른후 "OK" 버튼을 누릅니다. 왜 갑자기 기능이 동작을.. 2018. 4. 17.