본문 바로가기

분류 전체보기124

[Spring] web.xml 오류 : Invalid element name: - description 스프링 프로젝트를 처음 설정하고 Servlet을 추가한 다음 실행을 하면 실행은 잘 됩니다만, web.xml에 에러 표시가 뜹니다. web.xml을 열어서 살펴보면, 처음 등록한 서블릿에 관련한 내용이 추가되고 나서 아래와 같은 오류가 발생합니다. Invalid element name: -description이 뜨며, 해당 행을 삭제하면 계속 에러가 전파되면서 다른 부분에도 오류가 뜹니다. 해결방법은 간단합니다. 위의 xsi::schemaLocation 부분을 아래와 같이 수정하면 됩니다. // 에러 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" // 정상 xsi.. 2022. 6. 8.
[Design Pattern] 디자인 패턴 개요, 역사 및 종류 알아보기 최근 코딩을 하면서 ActionFactory를 다루게 되었습니다. 어렴풋이 알고 있던 디자인 패턴의 한 종류인 것은 알고 있었습니다만 역시 실제 이해하면서 다루게 되니 훨씬 재미있고, 복잡했던 인터페이스를 간소화할 수 있는 장점들이 눈에 띄었습니다. 생각난 김에 구글링을 통해서 기본적인 내용을 다루고, 코딩에서 사용한 디자인 패턴을 중점으로 하나씩 정리해보려 합니다. 먼저 디자인 패턴의 개요부터 시작하겠습니다. 1. 디자인 패턴 개요 위키의 한 줄 요약은 다음과 같습니다. 소프트웨어 디자인 패턴(software design pattern) 객체 지향 프로그래밍 설계를 할 때 공통적으로 발생하는 문제들에 대해 재사용 가능한 해결책이다. 여러 설명이 있습니다만 공통적인 내용은 디자인 패턴은 프로그램을 개발하.. 2022. 6. 2.
[HTML, JS, JSP] 페이지 자동 새로고침, 일정 시간 후 다른 페이지로 보내기 가끔 홈페이지를 보면 일정 시간마다 새로고침을 하거나, 일정 시간 후 다른 페이지로 보내는 기능을 볼 수 있습니다. HTML의 메타태그에서 제공하고 있는 기능입니다. 이를 기본으로 해서 JSP, Javascript에서 모두 동일한 기능을 하는 코드를 작성할 수 있습니다. 1. 일정 시간 후 페이지 새로고침 1.1 HTML의 메타 태그 사용 HTML의 META Tag를 이용한 Reload 1.2 JSP에서 response.setHeader를 사용 JSP에서는 setHeader 함수를 사용해서 설정할 수 있습니다. HTML의 메타태그에서 보던것과 같은 파라미터로 "Refresh"를 설정하고 그 다음 초를 설정하면 됩니다. 테스트용 코드는 아래와 같습니다. response.setHeader를 이용한 Reloa.. 2022. 6. 1.
[JavaScript] 모니터, 듀얼 모니터 및 브라우저 기준으로 팝업창 가운데 띄우기 요즘은 브라우저에서 사용자 인터페이스를 구현할 때 팝업창을 띄우는 일이 많이 줄었습니다. 그래도 가끔은 필요하기에 간단하게 팝업창을 띄우는 방법은 비교적 간단합니다. Javascript에서 window.open() 함수를 사용하면 됩니다. 팝업창을 띄우는 자세한 방법에 대해서는 아래 링크를 참고해주세요. [Javascript] window.open(), window.opener() 부모창 자식창 간의 제어 방법 그런데 팝업창을 화면의 중앙에 띄울 경우는 조금 더 복잡하게 팝업창을 띄울 위치를 계산해야 합니다. 게다가 듀얼 윈도를 사용하는 사용자들이 많아지면서 일반적인 방법의 계산으로는, 팝업창이 듀얼 윈도를 기준으로 계산이 되어, 엉뚱한 위치에 띄워지게 됩니다. 그리고 전체 화면으로 사용하고 있지 않은 .. 2022. 5. 30.
Web Server, WAS, CGI, Web Container, Java SE, Java EE, Jakarta EE Java로 웹 애플리케이션을 개발하게 되면서 여러 가지 용어들을 많이 접하게 되었습니다. 당장 눈앞에 놓인 문제들만 풀어가면서 공부를 하다가 보니 기본적인 용어들에 대한 이해가 너무 부족하다는 생각이 들었습니다. 그래서 당장 떠오른 용어들을 몇 가지 공부하면서 정리해 봤습니다. 여기서는 웹서버, WAS, CGI 프로그래밍, 웹 컨테이너, 그리고 Java SE, Java EE, Jakarta EE에 대해서 기본적인 개념만 정리하였습니다. 1. Web Serveer 와 WAS 1.1 WEB Server 클라이언트의 request(요청)을 받아 정적인 콘텐츠(html, css, js 등)를 response(응답)하는 서버 예) Apache, Nginx, WebtoB 등 1.2 WAS (Web Applicati.. 2022. 5. 29.
[Oracle] ORA-00984: 열을 사용할 수 없습니다. "column not allowed here" ORA-00984 : 열을 사용할 수 없습니다. : "column not allowed here" SQL 오류: ORA-00984: 열을 사용할 수 없습니다 00984. 00000 - "column not allowed here" *Cause: *Action: SQL 구문에서 해당 컬럼에 적합하지 않은 값을 대입하려고 시도할 경우에 발생합니다. SQL문에서 문자열에 작은따옴표( ' ) 대신 큰따옴표( " )를 사용한 경우 내장 함수의 이름이 틀린 경우 문자열을 입력해야 하는 데 작은따옴표를 잊어버린 경우 CREATE TABLE person ( name VARCHAR2(30), age NUMBER(3), birthday DATE ); -- name 컬럼의 문자열에 작은따옴표가 없음. INSERT INTO .. 2022. 5. 27.
[Oracle] ORA-08002: 시퀀스 xxx.CURRVAL은 이 세션에서는 정의 되어 있지 않습니다 ORA-08002 : 시퀀스 xxx.CURRVAL은 이 세션에서는 정의되어 있지 않습니다. ORA-08002: 시퀀스 PRODUCT_SEQ.CURRVAL은 이 세션에서는 정의 되어 있지 않습니다 08002. 00000 - "sequence %s.CURRVAL is not yet defined in this session" *Cause: sequence CURRVAL has been selected before sequence NEXTVAL *Action: select NEXTVAL from the sequence before selecting CURRVAL 시퀀스 현재 값을 조회하는 방법은 SELECT 시퀀스명.CURRVAL 입니다. 그러나 CURRVAL 값은 시퀀스값이 한 번 이상 읽히지 않으면 조회가.. 2022. 5. 27.
티스토리 블로그가 검색 노출이 안된다면... 4월 말에 블로그를 시작했는데 포스팅을 꾸준히 하고 있었지만 노출이 전혀 안 되는 것 같다는 생각이 들었습니다. 블로그 방문 통계를 살펴봐도 bing에서 아주 가끔 검색이 되는 것 외에는 전혀 검색에 의한 접근이 없었습니다. 2주 전에도 비슷한 상황이었지만 아직은 포스팅한 내역이 얼마 되지 않아서, 인기 없는 내용이기도 하고, 이미 비슷한 글들이 많아서 안 되는 것일 수도 있다는 생각도 했었습니다만... 노출이 안되어도 너무 안되고 있다는 생각이 들어 검색 노출 관련 글을 검색해 봤습니다. 그동안 검색이 안되었던 이유는 검색 노출 등록이 안되어 있어서였습니다. 국내에서 가장 많이 사용하는 검색 엔진인 네이버와 구글에 검색 노출이 되려면 각각 별도의 등록 절차가 필요했습니다. 잠시 검색해보니 여러 포스팅이.. 2022. 5. 27.
[JavaScript] window.open(), window.opener() 부모창 자식창 간의 제어 방법 브라우저에서 새로운 팝업창을 열었을 때, 팝업창은 자식창, 팝업을 띄운 창은 부모창입니다. 자주는 아니지만 UI 설계 과정에서 팝업창을 사용하기도 합니다. 그리고 많은 데이터는 아니지만 간간히 부모창과 자식창 간에 데이터 전달이 필요합니다. 이때 Javascript로 부모창과 자식창을 서로 제어하기 위한 주요 함수와 속성이 window.open(), window.opener 입니다. 1. window.open() Javascript로 새로운 팝업창을 열기 위해서 사용하는 것이 window.open() 메서드입니다. window.open() 메서드의 기본 사용 방법은 아래와 같습니다. // 기본 구문 window.open(URL, [target, [windowFeatures]]); // 예제 window... 2022. 5. 26.
[java] Oracle 버전 별 JDBC Driver 다운로드 및 호환성 확인 벌써 부터 쓸데없는(?) 걱정이 생겨서 찾아봤습니다. 별 것 아니라고 생각되기도 하지만 늘 소프트웨어의 버전과 호환성은 어느날 갑자기 개발자를 괴롭히는 적입니다. Oracle을 사용한 지도 제법 오래되었는데 벌써 Oracle Database 21c (21.5) 버전까지 올라갔네요. 아직도 옛날 버전을 사용하고 있는 시스템들도 있을 것 같아 생각난 김에 한 번 정리해봤습니다. 1. 최신 Oracle JDBC Driver 다운로드 가장 최신 버전의 Oracle JDBC Driver는 아래 링크에서 다운로드 받을 수 있습니다. https://www.oracle.com/kr/database/technologies/appdev/jdbc-downloads.html 페이지를 한 번 미리 살펴보면 Oracle 21c,.. 2022. 5. 25.