라벨이 JAVA인 게시물 표시

[JAVA] Gson.toJson 시 null 인 property 도 포함시켜 반환하도록 하기

Gson.toJson() 시 null 인 프로퍼티는 포함하지 않고 값을 반환한다. null 을 포함한 결과 값을 받고 싶으면 아래와 같이 GsonBuilder.serializeNulls 의 설정값을 주게 되면 사용할 수 있다. Gson gson = new GsonBuilder() .setPrettyPrinting() .serializeNulls() .create() ; return gson.toJson(OBJECT) ;

[디자인 패턴] MVC 패턴. Model, View, Controller 자바로 보는 이해 빠른 간단한 예제

이미지
MVC는 굉장히 많은 어플리케이션에서 사용이 가능하다. 모바일, 데스크탑(윈폼, 스윙 등), 웹 등 다양하게 MVC 패턴을 사용할 수 있다. 스프링 같은 경우는 MVC를 사용해야한다. 사실 Model, View, Controller 각각의 역할은 이론적으로 알지만 코드로 작성할 때 어떻게 해야하는지 감이 잘 안오는 경우가 많다. 그래서 간단한 예제를 사용해서 설명하려고한다. MVC 구성도 MVC 클래스 다이어 그램 MVC 각각의 특징 Controller Controller는 관리자 라는 의미를 가지고 있다. Model, View를 가지고 있어 값을 처리하고 화면에 보여주는 것을 관리한다. Controller의 역할은 로직의 순서를 정한다고 봐도 된다. 예를 들어 상품을 구매하는 상황이다. 컨트롤러는 아래와 같은 순서로 처리해야할 것이다. 사용자가 올바른지 - Model DB에서 상품 구매 - Model 결제 - Model 결제 성공 뷰 - View 위 상황은 예제일 뿐 실제 상황에서는 적절치 않을 수 있다. 위에 여러 상황을 볼 때 컨트롤러에서는 사용하는 것은 Model, View 밖에 없다. 이것이 컨트롤러의 역할이다. 즉 컨트롤러는 Model에서 로직 처리를 관리해야한다. 관리라는 것은 예를 들어 사용자가 올바르지 않는 경우 상품 구매 진행이 되면 안되는 것을 말한다. 이처럼 로직의 흐름을 제어하고 여러 케이스(상황)에 대하여 조작하여야한다. 웹에서의 Controller의 시작은 Api 호출이 될 것이다. 클라이언트가 특정 URL로 웹에 요청하였을 때 Controller로 들어가게 되는 것이다. public class Controller{ public static void main(String[] args) { Model model = new Model(); View view = new View(); int num1 = view.numInput(); int ...

[JAVA, ANDROID] lambda expressions are not supported at this language level 람다 사용시 오류 해결 방법

오늘의 포스팅 내용은 자바 혹은 안드로이드 에서 람다식을 사용하려 할 때 빨간 밑줄 이 나오는 현상 해결 방법 입니다. 오류 상황 람다식을 사용하려 할 때 빨간 밑줄( lambda expressions are not supported at this language level )이 나타나는 현상 우선 프로그램을 실행시키면 에러를 아래와 같이 잡아주게됩니다. Error:(18, 52) error: lambda expressions are not supported in -source 1.7 (use -source 8 or higher to enable lambda expressions) Error:(30, 105) error: lambda expressions are not supported in -source 1.7 (use -source 8 or higher to enable lambda expressions) Error:(36, 31) error: method references are not supported in -source 1.7 (use -source 8 or higher to enable method references) Error:Execution failed for task 오류 원인 Output에 나와있듯 자바 버전(1.7)이 람다식을 지원 을 안하는 것이다. 해결 방법 현재 자바 버전이 람다식을 지원을 안하기에 자바 버전을 올려주면됩니다.. 버전을 1.8로 올립니다. build.grandle(Module: app) 파일에 들어가셔서 아래와 같이 compileOptions 을 추가해주시고 sync now 해주시면 됩니다. android{     ~~~~~ compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility Ja...

[JAVA] POI 라이브러리를 이용한 엑셀 파일 쓰기

POI 라이브러리를 통한 엑셀 파일 읽기 첫번째 로 기억해야 하는 것은 엑셀 파일의 버전 별 코드 가 달라진다는 점이다. 혹여 XLSX 확장자에 XLS 를 읽는 코드를 사용하였다면 콘솔 에러에 xssf instead of hssf 라는 말이 존재할 것이다.           * 내부 코드는 같은데 선언 할 때 변수가 달라진다(하단에 참고 링크 확인해주세요!). 구글링을 통한 대부분의 예제들은 한 개의 엑셀 파일을 읽거나 한 번만 작성한다.. 내가 필요했던 기능은 원할 때 기존 엑셀 파일에 행을 추가 해야했다. 엑셀 파일 저장을 했다가 다시 엑셀 파일을 연 후 행을 추가해야했다. 기본적인 로직 설명은 하겠지만 구체적인 로직 설명은 다른 블로그에 충분하니... 생략하겠다. 아래의 메소드는 엑셀파일 초기화 메소드 이다(0행만 생성 후 저장).  !주의점 init 과정에서 0행만 초기화 를 해주었다. 나중에 행을 추가할때 해당 라인을 생성(정의)해줘야한다. 그렇지않고 해당 셀을 읽을 시 NullPointException 이 나타나 고생하게된다;;  * 인자로 넘겨주는 path는 저장할 파일 경로를 뜻한다. public String writeExcelInit(String path) { String excelName = ""; XSSFWorkbook workbook = new XSSFWorkbook(); //워크북 생성(xlsx 확장자 일때) XSSFSheet sheet = workbook.createSheet(); //sheet 생성 XSSFRow row = sheet.createRow(0); //0행 생성 XSSFCell cell; cell = row.createCell(0); //[0, 0] 공간 할당 cell.setCellValue("엑셀 상단...