[24.07.25] Servlet+JSP+JSTL_서블릿 기초

ANGELA·2025년 1월 8일

[KB]학습내용정리

목록 보기
23/57

01. 서블릿

1. 톰캣 다운로드

  • 제일 첫번째는 실제 환경에서 쓸때 다운로드
  • 개발환경에선 64비트 쓴다.

2. 자바 종류

  • SE,EE 같은 JVM 쓰는데, 라이브러리에서 차이 난다.
    • 서버용 라이브러리 따로 분리 되어있음
  • 오라클이 SE 관리
    • EE를 아파치에 넘김 → 자카르타 EE로 바꿈

3. 구조

3. 작동

  • 어노테이션에 있는 value 부분이 중요하다.
  • 앵커태그 : get 요청
  • http는 문자 기반 → writer, reader 를 쓴다.

4. 어노테이션

  • /맵핑명 하나 있으면 value설정 한것이다
    • name은 생략가능
  • value가 디폴트
  • 중괄호 : 배열 초기화를 의미한다.

05. 아키텍쳐

  • 아파치가 경로 있는지 톰캣에 물어봄
  • 톰캣이 찾아봄 없으면 정적에서 찾아봄
  • 정적에도 없으면 404에러

    1) Request

  • getParameterValues
    - 체크박스 등 name은 같은데, 값이 다를때 쓴다
    - 없는 파라미터 리턴 → null
  • getParameter(String name) 은 리턴값이 String

2) Response

  • getOuputStream() : 이미지, 오디오 내보낼때

06. 생명주기

  • 서비스, doget(), dopost() : 요청 올때마다 실행한다.

응답처리

  • 문자셋 설정 필수! → 안해주면 그 사람 언어로 셋됨

07. 서블릿, jsp

  • 서브릿 : 비지니스 로직
  • jsp : 태그들만 있다.
  • 이거 2개 사용하는것이 모델2 방법

08. 오후수업

한글 깨짐 현상 해결 방법

[IntelliJ] Tomcat Console, File Encodings 한글깨짐 해결방법

정적 : 이미지, 오디오 등 내 컴퓨터에 있는거 내 html 파일을 그냥 주면된다. 이게 아파치

여기에 tomcat을 붙이면 동적이 된다. : 자바가 돌아갈 수 있는 환경이 된다.

지금 몇시에요? 정적 희박 → 다이나믹하니까 동적

hello 요청 → 지금 3시 입니다.

지금 4시 입니다.

동적이 들어갈 수 있는 서버가 따로 필요 → 이게 WAS인데 톰캣이 와스 종류중 하나

자바로 쓸 수 있는 뭐시기가 톰캣 

프로그래밍으로 돌려서 응답을 할수 있는게 동적 이 되는것

왜 굳이 톰캣? → 우리는 자바로 프로그램 만들어서, 이 프로그램을 웹 서비스로 변환해서 응답하려고

톰캣이 켜져있는 이유는 24시간 응답 해줘야하니까

jsp 대체 할 것은 많다

근데 지금은 자카르타서버 페이지였다

예전에 자바서버 페이지 등 이름 자주 변경됨 → 대충 jsp다 하면 알아들음

vue로 했는데 html로 됐잖아? 컴퍼넌트 작성했는데, html로 번역되서 웹 문서화되서 html였잖아

지금은 vue가 자바 톰캣이다  

위 로직이 아래 이미지

# http
웹은 문서를 주고받음. 이 문서를 주고받는 약속이 protocol (규칙).
**http 헤더(request)**에는 받아야 할 곳, 내가 누군지에 대한 요청, 문서를 어떤 형식(텍스트, 이미지)로 받을 것인지 등이 포함된다.
## 요청 method에 따른 주고받는 방식
- get: http request에서 url에 표현할 수 있음. url parameter를 이용하는 것 (?id=1 이런 식으로). 그래서 본문이 없는 것과 마찬가지다.
http 요청과 응답은 요청 자체는 인터넷을 통해 전송되어 http를 이용하면 암호화되지 않아 공개자료라고 할 수 있음.
- post: body의 parameter로 요청을 해서, 앞단(url에 공개적으로)에 보이지 않도록 함
어떤 언어로 받겠다, 어떤 인코딩으로 받겠다까지 들어가게 됨
## 결론)
http request
- header - method(get인지, post인지 등), url 등
- body - post의 요청하는 본문
이걸 응답하거나 처리하는 것이 웹 서버
# 서버
## 우리가 배운 것은 apache tomcat !, 웹서버와 웹어플리케이션 서버의 차이점
### apache vs apache tomcat
웹서버 중 일종이다. 나의 ip로 누군가가 요청을 했을 때 응답을 해줌.
클라이언트로부터 요청을 받고 html, css, js를 응답해주는 기능을 가진 것이 apache임.
이 방식은 ‘동적이지 않고 정적’임.
보내지는 정적파일은 기본적으로 이 3(아까 말한 html, css, js)의 파일이 있음.
비디오나 이미지 등도 정적파일의 일종이다. (있는 그대로 보내주는 것이므로, 동적으로 어떤 변화 없이 그냥 그대로 전송하는)
이 역할을 하는 것이 apache.
이 뒤에 tomcat 프로그램을 붙이면 웹어플리케이션 서버가 됨
즉,
- 웹서버 = 요청에 정적파일을 응답
- 웹어플리케이션 서버 = 동적으로, 문서를 바꿔서 만들 수 있는 환경을 만듦. 자바를 이용함.
ex.
요청: “지금 몇시인가?(동적기능이 추가된) 응답: 다이나믹하게 응답할 때마다 바뀜.
동적으로 웹문서를 generate해준다고 생각하면 됨.
우리가 다룬 것은 웹어플리케이션 서버인 톰캣이다
왜냐면, 우리가 자바로 프로그램을 만들고 웹문서를 바꿔치기 해서 응답을 하기 때문이다.
이때 톰캣 서버를 미리 켜놓는 이유는,수시로 오는 요청에 계속해서 동적으로 응답할 수 있도록 하기 위해서이다.
### JSP
웹 어플리케이션 서버에서 응답이 가능한 것들 중에는, 톰캣의 jsp가 있다.
jsp: 지금 현재는 자카르타 서버 페이지, 예전에는 자바 서버페이지 (그전에는 자바 서블렛 페이지) — 이름이 변경된 것이라고 보면됨. jsp면 이 이름 바뀐 것들을 칭한다고 보면 됨.
## 구조
그 구조가 다음과 같음 (슬랙에 올려주신 구조도)
![Untitled](https://prod-files-secure.s3.us-west-2.amazonaws.com/955e5b0a-2ea8-4faf-9497-7363d6df76f8/0f977418-0d79-4837-98a7-484436664c0c/Untitled.png)
웹 서버가 아파치.
자바는 어디서든 돌 수 있음 (pc, 안드로이드, 태블릿 모든 환경에서 가능) → 어디서든 자바 객체가 만들어짐 = 이는 즉 언제든 웹 서버응답을 받을 수 있음을 뜻함
서블렛은 자바로 이뤄져있음. (자바 확장자, 자바 파일)
여기서 html 파일을 따로 작성해줌.
PrintWriter 객체로 html에 작성할 것을 직접 알려주게 됨.
그것을 수동으로 했던 것이 servlet 방식임. (서블릿 코드 내에서 html 내용을 직접 작성하게 됨)
그러면 주소는 어디에 매핑되는가?
클라이언트가 특정 url을 요청하면, 그 요청은 웹서버를 통해 서블릿으로 전달됨.
요청 url에 따라 어떤 서블릿이 해당 요청을 처리할지 매핑되어 있음.
서블릿 컨테이너(Apache Tomcat)는 클라이언트 요청을 받아 해당 URL에 매핑된 서블릿을 찾아 실행함.
그러면 서블릿은 요청을 처리한 후, PrintWriter을 사용해 HTML을 동적으로 생성함.
그러면 서블릿은 java객체로서 동적으로 웹문서를 작성하고 이를 응답 response으로 반환함.
→ 서블릿을 특정 url에 매핑하는 방식이 annotation !!
어떤 주소에 annotation을 붙일 수 있음 (과거에는 명세, pom.xml처럼, 어떤 주소(url)에 요청을 하면 어떤 객체(서블릿)가 응답하는지 일일이 태그를 작성했엇음.
지금은 어노테이션으로 알아서 톰캣이 알아들음)
이때 PrintWriter는  http에 있는 것인데,
서버가 응답을 할 때, text/html 문서를 만들고 그 응답에 그 문서를 보내는 것이다.
## JSP의 <%= %>
아까 말했듯, JSP는 서버 측에서 동적으로 HTML 을 생성하기 위해 사용되는 기술임. html 코드에 java 코드를 삽입해 동적 콘텐츠를 생성할 수 있게 함.
이때 <%= %>는 표현식을 출력하는 데 사용돼서. 이 안에 있는 java 코드는 실행된 결과가 html로 출력됨., html 작성의 역할.
다른 태그가 없어도 jsp에서 내보내줌 . 반복문, 조건문 등을 함께 처리할 수 있음.
## 참고) 톰캣과 서블렛 버전 맞추기
서블렛 버전은 톰캣에서 지원하는 서블렛이어야 한다.
프로젝트 빌드할 때, embedded tomcat으로 돌리는 경우도 많다.
profile
혼자 보려고 만든 기록장 | 또또는 귀여워 🐈‍⬛

0개의 댓글