부스트코스 웹 프로그래밍 BE 영상을 보며 공부한 것을 간단히 정리한다.
1. 자바를 이용한 웹 개발 기초
- 웹 서버와 WAS란?
- 웹 서버
- 클라이언트에에게 HTML 문서나 각종 리소스를 응답을 전달해주는 역할.
- 서버 범위 중 클라이언트와 가장 맞닿아 있음.
- ex. Nginx, Apache
- WAS (Web application server)
- 웹 어플리케이션이 동작하도록 지원하는 목적을 가짐.
- 즉, 서비스 및 비즈니스 로직을 담고있는 서버.
- ex. Tomcat
- 보통 WAS 도 웹 서버 기능을 내장하지만, 규모가 커지면 이 둘을 분리.
- 웹 서버는 주로 정적 컨텐츠를, WAS 는 동적 컨텐츠를 지원.
- 웹 서버
- Servlet 과 JSP
- Servlet
- 웹에서 동작해야하는 로직을 담고있는 클래스(코드)
- uri 매핑, 다른 로직에 전달, WAS 로 응답 전달 등의 기능을 함.
- init -> service -> destroy 의 라이프 사이클을 가짐.
- JSP
- 응답 웹 페이지 구성을 하는 파일로, html 과 유사함.
- 해당 JSP 파일 요청이 들어왔을 때, Servlet 클래스 및 인스턴스로 구현됨.
- 둘 다 Tomcat 에 기반하여 작동.
- 보통 Servlet 파일로 요청을 받고, JSP 파일로 Foward 함.
- Servlet
- Scope
- 서블릿에서 주어지는 객체들은 일련의 scope를 가지고 있음.
- page < request < session < application 순 으로 scope 가 커짐.
- 즉 scope 이 커질수록, 어떤 객체에서든 접근할 수 있음.
- '데이터'를 저장할 때, Scope을 구분하여 사용.
- Maven
- 빌드 및 라이브러리 의존성 관리 등을 해주는 도구
- 별도의 양식과 디렉토리 구성이 존재하며, 정해진 관습이 있음.
pom.xml
에서 빌드 및 의존성 설정.
- JDBC
- Java 기반의 웹 어플리케이션과 외부 DB 를 연동시켜주는 라이브러리
Connection
,PreparedStatement
객체로 Java 코드로 SQL 쿼리문을 작성하여 실행 가능.
- WEB API
- 일종의 코드 디자인 가이드
- 자원에 대한 행위는 HTTP Method 로 표현해야 한다.
- POST(생성), GET(조회), DELETE(삭제), PUT(갱신)
- URI 는 정보의 자원을 표현해야 한다.
- ex.
GET /members
는 멤버의 모든 정보를 달라는 요청임. - 자원은 보통 복수명사를 씀. (
member (x)
members (o)
)
- ex.
- 슬래시 구분자는 계층을 나타날 때 사용
- URI 마지막 문자로
/
를 넣지 않음. - 필요한 경우
_
사용 하지않고,-
사용. - 소문자만 사용
- URI 마지막 문자로
- 상태 코드
- 200 번대는 주로 요청-응답 성공한 경우.
- 400 번대는 주로 클라이언트(요청) 쪽에 의한 오류의 경우.
- 500 번대는 주로 서버(응답) 쪽에 의한 오류의 경우.
2. Maven 프로젝트 구성
/src
/main
/java
/com.examples (group_id)
/App.java
/resources
/pom.xml
이중 Maven 이 빌드에 참조하는 파일은 pom.xml
임.
다음과 같이 생김
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!--프로젝트 관련 내용-->
<modelVersion>4.0.0</modelVersion>
<groupId>com.examples</groupId>
<artifactId>diexam</artifactId>
<version>1.0-SNAPSHOT</version>
<name>diexam</name>
<url>http://www.example.com</url>
<!--pom.xml 내에서 쓸 변수들 정의-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>4.3.14.RELEASE</spring.version>
</properties>
<!--이 프로젝트에서 사용하는 외부 라이브러리 목록-->
<!--이는 maven repository 에 등록된 라이브러리들을 참고하여 원격으로 다운받음.-->
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<!--이 프로젝트를 빌드할 때 사용하는 플러그인 목록-->
<build>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
</build>
아직 나도 정확히는 모르겠지만, 대략 이런 식으로 구성되어 있다.
모든 내용을 다 알지는 못하지만, 하나씩 감만 잡아본다.
'더 나은 엔지니어가 되기 위해 > 지금은 안쓰는 자바' 카테고리의 다른 글
[부스트코스 웹 프로그래밍] 인터셉터와 아규먼트 리졸버 (0) | 2020.01.24 |
---|---|
[부스트코스 웹 프로그래밍] 쿠키와 세션 (0) | 2020.01.24 |
[부스트코스 웹 프로그래밍] 스프링 MVC (2) | 2020.01.23 |
[부스트코스 웹 프로그래밍] 스프링 JDBC (1) | 2020.01.20 |
[부스트코스 웹 프로그래밍] 스프링과 DI 컨테이너 (0) | 2020.01.19 |