🧩 MobaXterm리눅스에 Telnet, SSH 접속을 위해 Putty나 XShell을 깔고, FTP/SFTP 접속을 위해 FileZila를 깔고, 그 외 다양한 원격 접속용 프로그램을 복수개 설치하여 관리하면 많이 복잡해지고 번거로워 진다. 또한 Putty 같은 경우, 여러 파일들을 vi 에디터로 수정/관리해야하는 경우 'Putty' 만으로는 한계가 있다. MobaXterm은 현존하는 최강의 SSH 접속 툴로, 익숙한 UI와 다양한 접속 방식 지원으로 설정이 편하고 별도의 SFTP 프로그램 등을 설치하지 않아도 된다. 그리고 보안키도 putty로 ppk 변환하지 않고 .key 또는 .pem 그대로 사용할 수도 있다. SSH란?시큐어 셀(Secure SHell)의 약자로 네트워크 상에 연결된 다른..
Back-end
'분명히 강의와 똑같이 코드 받아 적었는데...'하면서 강의 속 강사님은 다음 코드로 넘어가지만 나는 넘어가지 못하고 에러 메시지를 맞닥뜨리는 상황을 누구나 겪어 봤을 것이다. 실습하다가 에러가 발생하면 도대체 무엇이 문제인지 몰라 당황스럽기 마련입니다. 자바로 프로그래밍을 배워나가면서 많은 수의 크고 작은 에러들을 접하게 될 것입니다. 대부분의 에러는 작은 실수에서 비롯된 것들이며 익숙하지 않은 초심자들에게는 다소 무섭게 느껴질 수 있지만 , 곧익숙해져서 쉽게 대응할 수 있게 되지만 처음 배울 때는 작은실수 하나 때문에 많은 시간을 허비하곤 합니다. 하지만 에러 메시지에는 많은 정보가 담겨 있고 생각보다 친절하기 때문에 겁먹지 말고 차근차근 뜯어보면 에러를 해결할 수 있습니다! 1. cannot fin..
Java에서 문자열을 치환하는 방법은 여러 가지가 있습니다. 그 중 가장 일반적인 방법 중 하나인 'replace' 메서드와 정규 표현식을 사용하여 문자열을 치환하는 'replaceAll'과 'replaceFirst'에 대해 알아 볼 것입니다. 1. replace replace 함수는 자신이 바꾸고 싶은 문자로 문자열을 치환시켜주는 기능을 합니다. 💡 replace를 이용한 문자열 치환 방법 String.replace([찾을 문자열],[변경 문자열]); String str1 = "Hello, World!"; str1 = str1.replace("Hello","Hi"); System.out.println(str1); // 출력 : Hi, World! 2. replaceALL replaceAll 함수는 자신..
@RequiredArgsConstructor란? Lombok이 제공하는 어노테이션 중 하나로, 주로 생성자를 자동으로 생성해주는 기능 수행 이 어노테이션을 사용하면 클래스의 필드를 기반으로 한 인자를 받는 생성자를 자동으로 생성 생성자는 해당 클래스의 모든 'final' 필드나 '@NonNull' 어노테이션이 붙은 필드에 대한 생성자 인자를 포함 @RequiredArgsConstructor를 사용한 예시 import lombok.RequiredArgsConstructor; @RequiredArgsConstructor public class Book { private final String title; private final String author; private final int year; // 다른..
영속 계층의 처리 테이블을 반영하는 VO(Value Object) 클래스의 생성 MyBatis의 Mapper 인터페이스의 작성 / XML 처리 작성한 Mapper 인터페이스의 테스트 영속 계층의 구현 준비 VO 클래스의 작성 VO 클래스를 생성하는 작업은 테이블 설계를 기준으로 작성하면 됩니다. 현재 tbl_board 테이블의 구성은 아래와 같습니다. 프로젝트에 org.noel.domain 패키지를 생성하고, BoardVO 클래스를 정의합니다. ▶ BoardVO 클래스 package org.noel.domain; import java.util.Date; import lombok.Data; @Data public class BoardVO { private Long bno; private String tit..
테이블생성과 Dummy(더미) 데이터 생성 SQL Developer를 이용해서 PART 1에서 작성한 book_ex 계정을 통해서 테이블을 생성합니다. 게시물은 각 게시물마다 고유의 번호가 필요합니다. 오라클의 경우 시퀀스(sequence)를 이용해서 이러한 작업을 처리합니다. 시퀀스를 생성할 때는 데이터베이스의 다른 오브젝트들과 구분하기 위해서 'seq_'와 같이 시작하는 것이 일반적입니다. 테이블을 생성할 때는 'tbl_'로 시작하거나 't_'와 같이 구분이 가능한 단어를 앞에 붙여주는 것이 좋습니다. tbl_board 테이블은 고유의 번호를 가지기 위해서 bno 칼럼을 지정했고, 제목(title), 내용(content), 작성자(writer)를 칼럼으로 지정합니다. 테이블을 설계할 때는 가능하면 레..
프로젝트의 생성 및 준비 Spring Leagacy Project의 생성 pom.xml에서 스프링 버전 변경 spring-test, spring-jdbc, spring-tx 추가 junit 버전 변경 Servlet 버전 변경 HikariCP, MyBatis, mybatis-spring, Log4jdbc 추가 JDBC 드라이버 프로젝트 내 추가 기타 Lombok의 설정 예제 프로젝트 구성 예제를 위한 프로젝트는 'ex02' 이름으로 생성하고, 'Spring Legacy Project'로 생성합니다. 프로젝트를 생성한 후에는 pom.xml의 수정, 데이터베이스 관련 처리, 스프링 MVC 처리와 같은 순서로 진행합니다. pom.xml의 수정 프로젝트를 생성한 후 pom.xml에서는 스프링의 버전과 Java 버..
Controller의 Exception 처리 Controller를 작성할 때 예외 상황을 고려하면 처리해야 하는 작업이 엄청나게 늘어날 수 밖에 없습니다. 스프링 MVC에서는 이러한 작업을 다음과 같은 방식으로 처리할 수 있습니다. @ExceptionHandler와 @ControllerAdvice를 이용한 처리 @ResponseEntity를 이용하는 예외 메시지 구성 @ControllerAdvice @ControllerAdvice 는 AOP(Aspect-Oriented-Programming)를 이용하는 방식이다. AOP는 핵심적인 로직은 아니지만 프로그램에서 필요한 '공통적인 관심사(cross-concern)는 분리'하자는 개념이다. Controller를 작성할 때는 메서드의 모든 예외상항을 전부 핸들링..