본문 바로가기

IT_Developers/JAVA163

JSP - trimDirectiveWhitespaces / 불필요한 공백을 자동으로 제거 안녕하세요. 고코더 입니다. JSP 페이지를 개발하다. 보면은 공백이 많이 생깁니다. 물론 사용자는 알아챌 수 없지만 쓸데없는 엔터들이 난무를 합니다. 각종 서블릿들이 페이지 안에 끼어들다 보니 다양한 공백과 엔터 값이 생길 수밖에 없습니다. 공백 제거 trimDirectiveWhitespaces 그래서 jsp2.1, servlet2.5 버전부터는 이러한 불필요한 공백을 제거하는 trimDirectiveWhitespaces 기능을 사용할 수 있습니다. 사용법은 간단합니다. JSP내에 해당 소스를 입력해주면 알아서 난무한 공백들을 제거해줍니다. 결과 화면 해당 소스 한 줄이면 이유 없이 생겨있던 상단의 엔터 값들이 깔끔하게 정리된 모습을 볼 수 있습니다. 2021. 11. 3.
JSP - contentType, pageEncoding의 차이 안녕하세요. 고코더 입니다. JSP에서 인코딩을 설정할 때 contentType, pageEncoding를 동시에 설정합니다. 보통은 UTF-8로 소스코드처럼 최상 단위에 놓게 됩니다. 그런데 이 두 개의 차이점을 궁금해하는 분이 있어서 두 개의 차이점을 다뤄보도록 하겠습니다. contentType 해당 속성은 브라우저가 즉 HTTP가 해당 주소를 받아올 때 페이지의 인코딩을 의미합니다. 다시 말하면 의미 HTTP의 헤더에 그대로 이 내용이 들어가게 됩니다. charset을 통해 페이지를 요청하는 것이며, 웹서버에서 응답하여 클라이언트가 페이지를 받았을 때의 인코딩 방식입니다. 좀 더 쉽게 말하면 "브라우저가 받아볼 인코딩 형식"입니다. pageEncoding JSP 파일 자체의 인코딩 방식을 뜻합니다... 2021. 11. 3.
Lombok - @Getter, @Setter 어노테이션 안녕하세요. 고코더 입니다. 겟터, 셋터 노가다 자바를 개발하다 보면은 private 변수에 접근하기 위해서 getter, setter메서드를 사용합니다. 일명 겟터, 셋터 노가다를 하게 됩니다. 가장 처음 배우는 캡슐화 방식이 바로 이 겟터, 셋터입니다. 만약 name이라는 변수를 하나 선언하면 이렇게 두 개의 메서드가 태어납니다. 물론 IDE에서 제공해주는 기능으로 직접 노가다를 하지 않아도 되지만, 귀찮은 건 역시 마찬가지입니다. private String name; public String getName() { return model; } public void setModel(String name) { this.name = name; } Getter, Setter로 부터 해방 하기 Lombok(롬.. 2021. 11. 2.
Spring Boot - " Identify and stop the process that's listening on port 8080 or configure this application to listen on another port. " / 포트 충돌 오류 안녕하세요. 고코더입니다. ● 1. 스프링 부트 프로젝트를 시작할 때 아래와 같은 오류 메시지가 나타날 때가 있습니다. 해석 의미 그대로 8080 포토가 충돌이 일어나 발생한 실행 오류입니다. 이미 다른 프로젝트나 프로그램이 해당 포트를 점유하고 있어서 생긴 문제입니다. Identify and stop the process that's listening on port 8080 or configure this application to listen on another port. Disconnected from the target VM, address: '127.0.0.1:12443', transport: 'socket' Process finished with exit code 1 ● 2. 해결 방법은 단순.. 2021. 11. 1.
Spring - "Connection is read-only. Queries leading to data modification are not allowed;" 오류 해결법 안녕하세요. 고코더 입니다. ● 1. 스프링부트에 mysql 을 사용하던 중 해당 오류가 발생하였습니다. update 쿼리를 실행할시에 생기는 오류 메세지 입니다. 메세지 의미 그대로 읽기 전용으로 되어 있는 상태라서 수정이 안되고 있는 상태입니다. java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed; ● 2. 해결 방법은 간단합니다. 어노테이션에 @Transactional 을 선언하고 readOnly 속성을 false로 지정해주면 완료입니다. @Transactional(readOnly = false) 그럼 손쉽게 해당 오류 메세지를 해결 가능합니다. 2021. 10. 30.
SpringBoot - Gradle 프로젝트에 out, build 폴더가 있는 이유는? 안녕하세요. 고코더 입니다. ● 1. Gradle 프로젝트를 보면은 의아한 부분이 하나 있습니다. 바로 out, build 폴더의 준재입니다. 두 개의 폴더를 열어보면 동일한 클래스 파일을 소유하고 있습니다. 하지만 이유를 알면 정말 간단합니다. out - 폴더는 인텔리제이 빌드시에 컴파일한 class를 저장하는 폴더 입니다. build - 폴더는 gradle 빌드시에 컴파일한 class를 저장하는 폴더 입니다. ● 2. "다시 정리하자면 "out"폴더는 인텔리제이가 생성한 .class 파일 및 아티팩트를 배치하는 위치" 마무리 인텔리제이로 옮기니 새롭네요. 2021. 6. 30.
SpringBoot - 스프링부트 프로젝트를 생성하는 사이트 / start.spring.io 안녕하세요. 고코더 입니다. ● 1. 스프링부트를 학습하거나 이제 개발을 시작하는 분들에게는 참 멋지고 유용한 사이트를 하나 소개해드릴려고 합니다. 이 홈페이지는 클릭 몇번만으로 스프링부트를 실행할 수 있는 훌륭한 사이트입니다. 해당 페이지로 접속해보겠습니다. 외울 수 있다면 도메인을 기억해놓는 것도 좋아 보입니다. https://start.spring.io/ ● 2. 접속 후에 각종 옵션을 체크합니다. ● 3. 그리고 가장 중요한 스타터를 선택합니다. 각종 Dependencies 들을 추가하여 프로젝트를 설정할 수 있습니다. ● 4. 모든 준비가 완료되었다면 아래에 GENERATE를 클릭하여서 프로젝트를 생성합니다. 그럼 파일이 다운로드되면서 즉시 실행 가능한 스프링 부트 프로젝트가 다운로드됩니다. 마.. 2021. 6. 29.
Spring - @Validated 란? 무엇인가? / @Valid와 차이점 @Validated를 알아보자 안녕하세요. 고코더 입니다. 오늘은 스프링에서 데이터 유효성 검증에 사용하는 @Validated 라는 어노테이션을 배워 보려고 합니다. 오래전부터 자바를 쓰신 분들은 @Valid 라는 단어가 더 익숙하지만 오늘은 스프링에서 제공하는 @Validated 를 알아보도록 하겠습니다. ● 1. @Valid와 차이 우선 기존의 존재하던 데이터 유효성 검사 메서드는 기존 자바의 기술입니다. "javax.validation.Valid" 입니다. 자바에 존재합니다. 서블릿 기술입니다. 찾아보니 현재 JSR 380까지 출시되어 있습니다. ( The Java Community Process(SM) Program - JSRs- Java Specification Requests - detail .. 2021. 6. 16.
java - 자바에서 공백을 제거 하는 방법 / trim() 사용법 StringUtils.trim() 사용법 안녕하세요. 고코더 입니다. ● 1. 자바에서도 다른 언어와 똑같이 글자(String)의 앞과 끝의 공백을 제거하는 문자 함수가 존재합니다. 이는 현업에서도 매우 중요한 함수입니다. 사용자가 불필요한 공백을 제공할 수도 있고 시스템 내부적으로도 깔끔하게 데이터를 처리할 수 있게 도와 줍니다. ● 2. 아파치 사이트에서도 해당 StringUtils.trim 사용법에 대해 나와있습니다. 하지만 이번 시간에는 좀 더 이를 쉽게 가르켜드리겠습니다. ● 3. 우선 자신이 공백을 제거 하고 싶은 문자열을 해당 함수에 넣습니다. 그런 이런 형태로 입력이 가능합니다. StringUtils.trim(" 문자열 "); ● 4. 대부분 변수를 사용할 것입니다. 변수를 사용한다면 이렇.. 2021. 1. 8.