자바

    [Java] 정수 나눗셈 연산, 증감 연산자, while문과 조건식

    정수 나눗셈 연산 (혼자 공부하는 자바 p.80) 다음 코드를 실행하면 출력 결과로 5를 기대했는데 4가 출력되었다. 어디에서 잘못 작성된 것일까? int var1 = 5; int var2 = 2; double var3 = var1 / var2; int var4 = (int)(var3 * var2); System.out.println(var4); // 4 3번 라인의 결과값부터 잘못 되었다고 할 수 있다. 이유는 자바에서 정수 연산의 결과는 정수이기 때문이다. 디버깅 모드로 라인 하나하나를 살펴보자. 7번 라인에서 var1 / var2의 연산 결과는 2.5가 아니라 2가 되고, 2를 double 타입으로 변수 var3에 저장하므로 2.0이 된다. 8번 라인에서 var3 * var2의 연산 결과는 4.0이..

    [Spring] 스프링 웹 개발의 3가지 방법

    스프링 웹 개발의 3가지 방법 정적 컨텐츠 : like WELCOME pages MVC와 템플릿 엔진 : jsp, php → HTML을 서버에서 프로그래밍해서 동적으로 내려줌 API : json이라는 데이터 포맷으로 클라이언트한테 데이터 전달 정적 컨텐츠 resources/static/hello-static.html 인텔리제이 파일 생성 단축키 Ctrl + Alt + Insert 정적 컨텐츠 입니다. 실행해보자 run을 돌리고 http://localhost:8080/hello-static.html로 접속하여 확인 정적 컨텐츠는 어떻게 동작하는 걸까? 웹 브라우저에 localhost:8080/hello-static.html을 입력 내장 톰캣 서버가 요청을 받아서 스프링한테 전달 스프링은 먼저 컨트롤러에 있..

    [Spring] 스프링 Security 한글 깨짐 해결 방법

    문제 상황 게시판에서 POST 요청으로 글 작성 시 한글이 깨지는 현상이 나타났다. 아니 어제까지도 잘 됐는데 갑자기..? 전체 페이지가 그런 것은 아니었다. 작성되어 있던 글은 잘만 나오는데 새롭게 작성하는 글은 모두 저런 형태로 출력되었다. 자, 그럼 어디서부터 잘못된 건지 찾아보도록 하자. 먼저 데이터베이스 쪽을 살펴보았다 출력만 그런 게 아니라 애초에 DB에 들어갈 때 이렇게 되는구나? 어디서 깨지는 거야 도대체 Controller에서 로그를 찍어보니 이미 한글이 깨진 채로 전송이 된다는 걸 알 수 있었다. 해결 방법 1. 데이터를 가장 먼저 마주하는 Controller의 문제일까? RequestMapping 부분을 다음과 같이 수정했다. → 실패 @RequestMapping(value = "/p..

    [TIL] JSP, 톰캣, 서블릿

    ✍ Today I Learned JSP란(Java Server Pages)란? Java 언어를 기반으로 하는 Server Side 스크립트 언어를 의미한다. HTML 코드에 Java 코드를 넣어 동적인 웹 페이지를 생성하는 웹 애플리케이션 도구이다. JSP를 실행시키기 위한 Servlet 엔진이 필요하다. 서블릿(Servlet)이란? 클라이언트의 요청을 받고 요청을 처리하여 결과를 클라이언트에게 제공하는 Java 인터페이스이다. 간단한 메서드 호출만으로 웹 요청과 응답의 흐름을 체계적으로 다룰 수 있는 기술이다. 톰캣(Tomcat)이란? JSP와 Servlet을 구동하기 위한 서블릿 컨테이너이자 웹 서버이다. Java EE 기반으로 만들어졌다. (Port:8080 → 8088) 브라우저와 자바 애플리케이..

    [TIL] Java 주소록, 상품관리, 호텔관리 시스템

    ✍ Today I Learned [주소록 관리 시스템] SelectOne mysql> select * from address where name = ‘이름’; pk(=primary key 빈 값이 없고 중복되지 않는 키)로 검색하지 않는 경우 출력 형태가 단일 객체 아님을 주의하자. where은 조건절로 테이블 내에 해당하는 이름을 검색한다. 입력받은 이름을 데이터베이스로 넘겨서 해당하는 데이터를 리턴 받는다. list는 여러 개의 데이터를 리턴 받고, detail은 한 개의 데이터만 리턴 받는다. Delete mysql> delete from address where name = ‘이름’; 입력받은 이름을 데이터베이스로 넘겨서 해당 데이터를 삭제한 후, 결과를 true or false로 리턴 받는다. ..

    [TIL] Java Enum, MySQL 개발 환경 설정, JDBC

    ✍ Today I Learned [Enum] 열거형(enum)이란? 관련 있는 상수들의 집합이다. class나 interface 대신 enum 키워드를 사용하여 정의하고, 콤마로 상수를 구분한다. 이때 상수는 대문자를 사용한다. public enum Directions { EAST, WEST, SOUTH, NORTH } 정의된 enum은 다음과 같은 방법으로 사용한다. Directions east = Directions.EAST; enum의 상수값은 기본적으로 0부터 시작하고, 불규칙한 값을 상수값으로 설정하고 싶으면 상수의 이름 옆에 괄호(())를 추가한 뒤, 그 안에 원하는 상수값을 적으면 된다. 이때 불규칙한 특정 값을 저장할 수 있는 인스턴스 변수와 생성자를 별도로 추가해야만 한다. values(..

    [TIL] Java ArrayList, HashSet, HashMap, Generic

    ✍ Today I Learned [컬렉션 프레임워크 Collection Framework] 자바에서 컬렉션 프레임워크(collection framework)란? 많은 데이터를 효과적으로 처리하기 위해 표준화된 방법을 제공하는 클래스의 집합을 의미한다. 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것이다. 인터페이스를 사용하여 구현된다. 주요 인터페이스로는 List, Set, Map이 있다. List와 Set 인터페이스는 Collection 인터페이스를 상속받지만, 구조상의 차이로 Map 인터페이스는 별도로 정의된다. , 는 모든 클래스가 제네릭으로 표현되어 있음을 알려준다. [Generic] 제네릭이란? 데이터 타입(data type)을 일반화(general..

    [TIL] Java 피카츄 게임, 웹 서비스 프로그램

    ✍ Today I Learned [피카츄 키우기 게임] 기존에 계속해서 새로운 객체를 생성하던 구조에서 각 캐릭터의 경험치를 저장하는 구조로 변경하려면? 캐릭터의 경험치를 담을 공간이 필요하다. 배열을 이용하거나 또 다른 객체를 사용할 수 있다. [배열을 이용한 방법] Character 타입의 배열을 캐릭터 개수만큼 생성하고 각 인덱스에 new 연산자로 새로운 캐릭터 객체를 할당한다. (하지만 이렇게 하면 배열에 할당하면서 생성자 함수를 호출하기 때문에 각 캐릭터의 상태 값이 프린트돼버림) 캐릭터 선택 값은 switch문 대신 배열의 인덱스를 이용한다. 캐릭터 선택도 반복되어야 하기 때문에 이중 반복문으로 설정한다. 내가 헷갈렸던 부분은 캐릭터 객체와 플레이 객체의 생성 시점이었는데, 나는 플레이 객체도..