찬란하게

웹 개발 HISTORY 본문

웹프로그래밍

웹 개발 HISTORY

체리핫 2023. 11. 25. 00:39

초기

- 정적 웹 페이지:

  • 초기 웹 개발은 주로 정적인 HTML 페이지로 이루어져 있었습니다.
  • 사용자의 요청에 따라 단순히 HTML 문서를 반환하는 방식이었습니다.

- 동적 웹 페이지와 CGI(Common Gateway Interface):

  • 정적인 HTML 페이지로는 동적인 컨텐츠를 생성하기 어려워졌습니다.
  • CGI는 서버 측에서 동적으로 프로그램을 실행하여 동적인 웹 페이지를 생성하는 방식이었습니다.
  • 그러나 CGI의 성능 문제와 복잡성으로 인해 개선이 필요해졌습니다.

 

JSP(JavaServerPage) 등장

JSP의 등장:

  • JSP는 Java 기반의 웹 개발을 위한 기술로 등장했습니다.
  • HTML 내에 Java 코드를 삽입하여 동적인 웹 페이지를 생성할 수 있도록 했습니다.

Servlet과 JSP 조합:

  • JSP는 주로 사용자 인터페이스(UI)를 구현하고, Servlet은 비즈니스 로직을 처리하는 역할을 수행했습니다.
  • 이는 기본적인 MVC 패턴의 아이디어를 가지고 있습니다. Servlet이 컨트롤러의 역할을 수행하고, JSP가 뷰의 역할을 수행했습니다.
// 예시 Servlet 코드
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name = "World";
        request.setAttribute("name", name);
        RequestDispatcher dispatcher = request.getRequestDispatcher("/hello.jsp");
        dispatcher.forward(request, response);
    }
}

 

<!-- 예시 JSP 코드 -->
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Hello JSP</title>
</head>
<body>
    <h1>Hello, <%= request.getAttribute("name") %>!</h1>
</body>
</html>

 

스프링의 등장!

  1. EJB의 복잡성과 Spring의 경량성:
    • EJB(Enterprise JavaBeans)는 Java 기반의 기업 애플리케이션을 개발하기 위한 기술이었습니다.
    • 그러나 EJB는 복잡하고 무겁다는 평가를 받아왔습니다.
    • 이에 대한 대안으로 등장한 것이 Spring 프레임워크입니다.
  2. Spring의 등장과 IoC, AOP 개념 도입:
    • Spring은 IoC(Inversion of Control)와 AOP(Aspect-Oriented Programming) 등의 개념을 도입하여 애플리케이션을 좀 더 간결하고 효율적으로 구성할 수 있도록 했습니다.
    • IoC는 객체의 생명주기와 의존성을 Spring 컨테이너가 담당하게끔 변경하였습니다.
    • AOP는 횡단 관심사를 모듈화하여 코드의 재사용성과 관리성을 향상시킵니다.
  3. Spring MVC의 도입:
    • Spring 프레임워크는 Spring MVC 모듈을 도입하여 더욱 강력한 웹 애플리케이션 개발을 가능케 했습니다.
    • Spring MVC는 기본적인 MVC 패턴을 제공하면서, 효과적인 웹 애플리케이션 개발을 위한 다양한 기능과 구조를 제공합니다.
// Spring MVC 예시 코드
@Controller
public class HelloController {

    @GetMapping("/hello")
    public String hello(Model model) {
        String name = "World";
        model.addAttribute("name", name);
        return "hello";
    }
}
<!-- Spring MVC에서의 View (hello.html) -->
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Hello Spring MVC</title>
</head>
<body>
    <h1>Hello, Thymeleaf! <span th:text="${name}"></span></h1>
</body>
</html>

 

스프링 부트의 등장

  1. Spring Boot의 등장:
    • Spring Boot는 Spring 애플리케이션을 더욱 간편하게 개발할 수 있도록 도입되었습니다.
    • 자동 구성, 내장 서버, 간소화된 설정 등의 특징으로 인해 애플리케이션 개발 및 배포가 더 편리해졌습니다.
  2. Spring Boot와 MVC:
    • Spring Boot는 내장된 Tomcat, Jetty, Undertow와 같은 서버를 제공하여 별도의 웹 서버 설정 없이도 간단한 웹 애플리케이션을 개발할 수 있습니다.
    • 또한, 간편한 의존성 관리, 자동 구성을 통한 설정 간소화 등이 Spring MVC 개발을 더욱 편리하게 만들었습니다.
// Spring Boot와 Spring MVC 예시 코드
@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello, Spring Boot!";
    }
}