목록Back - end/JAVA (29)
어리바리 신입 개발자의 얼렁뚱땅 개발 기록 ✨
JPA(Java Persistence API) - 자바의 ORM(Object-Relational Mapping) 표준 스펙을 정의하는 인터페이스의 모음 - ORM : 객체와 관계형 데이터베이스(RDB) 사이의 데이터 변환을 자동화하기 위한 기술 - 즉, 자바의 객체와 RDB를 어떻게 매핑하고 동작해야하는지 정의하고 있는 것이 JPA [ 장점 ] - SQL문을 사용하지 않고 메서드를 통해 DB를 조작하기 때문에 개발자는 비즈니스 로직을 구성하는 것에만 집중할 수 있다. (어떤 쿼리를 실행해야 하는지만 생각하면 된며, 예측도 쉽다.) - 부수적인 코드를 줄이고 객체에 대한 코드를 작성하기 때문에 코드의 가독성을 높일 수 있다. (반복적인 CRUD 쿼리를 처리해준다.) - 객체 지향적인 코드를 작성할 수 있기..
[ 문제 ] 1. 첫 번째 줄에는 문자열을 입력 받을 횟수를 받는다. 2. 두 번째 줄에는 문자열을 문자 단위로 반복하는 횟수 + 공백 + 문자열을 받는다. 3. 출력은 문자 단위로 입력 받은 만큼 반복하는 방식으로 수정된 문자열만 출력하되 각 문자열은 개행해서 출력한다. [ 예시 - 입력 형태 ] 2 3 ABC 5 /HTP [ 예시 - 출력 형태 ] AAABBBCCC /////HHHHHTTTTTPPPPP 기본적으로 for문과 charAt를 이용해서 코드를 작성하고 조금씩 다르게 총 4가지로 수정해봤는데 크게 차이는 없는 듯 하다. [ 1. BufferedWriter의 write() 이용해서 바로 담기 ] 속도 : 124 ms BufferedReader br = new BufferedReader (new..
1. charAt(인덱스)는 해당 인덱스의 문자를 반환한다. 하지만, 반환하는 데이터는 char형 또는 int형임을 알 수 있다. 그냥 String print = str.charAt(0)으로 하면 오류 발생 int print = str.charAt(0) / char print = str.charAt(0)은 오류 발생하지 않는다. 2. int로 받을 때와 char로 받을 때 값이 다르다. String str = "abcdefg" 에서 0번 인덱스를 출력했을 때 int로 받으면 103 출력 / char로 받으면 a 출력 때문에 int로 받아서 + 수식을 사용하면 97 + 103 으로 계산해서 200을 출력한다. char로 받았을 경우 문자로 출력되는 것을 확인했기 때문에 당연히 a + g가 돼서 ag가 될 ..
[ 배열에 넣어서 찾기 ] [toCharArray] 속도 : 136 / 길이 : 675B [split] 속도 : 124 / 길이 : 673B String str = "abcdefg"; // 1. toCharArray 사용해서 문자로 쪼개서 배열에 넣기 char[] chrArr = str.toCharArray(); System.out.println(chrArr[0]); // a 출력 // 2. split 사용해서 문자열로 쪼개서 배열에 넣기 String[] strArr = str.split(""); System.out.println(strArr[0]); // a 출력 // 두개 차이점 : 배열을 출력하면 ? System.out.println(chrArr); // abcdefg 출력 System.out.pr..
[ 1. 배열에 넣어서 찾기 ] String str = "abcdefge"; int idx = -1; // 문자열 쪼개서 배열에 넣기 String[] arr = str.split(""); [ 1. for문으로 찾기 ] for(int i = 0; i < arr.length; i += 1){ if(arr[i].equals("e")){ idx = i; // 하나만 찾고 끝낼 경우 System.out.println(idx); break; // 모두 찾을 경우 // 1. if문 안에서 바로 인덱스 출력 : System.out.println(idx); // 2. 배열에 넣어서 출력 } } // 마지막 요소만 찾을 경우 // for문 밖에서 마지막 인덱스만 출력 : System.out.println(idx); [ 2..
[ Arrays 클래스 ] - 배열을 다루기 위한 메서드가 선언되어 있는 클래스 import java.util.Arrays; - 클래스 내의 메서드는 모두 static으로 선언되어 있기 때문에 객체를 생성하지 않고 사용이 가능하다. // 기본타입 혹은 String 타입의 배열을 오름차순으로 정렬하는 메서드 // static으로 선언 된 메서드는 외부 클래스에서 객체 생성 없이 바로 사용 가능하다. (new 생성자) public static void sort(int[] a) { DualPivotQuicksort.sort(a, 0, 0, a.length); } [ 배열 오름차순 정렬 ] Arrays.sort(배열이름) Arrays.sort(배열이름, 시작 인덱스, 끝 '전' 인덱스) - 부분 정렬 int[..
[ Scanner VS BufferedReader] [ Scanner ] - 간단한 입력 처리에 사용 - next(), nextInt(), nextDouble() 등 다양한 데이터 타입을 입력 받을 수 있음 - 한 글자 씩 읽고 처리함 - 띄어쓰기와 개행을 통해 입력 값을 인식 - 큰 데이터에 대한 처리가 느림 [ BufferedReader ] - String 타입으로만 데이터를 입력 받을 수 있음 - 입력 값을 모아뒀다가 한 번에 처리함 - 개행만을 통해 입력 값을 인식 - 큰 데이터를 읽을 때 Scanner에 비해 처리가 빠름 - IOException을 통해 예외 처리 필요 [ System.out.print() VS BufferedWriter] [ System.out.print() ] - 간단한 출력..

[1. 회원가입 화면 - forward] URI : /Min/m_insert_form.ksmart_m View : m_insert_form.jsp 패키지명 : kr.or.ksmart.controller 클래스명 : MController 메서드 : void doGet / void doPost 패키지명 : kr.or.ksmart.forward 클래스명 : MActionForward Index.jsp /WEB-INF/web.xml [2. 회원가입 처리 - forward / redirect 둘 다 아님] URI : /Min/m_insert_pro.ksmart_m View : m_pro.jsp 패키지명 : kr.or.ksmart.Inter 인터페이스 : MActionInterFace 패키지명 : kr.or.ksm..
Model - View - Controller 1. 컨트롤러에서 get방식 또는 post방식 요청 했는지 확인 컨트롤러 -> 어떤 처리과정 -> view(화면) 경로로 포워드 / 리다이렉트 http://localhost:8007/mysqlv8_MVC_MG_tomcat9_jstl_End/Min/m_insert_form_ksmart_m getRequestURI - /하위 전체 경로 문자열 - /mysqlv8_MVC_MG_tomcat9_jstl_End/Min/m_insert_form_ksmart_m getContextPath - /프로젝트명 경로 문자열 - /mysqlv8_MVC_MG_tomcat9_jstl_End 전체 경로 문자열.substring(프로젝트명 경로 문자열의 길이) - /프로젝트명 다음 모든 ..
내장 객체 : JSP 내에서 선언하지 않고 사용할 수 있는 객체 ( request / out / session jsp 내에 자동으로 포함되어 있는 멤버변수(메소드 매개변수 등의 참조 변수) session.setAttribute("name", value); // 세션 셋팅 String 변수 = (String)session.getAttribute("name"); // 세션 겟팅 session.invalidate(); // 세션 종료 name = 값을 저장해서 서버에 넘길 때 사용 / 받은 값을 비교할 때 사용 (변수 같은 기능) name을 userId라고 설정했을 때 사용자가 아이디를 id01이라고 입력하면 userId에 id01이 담겨 서버로 넘어간다. 서버에서는 userId에 담긴 id01와 데이터베이스..
지금까지 jsp 파일에 경로를 설정한 방법은 페이지가 늘어날 때 마다 경로를 계속 수정/추가 해줘야 한다. = > 코드가 중복되는 부분을 레이아웃으로 나눠 준다. 레이아웃을 헤드 / 레프트 / 라이트 / 푸터로 나눴을 때 user 폴더에 만들었던 jsp 파일과 index.jsp 파일에는 라이트 내용과 include 코드만 남겨둔다. index.jsp 파일에서 헤드 부분을 top.jsp 에 잘라내서 붙여주고 레프트 부분을 left.jsp에 잘라내서 붙여주고 푸터 부분을 footer.jsp에 잘라내서 붙여준다. [ 레이아웃 include 완성 파일 ]

프로젝트 - Export - JAR file 으로 라이브러리 저장 저장한 jar 파일 새로운 프로젝트의 lib 폴더에 복사 붙여넣기 새로운 프로젝트 안에 Cal 클래스가 없어도 Cal 클래스 안에 선언된 메소드를 호출 / 리턴 받을 수 있다.
[ 언어 설정 ] jsp 파일이나 html 파일에서 폼 태그에 입력한 값을 서버에 post 방식으로 전송할 때 값이 한글일 경우 깨지지 않게 전송하기 위해서 사용한다. request.setCharacterEncoding("euc-kr"); request.setCharacterEncoding("UTF-8"); get 방식으로 한글을 전송할 때에는 톰캣에 UTF-8가 기본 적용 되어있기 때문에 자동으로 처리해준다. 기본 적용이 안 돼 있으면 설정해줘야 한다. (enc-kr 사용하는 경우) Servers - tomcat 폴더 - server.xml - source 위 코드를 찾아 URIEncoding="euc-kr" 추가해준다. [ 사용자가 입력한 데이터 가져오기 - input 타입 submit 사용] // ..
[ 경로 연결 ] 프로젝트 경로만 불러오는 코드 : 코드가 리턴하는 값은 프로젝트명 / 리턴 데이터 타입은 String 즉, 프로젝트 경로만 불러오는 코드이기 때문에 뒤에 폴더이름 파일이름 써줘야 한다. /폴더이름/파일이름.파일명 //상대 경로 회원 가입 //절대 경로 //파일이 같은 폴더에 있는 경우 ./파일명.파일확장자 //파일이 다른 폴더에 있는 경우 ../폴더명/파일명.파일확장자 회원 가입 /프로젝트이름 출력 //스타일 (css파일) 연결 프로젝트 경로 / 파일 이름까지 불러오는 코드 : 코드가 리턴하는 값은 프로젝트명/파일명.파일확장자 / 리턴 데이터 타입은 String /프로젝트이름/폴더이름/파일이름.jsp 출력 ㅍ [ form 태그의 안의 정보 관리자에게 보내기 ] 1. 태그 - form :..
public static void hello() {} public : 전부 접근 가능 private : 같은 클래스 내에서 생성된 객체에서만 접근 가능 protected : 같은 패키지 내에서 생성된 객체에서만 접근 가능 or 다른 패키지에서 상속 받으면 접근 가능 defualt : 같은 패키지 내에서 생성된 객체에서만 접근 가능 (접근 지정자 자리에 아무것도 안쓰면 defualt) void : 리턴을 하지 않는다. 데이터 타입 : 리턴할 값의 데이터 타입을 입력한다. (String, int, 등... / Class 이름) 그럼 static은 왜 사용할까? static : 정적인 - 고정되어 있기 때문에 정적임 서로 다른 주소를 생성하면 같은 필드를 받아도 다르게 작동한다. 하지만 static으로 선언된..