개발환경 구축, 웹 기초

예지성준·2024년 5월 12일
0
post-thumbnail

개발환경 구축

servlet

인텔리제이 기준

  • plugin: Smart Tomcat
  • tomcat 10버전

    WAS(Web Application Server)
    👩‍🏫참고)
    tomcat9 -> javaee8버전, 패키지명 javax.
    tomcat10 -> jakrata ee 10, 패키지명 jakarta.

🎨다운로드 후 압축 풀고 내 이름폴더에 아파치 톰캣 폴더 넣어주기 + gitignore에 경로 추가

+인코딩

자바의 웹기술: Servlet

jakarta 33 10 doc api


jakarta.servlet-api

jakarta.servlet.jsp-api
-> 개발시에만 필요, 실제 구현체는 각 웹서버가 가지고 있으므로 배포시에는 배제

🎨compileOnly 'jakarta.servlet:jakarta.servlet-api:6.0.0'

🎨compileOnly 'jakarta.servlet.jsp:jakarta.servlet.jsp-api:3.1.1'


src/main/webapp: 기본 웹 경로

  • HTML, JS, CSS, JSP

src/main/webapp/WEB-INF: 설정들을 주로 넣음, 기타 라이브러리

  • web.xml : 애플케이션 배치 설명자 파일
  • 서블릿, 필더 등등 배치에 대한 설정
  • lib : 자바 라이브러리 jar
  • classes : 컴파일된 class

🎨web.xml파일 참고.. 인텔리제이에 끌어오기

참고해서 코드 가져왔당굴당굴당굴이

🎨 톰캣서버 구축
edit configuration

  • smart tomcat
    main의 하위가 다 classpath


🌟웹 기초🌟

WAS(Web Application Server)

1. 요청과 응답 이해하기

  • 서버는 클라이언트가 있기에 동작함
  • 클라이언트에서 서버로 요청(request)을 보내고, 서버에서는 요청의 내용을 읽고 처리한 뒤 클라이언트에 응답(response)을 보낸다.

요청(request) : 브라우저가 서버에 요청(클라이언트)
응답(response) : 서버가 응답

요청 전문

헤더(header)

: 요청에 대한 정보

  • 요청주소(URI, URL)

    • URI(Uniform Resource Idendifier)
    • URL(Uniform Resource Locator)
  • 요청 방식(method) - GET, POST
    GET 목적: 서버 자원 조회
    POST 목적: 데이터를 서버쪽에 추가/변경

  • content-type: 요청 body쪽의 데이터 형식을 알려줌 기본형식 ex) application/x-www-form-unlencoded; , /application/json;

  • 요청한 브라우저의 환경 정보(언어설정) Accept-Language ..
  • 브라우저 정보(종류)(User-Agent): 모바일인지 PC인지 어떤 환경인지...
  • 쿠키 정보(브라우저에 저장된 데이터의 일종)
    ...

바디(body)

  • 요청쪽에서 서버로 전송하는 데이터(요청 방식: POST 메서드)

응답 전문

헤더(header)

  • 응답 데이터에 대한 정보

    • body 데이터 형식: Content-Type

      ex) content-type: text/html -> 브라우저는 응답한 문자열 데이터 -> HTML형식으로 인식 -> Document객체로 변환

    • 응답 서버에 대한 정보

    • 서버쪽에서 브라우저 행위 통제
      Location: 주소 -> 브라우저의 주소를 변경하고 페이지 이동
      Refresh: 초 -> 초 주기로 브라우저 새로고침
      Cache-Control: no-cache -> 캐시 통제
      Set-Cookie: 키-값;

바디(body)

  • 서버가 응답한 데이터

톰캣서버 실행시

-> text/html로 해석이 안된경우 ??! 응답 데이터를 로드할수없다...


2. HTTP (HyperText Transfer Protocol): 웹페이지를 전송하는 규약

  • HTML 형식의 문서 전송 프로토콜

HTTPS
S: Secured

HTTP: 기본 포트 - 80
HTTPS: 기본 포트 - 443

👩‍🏫참고)
FTP://
(File Transfer Protocol)
SFTP://
WS://(웹소켓)

3. 헤더(header)

4. HTTP 상태 코드

  • 응답 상태 코드

2xx:
200(OK) : 정상 응답(서버를 거친 후 응답)
201(CREATED) : 서버에서 데이터 정상 반영
204(NO CONTENT): 정상응답, 바디 데이터 없음(출력X)

3xx:
301(영구이동), 302(임시 이동): 페이지 이동시 + UserAgent 변경됨

304(캐시됨): 임시 메모리에 저장됨
브라우저의 기본 동작 - 일정 기간동안 브라우저의 자원을 씀, 일정 기간이 지나면 지워지고 다시 서버에 요청을 보낸다.

  • 서버쪽에서 브라우저에 대한 행위(명령)
    • Location: 주소 -> 브라우저의 주소 변경 -> 이동
    • Set-Cookie: 키=값; 키=값; .... -> 브라우저에 쿠키 저장
    • Refresh: 주기 -> 주기대로 새로고침...
      Cache-Control: no-cache -> 캐시 저장 XML
      참고) 캐시 -> 임시 데이터

4xx: 클라이언트 오류 (사용자쪽 오류)

400(Bad Request - 잘못된 요청) : 요청 데이터를 정해진 대로 전송하지 않은 경우(서버쪽이 지정한 형식과 맞지 않는 경우)
401(Unauthorized - 접근 권한 없음): 관리자 페이지
403(Forbidden - 금지됨)
404(Not Found - 페이지 없음) + 자원을 못찾았을때
405(Method Not Allowed): 허용되지 않은 요청 메서드

5xx:

500(Internal Server Error) : 코드에 오류가 있을때, 서버 장비에 물리적 문제가 있을때
502(BAD GATEWAY): 불량 게이트웨이
503(Service Unavailable): 서비스 이용 불가, 사이트 유지보수/서버 이전시 임시로 서비스를 중단 시킨 경우

5. HTTP 요청 메서드

1) GET

  • 목적: 서버의 자원 조회 / 검색

ex) 검색창 날씨 조회 요청 - 데이터가 주소창에 담겨있다!

https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=%EC%98%A4%EB%8A%98+%EB%82%A0%EC%94%A8
https//search.naver.com/search.naver
? : 질의문
where=nexearch
&
sm=top_hty
&
fbm=0
&
ie=utf8
&
query=날씨

  • ? 뒤에 값들 -> 쿼리스트링(querystring): 조회를 위한 힌트/데이터

ex) https//dm.n-mk.kr/order?limit=20&sopt=all&skey=&idProductCategory=&dateType=createdAt&sdate=2023-10-04&edate=&orderStatus=confirmOrder&idDeliveryPolicy=12&idDesigner=14

  • 요청 데이터가 주소에 포함되어있다.
  • 요청 바디는 비어 있다.

👩‍🏫기타 요청 메서드

  • DELETE: GET방식의 일종

2) POST

  • 목적: 서버에 데이터 작성, 변경, 등록

요청 헤더 : Content-Type: application/x-www-form-urlencoded
✔️형식 -> urlencoded 방식
요청 바디 : subject=%EC%A0%9C%EB%AA%A9&content=%EB%82%B4%EC%9A%A9

한글 그 자체로 네트워크를 통한 전송은 불가능
-> 전송 가능한 숫자 형태로 변경(16진수, 사이사이 %) -> URL인코딩 -> 서버전송 -> 서버수신 -> URL디코딩 -> 원래형태

✔️ URL 인코딩: 데이터를 안전하게 전송하기 위해 한글데이터를 -> 16진수로 바꿔서 보냄

👩‍🏫참고)
Content-Type: application/json
{"키": "값", "키": "값"}

  • 기타 요청 방식(POST계열)
    • PUT : 데이터의 전체 치환
    • PATCH : 데이터의 부분 치환


개발환경 구축2

maven

tomcat10

  • Servlet 6.0
  • jakartaee 10 / jakarta.
    • servlet api
    • servlet.jsp api

tomcat

압축 풀고 이름폴더에 추가 ~

pom.xml

maven repository

<dependency>
      <groupId>jakarta.servlet</groupId>
      <artifactId>jakarta.servlet-api</artifactId>
      <version>6.0.0</version>
      <scope>provided</scope>
    </dependency>

최신버전

<dependency>
    <groupId>jakarta.servlet.jsp</groupId>
    <artifactId>jakarta.servlet.jsp-api</artifactId>
    <version>3.1.1</version>
    <scope>provided</scope>
</dependency>

maven sync버튼 ~

추가완료되었으면 문제없이 잘 된것!

src new Directory에 main/test 추가하기

  • 웹 전용 경로
    jsp가 인식 할 수 있는 기본 경로

webapp내부에

  • WEB-INF 디렉토리: 설정파일들 들어갈 곳
    index.jsp 파일 -> 폴더만 접속해도 기본 접근이되는 기본 페이지 파일
    • localhost:3000/day01/index.jsp
      -localhost:3000/day01/
    • Hello 작성해둠

크롬으로 접속하기

📕한글 입력시 한글깨짐 현상이 일어난다 -> 응답헤더 설정
요청헤더 설정
<%@ page contentType="text/html; charset=UTF-8" %>


API(Application Programming Interface) : 애플리케이션 프로그래밍 명세
JDBC API

profile
꽁꽁 얼어붙은 한강 위로 😺

0개의 댓글