배움 __IL/TIL 1기

TIL : 38번째- 230126 [1-4-목]

Mo_bi!e 2023. 1. 26. 19:57

I. 서버관련

1. 최근 흐름

최근에 SSR 에서 CSR로 바뀌고 있다

 

2. 서블릿

톰캣으로 웹서버 띄울수있는데, 톰캣을 엄밀히 말하면 webserver기능이 추가된 WAS이다.

 

(1) 퀴즈: 

1) WAS 와 WS(web server) 차이?

 

2) 서블릿(서버 어플리케이션 let)의 의미

서버 어플리케이션을 조각? 단위로 개발하게 된다고 했는데, 이것을 실행하는 유도하는 주체 누구?

실제로 실행 담담하는 주체 누구??

이것이 실행되는 흐름?은 어떻게 되는지?

 

 

(2) 해설

1) 

WAS 는 동적웹 / WS 정적앱

 

was 는 서블릿기능가지고있지않음, 톰캣이 가지고 있음

톰캣이 웹서버 가지고있음

 

get reauest 할때 그냥 정적으로 실행해야하는건 was(어플 실행해주는 : 실행환경), 실행하는것이 문서이고 이 문서로 돌려 받음

실행주체가 was이고 이것은 개념적인것에 불과하다. 이를 실제로 이용은 톰캣이다.

was가 다 포함하는게 아니라 톰캣 때문이다.

 

2) 

서블 '릿' 은 하나의 기능단위로 나누기 때문이다.

실행유도 주체클라이언트의 요청이다

 

 

3. 기존 자바 프로그램과 서블릿 프로그램에서 달라지는 부분

자바와 프로그래밍사이에 만 추가된거임 service 메인함수로 볼 수있다.

 

서블릿매핑으로 서블릿 클래스의 것을 nana.txt로 하게끔 한다

 

 

4. 서블릿 생명주기

여기서 중요한건 3가지 노란색 메소드이다

이거 3가지는 부모가 가지고있는 코드의 흐름이다.

 

5. 서비스 오버로드

우선 서블릿컨테이너에서 서비스 메소드메인함수처럼 볼 수있다.

보통의 프로그램들이 main함수를 먼저 찾는것 처럼 서비스 메소드를 먼저 찾는다.

 

 

<오버라이드 하기 전>

HtppServlet 에서 NanaServlet 은 상속받는다.

 

<오버라이드 후>

오버라이드를 하고 새로운 객체 만들어주기 위해서 new를 해준다.

 

사실 service 와 destory 사이에 do 시리즈 함수들이 있다.

사용자가 get인지 post인지 put했는지 등을 고려해야한다.

여기서 serive()자체를 오버라이딩안하고 doget() 을 오버라이딩 가능하다

이 경우 두개의 메소드를 동시에 하는 경우 service가 먼저 실행된다.

 

web은 요청내용은 여러가지가 있다.

그 중에서 get post put요청이 다양하다 아니면 서비스에서 몽땅 다 할수도있다.

6. 웹의 요청방법

HTTP 메소드 : GET / POST / PUT / DELETE 

이런경우 요청방식은 다양하게 가능하다

우측(CSR)은 과거에 get, post만 가능할 때 따로 저렇게 del edit을 해주어야한다.

get delete 의 경우 쿼리없이 데이터를 바로 넣어준다

get은 목록 post는 목록에다가 새로운 내용포함시켜주기

 

7.  스태틱하게 데이터 준비해서 해보기

package com.newlecture.web.api.menu;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import com.newlecture.web.entity.Menu;
//import java.awt.Menu;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;


@WebServlet("/admin/menus")
public class ListServlet extends HttpServlet{


//	@Override
//	protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
//		// TODO Auto-generated method stub
//	System.out.println("service call");
//		super.service(arg0, arg1);
//	}
//	
	
	static List<Menu> list;
	
//객체만드는것 상관없이 전역적으로 미리 실행하는 것임 
	//스태틱 변수만 여기 조기화 가능 함 
	//그래서 전역공간에 초기화 해야한다.
	static {
		list = new ArrayList<Menu>();
		
		list.add(new Menu(1, "아케리카노 ", 4000, ""));
		
	}
	
	
	//생성자 인데 스태틱에 하기는 어려움 
	public ListServlet() {
		// TODO Auto-generated constructor stub
	
	
	}
	
	//지난시간의 service 와 달리 이번에는 doget을 한
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		//이전에 배워야 하는거는 2가지이다 .
		//리플렉션
		// 어노테이션  
		
		
		//xml과 josn 방식 두가지 중 선택한다. 
		String json = "{";
		
		for(Menu m : list)
			json += "{\"id\":";
		
		
		return ;
	}
	
	
}
package com.newlecture.web.entity;

public class Menu {

	private int id;
	private String name;
	private int price;
	private String img;
	
		
	//생성자(기본, 오버로드)
	//geeter //setter
	//toString()
    
    
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	public int getPrice() {
		return price;
	}
	public void setPrice(int price) {
		this.price = price;
	}
	
	public String getImg() {
		return img;
	}
	public void setImg(String img) {
		this.img = img;
	}
	
	@Override
	public String toString() {
		return "Menu [id=" + id + ", name=" + name + ", price=" + price + ", img=" + img + "]";
	}
	public Menu(int id, String name, int price, String img) {
		super();
		this.id = id;
		this.name = name;
		this.price = price;
		this.img = img;
	}

	
	
	
	
}

getter 와 toString menu 이렇게 하는것이 기본적인 데이터 구조로서 해야하는것이다.

 

 

 

 


1. 보충

 

(1) 서블릿 매핑하는 이유

 

 

 

(2) WAS / 톰캣 / 서블릿

WAS == 톰캣 / (톰캣 ( 서블릿 ))

WAS는 동적웹을 실행하기 위한 개념적인것이고, 톰캣은 WAS를 실제로 실행시키기 위한 프로그램이다

서블릿은 톰캣의 여러 기능 중 하나이고, java파일로서 실행을 한다 (오버라이딩 이용)

 

 

 

(3) 자바 <> 표시 , 제네릭

<> 는 제네릭을 의미한다

자세히 알아보려고 헀으나 나머지 사항은 추후에 공부한다.

 

 

 

2. 회고 

1) 서블릿 개념을 다시 보니 많은것을 잊었는데, 계속 외면하고있다가 다시보면서 회의하고 하니 흐름이 잡혀서 다행이다.

'배움 __IL > TIL 1기' 카테고리의 다른 글

TIL : 40번째- 230130 [1-5-월]  (0) 2023.01.30
TIL : 39번째- 230127 [1-4-금]  (0) 2023.01.28
TIL : 37번째- 230125 [1-4-수]  (0) 2023.01.25
TIL : 36번째- 230117~20 [1-3-화~금]  (0) 2023.01.23
TIL : 35번째- 230116 [1-3-월]  (0) 2023.01.16