본문 바로가기

전체 글376

[JSP] request.getParameter() null 처리 getParameter() 메서드는 아래와 같이 동작한다. request.getParameter() HTTP 요청의 매개변수 값 반환 해당 매개변수가 없을 경우 null 반환 해당 매개변수가 없을 경우 null을 반환하기 때문에 if (id == null)로 데이터를 검증했다. 하지만 로직 에러가 발생하였고, id 값을 출력해봤다. 당당하게 null이라고 나와서 잠시 혼란스러웠지만 디버깅에서 바로 원인을 알 수 있었다. String id = request.getParameter("id"); 에서 만일 id가 존재하지 않으면 null이 아니라 스트링 "null"이 할당된 것이다. ??? 안전하게 다음과 같이 데이터를 검증하도록하자. if (id == null || "null".equals(id)) 2023. 1. 22.
[Git] clone 후 push까지의 과정 1. clone 주소를 가져온다. 2. clone 한다. git clone https://github.com/hbkuk/Maumgagym.git team_git git [ clone할 주소 ] [ 클론할 로컬 폴더명] 3. 코드 작업을 한다. 4. 단위 작업을 완료 후 git pull을 통해 최신 상태로 만든다. (다른 팀원이 작업한 내용을 끌어온다.) 5. 내가 작업한 내용을 올리기위해 일련의 과정을 거친다. git add git commit 6. 원격 저장소로 push 한다. git push 2023. 1. 20.
[JSP] Rest API에 대해서 간략하게 Rest란? Rest는 Representational State Transfer의 약자로 직역하면 "대표로 상태를 전송하는 것" 이다. 제대로 된 의미는 "데이터의 이름으로 상태를 구분하여 전송하는 방식" 이다. 예를 들면.. 데이터의 이름 "이것은 유저에 대한 데이터야" → user( 유저 데이터라고 알려줌. ) 상태 "나 데이터 생성할거야: → create( 데이터를 생성한다고 알려줌. ) 전송 "유저 데이터 생성해줘" → Create user( 유저 데이터를 생성해 달라고 요청함. ) 이와 같이 데이터의 이름으로 상태를 구분하여 전송하는 방식임. 사용하는 이유는. 가장 대표적인 이유는 "HTTP 프로토콜" 이라고 생각한다. REST API는 HTTP 프로토콜 인프라를 그대로 사용하기 때문에 HTTP.. 2023. 1. 19.
[Java] 클래스, 메서드, 변수에 대한 Naming Rulue 클래스 명명 규칙 클래스명에는 파스칼을 사용 public class HelloWorld {} 인터페이스에는 특별한 접두사나 접미사를 사용하지 않고 파스칼을 사용 public interface Animal {} 인터페이스를 구현한 클래스에는 특별한 접두사나 접미사를 사용하지 않고 파스칼을 사용 public class Tiger implements animal {} 추상 클래스에는 특별한 접두사 및 접미사를 사용하지 않고 파스칼을 사용한다. public abstract class Animal {} 메서드명 메서드명에는 파스칼 표기법을 사용한다. public void SendMessage( String message ) {} 속성에 접근하는 메서드명의 접두사는 'get', 'set' 을 사용한다. public.. 2023. 1. 19.
MariaDB 자동 삭제 / 이메일 인증코드 전송 후 자동 삭제 우선 로그인 페이지를 아래와 같이 구현했다. 사용자가 이메일을 입력 후 전송하기 버튼을 클릭하면 해당 이메일로 인증번호가 발송된다. 인증 코드의 유효시간은 1분으로 설정했고, 이에 따라 DB에서도 1분 뒤에 자동적으로 삭제되게끔 설정해놨다. 우선 입력한 이메일에 인증번호가 도착했고 동시에 아래와 같이 DB에도 insert 된 것을 확인할 수 있다. 1분 뒤에 아래와 같이 확인해봤다. delet를 하지 않았지만, 자동적으로 삭제된 것을 볼 수 있다. 우선, 이를 구현하기 위해 이벤트 스케쥴러(Event Scheduler)에 대해서 알아보도록 하자. DB를 사용할 때, 소량의 데이터를 CRUD하는 것은 큰 문제가 되진 않지만 대량의 데이터를 처리해야 하는 경우, 시간과 쿼리문을 미리 지정해두면 일정 시간에 .. 2022. 12. 30.
[Spring] 빈(Bean) 등록을 위한 어노테이션(Annotation) 설정 / @Configuration 기존 Spring MVC에서는 xml을 활용해서 Bean 등록을 하고 있으나, 프로젝트의 규모가 커짐에 따라 사용하는 요소들을 xml에 등록하는 것이 상당히 번거로워서 어노테이션(Annotation, @)을 활용한 Bean 등록 방법이 탄생했다. 1. Spring Bean 이란? Spring에서는 Spring의 DI Container에 의해 관리되는 POJO(Plain Old Java Object)를 Bean이라고 부르며, 이러한 Bean들은 Spring을 구성하는 핵심 요소이다. Spring Bean의 구성요소 class : Bean으로 등록할 java 클래스 id: Bean의 고유 식별자 scope : Bean을 생성하기 위한 방법( Singleton, prototype 등) constructor-a.. 2022. 12. 27.
[MyBatis] 동적 SQL / parameterType이 TO클래스가 아닌 java.util.List 클래스로 전달 후 insert / <foreach> 활용 동적 SQL MyBatis – 마이바티스 3 | 동적 SQL 동적 SQL 마이바티스의 가장 강력한 기능 중 하나는 동적 SQL을 처리하는 방법이다. JDBC나 다른 유사한 프레임워크를 사용해본 경험이 있다면 동적으로 SQL 을 구성하는 것이 얼마나 힘든 작업인지 mybatis.org insert into dept2 values ( #{item.deptno}, #{item.dname}, #{item.loc} ) 2022. 12. 23.
[SetUp] MaBatis 마이바틱스 프로젝트 생성 / 초기 설정 / log4j.xml, mapper.xml, myBatisConfig.xml .. 1. MyBatic library + DB library 준비 Products A blog about the the MyBatis data mapper framework. blog.mybatis.org 2. 설정 파일 데이터베이스 설정 파일 ( myBatisConfig.xml ) 프레임워크용 로그 출력 설정파일 ( log4j.xml ) Mapper 파일( *.xml ) 더보기 1) myBatisConfig.xml 2) log4j.xml 3) mapper.xml 3. 초기 java 코드 1) 패키지 내 .xml 파일 select empno, ename, sal, deptno from emp where deptno=${deptno} select empno, ename, sal, deptno from emp .. 2022. 12. 22.
[CSS] margin: 0; / 가운데 정렬하기 margin : 0; 대표적인 중앙정렬 속성으로, 자주 사용된다. 어떻게 동작이 되는지 확인해보자. * 알고가기 패딩(padding)은 파란색 부분과 테두리 사이의 여유 공간을 의미합니다. 즉, border까지가 요소입니다. 마진(margin)은 요소 주위의 여백입니다. 다른 요소와의 사이 공간을 의미힙니다. margin : 0; 상하좌우여백을 지정하지 않는다는 의미입니다. 2022. 12. 7.