개인 공부
-
spring[10] Servlet - request(요청)개인 공부/spring 2021. 6. 6. 08:40
Servlet의 데이터 요청 방식 GET - query parameter url?name=이름&age=10 메세지 바디 없이 url의 쿼리 파라미터를 사용하여 데이터를 전달 검색, 페이징, 필터에 주로 사용됨 POST - Form content-type: application/x-www-form-urlencoded 메세지 바디에 쿼리 파라미터 형식으로 전달 회원가입, 상품주문, form 데이터를 전달 받을 때 사용 HTTP message body 주로 json 데이터를 전달 HTTP API에서 사용 GET - query parameter import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import java..
-
JVM이란개인 공부/java 2021. 6. 6. 07:56
java 소스가 class가 되는 과정 java 소스를 작성하여 실행이 되는 파일로 만드는 과정이다. java를 cmd창이나 터미널에서 실행해봤다면 javac를 통해 class파일을 만들어 본 경험이 있을텐데 개발툴로만 자바 소스를 접해본 사람은 이런 과정이 이해가 안될 수 있다. class파일을 만드는 이유는 개발자가 os를 신경쓰지 않고 java 코드로만 코딩했을 때 jvm이라는 것을 활용하여 os에 맞게 코드를 변형시키기 위한 과정 중 jvm이 java코드를 더 알아보기 쉽게 만들기 위한 작업이다. class가 os에서 실행되는 과정 이제 class파일을 만들었으니 java로 실행했을 때 java가 어떻게 처리해줄까에 대한 과정이다. class 파일을 Class Loader가 읽어들여서 java에서..
-
spring[9] Servlet - 서블릿의 구조와 정보개인 공부/spring 2021. 6. 5. 08:25
Servlet이란 서블릿이란 개발자가 HTTP 메세지로 통신할때 필요한 기본 과정들이 존재하는데 그 과정을 간소화 시켜주고 개발자는 핵심 비지니스 로직에 집중할 수 있게 도와주는 기능을 말한다. 서블릿이 없을땐 위의 삭제된 과정들을 개발자가 직접 코드로 만들어야하는데 우리는 서블릿을 사용함으로 이 작업들을 축소하고 핵심 비지니스 로직에만 집중할 수 있다. 그렇다면 이 서블릿은 누가 제공하는걸까? 서블릿은 was에서 HTTP 메세지를 받았을 때 서블릿 컨테이너를 통해 개발자가 요청과 응답을 사용하기 쉽게 만들어준다. 그럼 was에서 제공해주는 서블릿 컨테이너가 없다고 가정하고 코드로 한번 서블릿의 구조를 살펴보자 servlet을 직접 설정 servlet을 직접 구현할거지만 정말 옛날처럼 어노테이션의 도움 ..
-
java란개인 공부/java 2021. 6. 3. 07:31
java란 플랫폼의 독립성 java는 JVM(java virtual machine)을 활용하여 운영체제와 상관없이 java 프로그램을 실행시킬 수 있다. 객체지향 객체의 사전적 정의는 "주체에 대해 작용의 대상이 되는 쪽"이다. 너무 어려운데 예를 들어 백화점이란 큰 객체가 있고 백화점 안에는 여러 점포들이 있는데 이도 객체라 할 수 있다. 백화점 안에 점포들은 모두 똑같은 모양으로 점포의 이름만 변경하여 백화점에서 물건을 팔수 있다고 가정하자. 그럼 점포의 모양은 계속해서 반복해서 사용하면 된다. 이처럼 객체를 한번 생성하여 여러번 재활용하게 되는 상황을 객체지향이라고 한다. Garbage Collection (가비지 컬렉션) 자바의 큰 특징중 하나이며 C/C++같은 언어는 메모리에 무언가를 생성하면 ..
-
spring[8] web application 이란 (web server와 was)개인 공부/spring 2021. 6. 2. 22:02
Web Server (웹 서버) http 기반으로 동작 정적 리소스와 was에서 제공하지 않는 부가 기능들 제공 HTML, CSS, JS, 이미지, 영상 등 정적 파일 로딩 Apache, Nginx Web Application Server (웹 어플리케이션 서버) http 기반으로 동작 정적 리소스 제공 가능 프로그램 코드를 실행해서 어플리케이션 로직 수행 tomcat, jetty, undertow 웹 서버(web server)와 웹 어플리케이션 서버(was)의 차이 웹 서버는 주로 정적 리소스 제공을 담당하고 was는 어플리케이션 로직 수행을 담당한다. 현대에는 둘의 경계가 애매해짐. 그 이유는 was가 혼자서 web server의 기능을 커버할 만큼 컴퓨터의 성능이 향상되었기 때문 그럼에도 web s..
-
인터넷 브라우저에 URL 요청을 했을 때개인 공부/spring 2021. 5. 21. 14:29
우리가 인터넷으로 url 요청을 했을때 일어나는 일에 대해서 내가 알고 있는대로 정리해보려고 한다. 이 페이지를 들어오기 위해서는 다음과 같이 요청을 해야하는데. 저 글자로 어떻게 이 페이지를 연결해주는 걸까? 우리가 저렇게 url을 입력했을때 브라우저는 다음과 같이 해석을 한다. 그리고 이 내용으로 브라우저는 통신을 준비하게 되는데 현재 가장 널리 쓰이는 방식은 TCP이다. 최근에는 UDP가 더 빠르고 TCP보다 유연하게 사용이 가능해서 좋다는 얘기가 있는데 그래도 TCP를 알면 UDP의 기본은 다 알고 가는거니까 TCP로 예시를 들어보겠다. 우리가 알고있는 이 네트워크 계층에서 Application 계층에서 HTTP를 통해 Transport로 우리의 url 정보를 전달한다. 그 후 Transport ..
-
spring[7] @Bean 생명주기개인 공부/spring 2021. 5. 20. 22:46
Bean의 생명주기 Service로직을 구현하는 구현체 Bean도 있겠지만 web application에서 DB connection pool이나 socket과 같이 application 시작 시점에 미리 생성해두고 종료 시점에 종료시키는 작업을 진행해야하는 경우도 있습니다. spring에서는 이 작업을 어떻게 실행하고 있는지 알아보겠습니다. DB에 연결하는 예시를 코드로 살펴보겠습니다. public class NetworkClient { private String url; public NetworkClient() { System.out.println("생성자 호출, url = " + url); connect(); call("초기화 연결 메시지"); } public void setUrl(String url..
-
spring[6] DI 의존관계 주입개인 공부/spring 2021. 5. 19. 16:14
DI (의존관계 주입) 의존관계 주입의 방법은 크게 4가지가 존재합니다. 생성자 주입 수정자(setter) 주입 필드 주입 일반 메서드 주입 생성자 주입 특징 생성자 호출 시점에 1번만 호출되는 것을 보장합니다. 불변, 필수 의존관계에 사용됩니다.만약 spring bean class에 생성자가 단 1개라면 @Autowired가 생략되어도 spring이 자동으로 주입해줍니다.위 코드와 아래 코드와 동일한 실행 결과가 나옵니다. @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolic..