웹 개발 개념 정리

2022. 1. 8. 23:21Etc

  • Web 구성 : Web Client & Server
    • Frontend : Web Client(Web Browser) 페이지 개발
    • Backend : Web Server 서비스 개발(Web Server / WAS)
  • FrameWork : 개발을 편하게 하고자 제공하는 틀(언어마다 다름)
    • Frontend FrameWork 
      1. js - Angular / React / Vue
    • Backend FrameWork
      1. js - express
      2. php - laravel
      3. java - spring
      4. python - django, flask
  • WebServer vs WAS(Web Application Server)
    • WAS = Web Server + Web Container(jsp, servlet을 수행할 수 있는 소프트웨어)
    • Web Server : 정적 컨텐츠(html, css, jpeg)를 제공하는 서버, 클라이언트와 통신하는 주체
      ex> Apache, Nginx, IIS
    • WAS : 동적 컨텐츠를 제공하기 위한 서버, Web Server의 요청에 의해 작동
      ex> Tomcat, Jeus, JBoss
  • WAS 구성
    • Servlet : web application 만들 때 필요한 인터페이스
    • Servlet Container : Servlet과의 규칙을 통해 기존 CGI 규약을 위임해 처리, Cycle 관리도 함 ex> Tomcat
  • Spring web MVC : Spring Framework에 있는 모듈로 MVC 패턴을 사용해 web service를 만드는 것을 말함(servlet을 사용)
  • WAS 동작 방식
    • client의 요청이 들어올 때마다 web Server에서 프로세스를 생성하여 각각의 CGI 구현체 사용 => 비효율성*CGI(Common Gateway Interface) : 동적 데이터를 처리하는 인터페이스(C, PHP, Perl등 다양한 언어 사용)
    • 동작방식 변경
      1. 프로세스를 스레드로 처리
      2. 각각의 CGI 구현체 대신 Singleton 패턴을 적용한 Servlet 구현체를 사용 : Singleton이기 때문에 메모리를 공유하고 이에 따라 상호배제 필요, Local Variable은 스레드마다 독립적으로 생성
  • Servlet Cycle(각 메서드는 Servlet Container(Tomcat)이 호출)
    1. init : Servlet Instance가 생성되는 곳
    2. service : 실제 기능이 수행되는 곳
      • abstract class HttpServlet extends Servlet // Http 메서드(GET, POST, PUT, DELETE)에 따라 doGet(), doPost(), doPut(), doDelete() 호출(각 내용은 개발자가 구현) 
    3. destroy : Servlet Instance가 제거되는 곳(보통 container가 종료되는 시점에 호출, 특정 servlet 로드/언로드 시에도 사용)

  • 기존 Servlet 사용 방법
      • url 마다 서블릿이 생성되고, Web Container(Tomcat)에게 알려주기 위해서 web.xml에 url과 서비스을 매핑시켜줌
    <web-app> 
      <servlet> 
        <servlet-name>member</servlet-name> 
        <servlet-class>servlets.MemberServlet</servlet-class> 
      </servlet> 
      <servlet-mapping> 
        <servlet-name>member</servlet-name> 
        <url-pattern>/member</url-pattern> 
      </servlet-mapping> 
    </web-app>​
    public class MemberServlet extends HttpServlet { 
      protected void doPost(HttpServletRequest req, 
          HttpServletResponse res) throws ServiceException, IOException { 
        String userName = req.getParameter("username"); 
        String passWord = req.getParameter("password"); 
    
        String result = doSomething(userName, passWord); 
    
        String htmlResponse = "<html>"; 
        htmlResponse += "<h2>Result : "+ result + "</h2>"; 
        htmlResponse += "</html>"; 
    
        PrintWriter writer = res.getWriter(); 
        writer.println(htmlResponse); 
      } 
    }​


  • Spring Web MVC에서 서블릿을 사용하는 방법 : Dispatcher Servlet
    1. web.xml에 Dispatcher Servlet을 등록 -> 설정 파일이 자동으로 등록됨(/WEB-INF/[servlet명]-servlet.xml
    2. 모든 요청을 Dispatcher Servlet으로 보냄
    3. Dispatcher Servlet 동작 과정
      1. Handler Mapping : 요청에 따라 적절한 컨트롤러를 찾는다(핸들러안에 컨트롤러 존재) 
        • Spring Framework에서 제공하는 Handler Mapping 방식 : 생성된 서블릿 설정파일에 명시해야 함
            1. BeanNameHandlerMapping(Default라 별도로 작성 필요 없음) 
          <beans ...> 
          ... 
            <bean name="/employee" class="com.easycompany.controller.EmployeeController"> 
            ... 
            </bean> 
          ... 
          </bean>​
            1. ControllerClassNameHandlerMapping
            2. SimpleUrlHandlerMapping
            3. DefaultAnnotationHandlerMapping
          @Controller public class EmployeeController { 
          	@RequestMapping("/Employee") 
              public String do() { 
              	// do something 
              } 
          }​
      2. Handler Adapter : Controller를 찾아 model & view 형태의 응답을 보냄
      3. View Resolver :  응답으로 넘어온 view는 string 타입이므로 실제 뷰를 찾는 과정 진행
      4. model(data)을 view에 심음

https://lob-dev.tistory.com/entry/CGI-Servlet-Servlet-Container

 

CGI, Servlet, Servlet Container?

1월 13일에 Notion에 정리했던 내용을 옮겨 적은 것입니다. 잘못된 내용은 댓글 부탁드립니다. 한동안 회사 일로 공부한 걸 게시할 시간이 없네요.. ㅠ CGI? (Common Gateway Interface) HTTP 프로토콜 기반의

lob-dev.tistory.com

https://m.blog.naver.com/acornedu/221128616501

 

JSP와 Servlet(서블릿) 비교

JSP와 Servlet?? 어떤 개념을 가지고 있고 어떤 차이가 있는지 알아보도록 하겠다. 1. Servlet 정확한...

blog.naver.com

 

 

 

'Etc' 카테고리의 다른 글

디자인 시스템  (0) 2021.10.27
모놀리틱 아키텍처 vs MSA 아키텍처  (0) 2021.10.20
IT 용어 정리  (0) 2021.10.20