백엔드
-
지네릭스(Generics) - 지네릭 소개, 지네릭 클래스백엔드/자바 2021. 5. 21. 11:13
지네릭스란(Generics)란? 다양한 타입의 객체를 다루는 메서드, 컬렉션에 입력 가능한 객체를 제한하게 하는 기능이다. 좀 더 직관적으로 쓰자면 특정 메서드나 컬렉션에 들어가는 자료형을 제한하는 것이다. 지네릭스의 필요성 예를 들어 위와 같이 String 객체만 들어가길 원하는 ArrayList가 있다고 가정해보자. 기존에 잘 모를 때는 지네릭스 없이 위와 같은 형식으로 객체를 생성하고 사용했다. 하지만 이렇게 생성할 경우 코드는 줄지만 반대로 여러가지 문제점 있다. 예를 들어 위와 같은 상황처럼 데이터를 입력받고, 이걸 변수에 저장한 뒤 출력하는 코드를 가정해보자. 컴파일러가 실행(런타임) 전에 확인할 때는 어떠한 오류도 없다. 우선 실행 결과를 보도록 하자. 컴파일러는 문제가 없다고 했지만, 실제..
-
컬렉션 - Collections 클래스와 메서드백엔드/자바 2021. 5. 20. 19:37
Collections란? Arrays가 배열 관련 메서드를 제공하는 것처럼 Collections는 컬렉션과 관련된 메서드를 제공한다. Arrays, Collections, Objects와 같은 클래스들은 모두 Static 메서드를 제공한다. 그래서 객체 생성없이도 편리하게 다양한 기능을 이용할 수 있다. fill(), copy(), sort(), binarySearch() 등 기본 기능이 있으나 Arrays의 클래스의 메서드들과 기능이 동일하다. 동기화 - synchronizedXXX() 과거 Vector, Hashtable와 같은 자료구조 클래스들은 동기화가 처리되어있었다. 그래서 무슨 자료구조를 사용하든 기본적으로 동기화가 되었었다. 하지만 모든 프로그램이 멀티 쓰레드 프로그래밍을 하는 것이 아니다...
-
컬렉션 - Arrays 클래스와 메서드백엔드/자바 2021. 5. 20. 16:56
Arrays 클래스는 배열을 다루는데 유용한 메서드들이 정의되있다. 모든 메서드가 모든 Static으로 별도로 객체를 생성없이도 언제든 사용이 가능하다. 배열의 복사 - copyOf(), copyOfRange() copyOf()는 배열 전체를 복사해서 새로운 배열을 만들어서 반환한다. 반면 copyOfRange()는 지정한 범위만큼 복사를 해서 새로운 배열을 반환한다. 이때 copyOfRange()에 지정된 범위의 끝은 포함하지 않는다. public static void main(String[] args) { int arr [] = {0, 1, 2, 3, 4}; int arr1 [] = Arrays.copyOf(arr, arr.length); // {0, 1, 2, 3, 4} int arr2 [] = A..
-
스프링 DI, IOC란?백엔드/스프링 2021. 3. 2. 20:29
스프링에서 꼭 알고 넘어가야하는 개념들이 있다. 그 중 가장 기본이 되는 것이 바로 다음과 같은 두 요소다. 의존성 주입: DI (Dependency Injection) 제어반전: IOC (Inversion of Control) 우선 아래와 같은 예시를 보자. DI, IOC의 필요성 예를 들어 위와 같은 파일을 가진 스프링 프로젝트가 있다고 가정해보자. 해당 프로젝트는 어떤 객체를 만드냐에 따라 자기 소개를 다르게 하는 기능을 한다. 위 코드는 메인 클래스 실행 코드다. 예를 들어 위와 같이 Police 객체를 만들고 메인 클래스를 실행하면 오른쪽과 같은 메시지가 뜬다. 만약 객체를 Student로 바꿔서 만들고 메인 클래스를 실행하면 오른쪽과 같은 메시지가 뜬다. 일반적으로 볼 수 있는 코드고 사용법도..
-
스프링 - 프로젝트 생성하기백엔드/스프링 2021. 2. 12. 09:13
해당 글에서는 이클립스를 통해 스프링 프로젝트를 생성하는 방법을 알아본다. 물론 아래 방식과 다르게 스프링 프로젝트를 생성할 수도 있다. 해당 글은 MVC 프로젝트를 위한 프로젝트를 생성하는 방법을 다룬다. 가장 먼저 위와 같이 File - New - Spring Legacy Project를 선택한다. 만약 New 메뉴에 Spring Legacy Project가 없다면 Other를 눌러 찾으면 된다. 위와 같은 화면이 뜨면 Project name을 설정하고 Templates에서 Spring MVC Project를 선택한다. 선택한 후에 Next를 누른다. 그 다음은 위와 같이 이름을 정하고 Finish를 누른다. 이 때 굳이 똑같이 하지 않아도 된다. 보통 예시에는 com.xx.controller로 나오..
-
서블릿, JSP 프로젝트 - form 이용하기(Post방식 이용)백엔드/서블릿&JSP 2021. 2. 3. 02:40
이번에는 form 태그를 이용해서 jsp에서 post방식으로 서블릿에 데이터를 전달하는 것을 실습해보자. 우선 form.jsp 파일을 만들어보자. form.jsp파일을 위와 같이 작성해준다. 이제 컨트롤러로 가서 FormController를 만들어준다. 이름을 입력하고 Next를 누른다. Edit를 누르고 매핑할 URL을 입력한다. "/form"을 입력한다. 그리고 Finish를 눌러준다. 서블릿에서 또 쓰지 않는 메서드들은 삭제하고 필요한 메서드인 doGet과 doPost만 남긴다. 그리고 위와 같이 doGet, doPost를 채워준다. 사용자가 "/form" url로 접속 요청을 하면 doGet 메서드에서 해당 요청을 form.jsp로 전달한다. 사용자는 form.jsp를 보게 되고 form을 작성해..
-
서블릿, JSP 프로젝트 - 필터 작성하기백엔드/서블릿&JSP 2021. 2. 3. 02:05
서블릿, JSP를 다루다보면 문제가 생긴다. 바로 한글 문제다. 2021/01/13 - [백엔드/서블릿&JSP] - 서블릿에서 한글 문자 인코딩하기 서블릿에서 한글 문자 인코딩하기 문자 인코딩이란? 컴퓨터는 숫자 0,1로 모든 것을 인식한다. 그러나 사람은 0,1로 컴퓨터와 소통을 하기에는 제한적인 부분이 많다. 이에 사람들은 문자 코드란 것을 만들었다. 문자에 대응하는 sgcomputer.tistory.com 이미 이 문제는 한글 인코딩 문제에서 다룬바 있다. 그러나 당시 예제에선 필터링으로 인코딩을 하지 않아서 서블릿마다 인코딩을 했어야 했다. 그러나 이번에는 지난 번 포스팅에서 작성한 기본적인 JSP, 서블릿에 필터링을 통해 인코딩을 하도록 실습을 할 예정이다. 단순 JSP 파일을 띄우는건 문제가 ..
-
서블릿, JSP 프로젝트 - 서블릿, JSP 작성하기백엔드/서블릿&JSP 2021. 2. 3. 00:54
해당 글은 이클립스 EE버전, 톰캣 서버 등이 기본적으로 세팅됐다는 전제하에 진행합니다. 해당 게시글에서 진행하는 예제는 서블릿, JSP를 이용 MVC패턴 model2 방식을 진행할 예정입니다. 서블릿, JSP 프로젝트(Dynamic Web Project) 시작하기 우선 File > New > other을 클릭한다. 선택 마법사가 나타나면 dynamic을 치고 Dynamic Web Project를 선택 후 Next를 누른다. 해당 창에서 프로젝트 이름 입력 및 사용할 서버를 선택해준다. Project Name항목에 이름을 입력한다. Target runtime항목에서 본인이 미리 설치한 서버 프로그램과 버전을 선택한다. Dynamic web module version을 눌러서 원하는 버전을 선택한다. 보통..