개발/자바

    서블릿이 static resouces 들을 처리하지 못하는 경우(css, js, 이미지 로딩 실패)

    웹 게시판을 스프링 프레임워크 없이 서블릿만으로만 구현하는 도중 jsp 파일이 외부 css, js 파일들을 로딩하지 못하는 문제에 마주했다. 이 문제를 해결하기 위한 과정에서 새로운 사실들을 알게되었다. 우선 브라우저는 html, jsp 페이지들을 받아와 렌더하는 과정에서

    myBatis 3) 쿼리에 파라미터에 객체 전달 시 프로퍼티 찾지 못할 때

    서블릿 / 스프링프레임워크 프로젝트를 오가며 바티스 쿼리 매퍼를 작성하다보니, 아래와 같은 사항들을 알게되어 정리해본다. 공식문서에서 해당 내용을 찾기 힘들었는데, 같은 문제로 애먹는분들에게 도움이 되면 좋겠다. myBatis 3 매퍼 SQL 프라그먼트에 parameter 를 전달할때, 서블릿 프로젝트로 진행시, DAO에서 파라미터에 VO를 담아준다면? fragment에서 받을 때 Map.property 혹은 VO.property 라고 명시/사용 해줘야한다. AND title like CONCAT('%',#{searchCriteria.keyword},'%') 스프링 프레임워크 레포지토리에서 VO(DTO)를 파라미터로 넘겨줄 시 반대로 명시할 필요 없이 필드명만 입력해줘도 된다. AND title like..

    myBatis 3 쿼리문에 parameter 문법 (${}, #{})

    마이바티스를 이용하면 SQL문에 파라미터를 쓸 수 있다. myBatis 공식문서에 Parameters 섹션에 기술된 #{} 과 String substitution의 ${} 이 그것들이다. 예를들어, SELECT * FROM article WHERE article_id = #{articleId} 위와 같이 사용하거나 WHERE article_id = '${articleId}' 와 같이 사용하면 파라미터를 전달해줄 수 있다. @Mapper public interface ArticleMapper { public List selectSearchArticles(@Param("articleId") String articleId); } 위 매퍼인터페이스의 selectSearchArticles 메서드를 통해 스트링 형..

    자바의 데이터 타입과 메모리 영역

    자바 원시타입, 참조타입(Primitive type, Reference type) 데이터 타입이란, 해당 데이터가 어떻게 메모리에 저장되고 프로그램에서 어떻게 처리되어야 하는지 명시적으로 알려주는 것이다. 자바에서는 크게 기본형타입과 참조형 타입이 있다. 원시 타입(Primitive Type) 논리형 boolean, 정수형 byte, int, short, long, 실수형 float, double, 문자형 char 이 있다. 8가지 기본형 타입을 미리 정의하여 제공한다. 기본값이 있기 때문에 Null이 존재하지 않는다. 기본형 타입에 Null을 넣고싶다면 래퍼 클래스를 활용한다. 실제 값을 저장하는 공간으로 스택 메모리에 저장된다. 담을수있는 크기를 벗어나면 컴파일 에러가 발생한다. 참조 타입(Refer..

    자바 클래스패스(classpath)란?

    자바 클래스패스(classpath)란? 자바 언어로 작성된 클래스 파일은 자바가상머신(JVM)에서 실행된다. JVM이 모든 폴더를 찾아보는 것은 비효율적이기에, 클래스파일을 찾을 수 있게 위치의 리스트들을 제공한다. JVM이 프로그램을 실행하기 위해 클래스파일을 찾는데 기준이 되는 경로가 클래스패스다. java 확장자로 끝나는 자바 소스코드를 컴파일한다. 컴파일된 소스코드는 바이너리 형태의 .class 파일로 변환된다. java runtime(jre)으로 .class 파일에 포함된 명령을 실행하려면, 먼저 이 파일을 찾을 수 있어야한다. 이 때 클래스패스가 사용된다. 클래스패스를 지정하려면, 환경변수 CLASSPATH를 사용하거나 java runtime(jre)에 -classpath 플래그를 사용한다. ..