Spring: 스프링의 어노테이션(Annotations) 사용법

스프링(Spring)에서 어노테이션은 @[어노테이션이름] 이라는 형식으로 특정 클래스, 메소드, 변수의 맨 위에 붙여 쓰며 일반적으로 해당 구역의 기능을 확장하는 역할을 합니다. @Component: Bean을 생성하며(클래스의 인스턴스화), 클래스 코드 바로 위에 붙여 사용합니다. 멤버 필드 내 값은 지정되지 않습니다. 사용 시 클래스 이름의 앞 글자만 소문자만 바꾸고 사용합니다. 예를 들어 VO 클래스의 이름이 더보기…

넥사크로(Nexacro): 데이터베이스에 읽고 쓰기 및 기타

Deploy 수행 Build > Deploy… > Deploy Application >  을 클릭한 다음 경로는 이클립스 동적 웹 프로젝트 폴더의 WebContents 폴더로 설정합니다. 프로젝트에 폼 설정 childframe으로 이동 후 Appearance의 formurl에서 설정합니다. 폼 간 이동 this.toFrmTest_onclick = function(obj:Button, e:nexacro.ClickEventInfo) { this.go(“Base::FrmPortal.xfdl”); } Base 폴더 밑의 FrmPortal.xfdl 파일명의 폼으로 이동합니다. 전역 변수 사용  alert(application.[전역 더보기…

자바 Swing: for문으로 만든 컴포넌트에 접근 + 예제: 틱택토(Tic Tac Toe)

이전 글: Java Swing 예제: 다차원 배열 표시하기 (기초 설정 방법, for문으로 swing 요소 반복 등) for문으로 생성한 컴포넌트에 대한 접근 방법은 다음과 같습니다. 1. 컴포넌트들의 배열을 뽑아 인덱스 번호로 접근하는 방법 JPanel nineRoom = new JPanel(); (…) for(int i = 0; i < 9; i++) { JButton tempButton = new 더보기…

Java 예제: 배열 회전

배열을 회전하여 아래 그림과 같이 나타는 예제입니다. 행렬의 번호가 [1, 1] ~ [5, 5]라고 할 경우, 행과 열의 위치가 바뀌는 것을 [a, b] → [b, a] 로 나타냅니다. 아래 그림처럼 바꾸려면 바뀐 열의 번호는 6 – a 가 되야 하므로 [a, b] → [b, (6-a)] 의 형태로 바꾸는 알고리즘이 필요합니다. PrintArray는 Java Swing 예제: 다차원 더보기…

JSP, Spring: URL을 입력하면 파일이 바로 다운로드되게 하기

주소를 입력하고 엔터를 치면 바로 다운로드가 진행되는 컨트롤러 예제입니다. 만들어진 주소창에 입력해도 되고 자바스크립트의 location.href = 주소 를 사용할 수도 있습니다. This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode 더보기…

Java 예제: URL로부터 파일 다운로드(ReadableByteChannel 이용)

웹브라우저를 통하지 않고 자바 자체에서 파일 다운로드를 하는 예제입니다. Channels는 유틸리티 메소드로 Channel과 Stream에 필요한 작업들을 제공합니다. new Channel(InputStream in)은 인풋스트림(InputStream)을 새로운 ReadableByteChannel(채널)로 만들어주는데, Channel이란 하드웨어 장치, 파일, 네트워크 소켓 또는 하나 이상의 고유 한 I/O 작업을 수행 할 수 있는 프로그램 구성 요소와 같은 엔터티에 대한 열린 연결을 나타내는 것이라고 합니다. 더보기…

Java: 주소에 의한 참조(Call-by-reference)

주소에 의한 참조는 무슨 말일까요? 메모리에 어떤 값을 저장했다면 그 값이 담긴 방(room)과 그 방을 가리키는 주소가 있습니다. Call-by-reference는 주소를 참조(reference)해서 값들을 조작합니다. 메소드 간 통신(값이나 주소를 주고받는 행위)을 한다고 할 때 주소만 넘겨서 서로 주소를 공유하고 값들을 공유해서 조작하는 방법을 뜻합니다. C 언어에서 다루는 포인터(Pointer)에서 연장된 개념이라고 볼 수 더보기…

Java: LocalDate, LocalTime, ChronoUnit을 이용해 시간 나타내고 구하기 (Java 8) + 예제(바이오리듬)

JDK 8에서 등장한 새로운 LocalDate, LocalTime, ChronoUnit을 이용해 시간을 나타내고 계산을 해보겠습니다. 이전에는 Date, Calendar 이런 애들이 쓰였는데요, 자바 초기에 등장한 것이라 문제가 많았다고 합니다. 여러 문제를 다 열거할 수 없지만 가장 큰 문제는 Calendar는 특이하게 월을 0 ~ 11로 기록해야 한다는 점이었습니다. 혹시 이런 점을 모르고 일반적인 상식으로 코드를 작성했다가 더보기…

JSP: 페이지 포함 방법 중 include 액션 태그와 디렉티브의 차이점

JSP: 페이지 포함 방법 중 include 액션 태그와 디렉티브의 차이점 비교 1. 액션 태그 사용법: <jsp:include page=”페이지 주소” flush=”false> <jsp:param name=”변수 이름” value=”변수 값”></jsp:param> </jsp:include> 액션 태그는 독립된 모듈을 구성할 때 사용합니다. 컴파일 시 클래스 파일이 별도로 생성되며 포함되는 페이지와 포함하는 페이지와는 별개로 취급됩니다.. 리퀘스트 값들은 전달되지 않으며 파라미터도 별도로 더보기…

Spring Boot: mariadb 연결하기 (JDBC-Maven 기준)

Spring Boot에 JDBC를 통해 mariadb(mysql) 연결하는 방법입니다. 1. pom.xml의 <dependencies>에 다음을 추가합니다. <!– mariaDb –> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.mariadb.jdbc</groupId> <artifactId>mariadb-java-client</artifactId> </dependency> 혹시 디펜던시 목록에 다른  mysql, Jdbc 과 관련된 게 있다면 충돌이 발생하므로 삭제하는 것이 좋습니다.   2. applications.properties (또는 기타 프로퍼티 파일)에 다음을 추가합니다. spring.datasource.driverClassName=org.mariadb.jdbc.Driver spring.datasource.url=jdbc:mariadb://127.0.0.1:3306/test (본인 더보기…