Web(1)

위수현·2023년 3월 14일
0

웹의 등장 배경

web환경

  • CS환경이 배포가 어렵다는 단점을 보완한 모델
  • 브라우저만 있으면 어디서든 쉽게 접근 가능

장점

  • OS와 브라우저의 제품에 상관없이 어디서든
    동작 가능
  • 수정된 부분을 쉽게 배포가 가능함

단점

  • 성능이 떨어지고, 속도가 느림
  • 너무 다양한 기술이 접목되어 관리가 어려움

HTTP 통신

  • HTTP란 Hyper Text Transfer Protocol의 약자로 HTML파일을 전송하는 프로토콜이라는 의미를 가진다.
  • 현재는 JSON, Image 파일 등 또한 전송한다.
  • HTTP 통신은 클라이언트에서 서버로 요청을 보내고 서버가 응답하는 방식으로 통신이 이루어진다.
  • 응답에는 클라이언트의 요청에 따른 결과를 반환한다.
  • 클라이언트의 요청이 있을 때, 서버가 응답하는 방식.
  • 단방향 통신

통신 프로토콜

  • 통신 프로토콜 또는 통신 규약은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고받는 양식과 규칙의 체계이다.
  • 통신 프로토콜은 신호 체계, 인증, 그리고 오류 감지 및 수정 기능을 포함할 수 있다.

프로토콜의 예시

  • HTTP : Hyper Text Transfer Protocol
  • HTTPS : Hyper Text Transfer Protocol Secure
  • FTP : File Transfer Protocol
  • SFTP : Secure File Transfer Protocol
  • Telnet: Terminal NETwork
  • SSH : Secure SHell
  • SMTP : Simple Mail Transfer Protocol

정적 웹 페이지(Static Web Pages)

  • 정적 웹 페이지는 언제 접속해도 같은 응답을 보내준다.

  • 일단 HTML, CSS, JS 파일 등이 서버에 업로드되면 개발자가 수정하기 전까지 매번 같은 파일을 브라우저에 건네준다.

  • 즉, 웹 서버가 정적 웹 페이지에 대한 요청을 받은 경우, 서버는 추가적인 처리 과정없이 클라이언트에게 응답을 보낸다.

  • 예를 들어, 회사나 개인의 소개 페이지가 정적 웹페이지의 좋은 예시이다.

동적 웹 페이지(Dynaminc Web Pages)

  • 웹 서버가 동적 웹 페이지에 대한 요청을 받은 경우 서버는 추가적인 처리 과정 이후 클라이언트에게 응답을 보낸다.

  • 동적 페이지는 방문자와 상호작용하기 때문에 페이지 내용은 그때그때 다르다.

  • 댓글, 날씨, 주가정보 등과 같이 정보 변경이 찾은 곳에 많이 사용된다.

  • 동적 페이지란 요청에 대해서 각각 다른 내용을 보여준다.

  • 사용자(클라이언트)가 URL을 통해 서버에 웹 페이지를 요청했을 때, 서버는 사용자에게 맞는 HTML문서를 생성하여 사용자에게 응답한다.

  • 매번 다른 값을 전달이 가능하다!

웹 호스팅

  • 웹호스팅이란 개발자의 홈페이지(웹사이트)를 올려놓는 안터넷상의 곤공간을 임해재 주는 서비스

8080

-> 포트번호, 특정 컴퓨터에서 통신을 위해 열려있는 문

-> 모든 컴퓨터는 0~65535까지의 포트번호를 가지고 있다.

-> 이 포트번호를 통해서 통신이 진행될 수 있으며 기본적으로 모든 포트번호는 차단되어있다.
(포트를 차단하는 역할을 하는 프로그램이 방화벽이다.)

JSP란?

  • JSP는 HTML 문서에 내부적으로 자바문법을 사용할 수 있게하는 스크립트 언어이다.

Spring Framework란?

  • Spring은 다양한 개발을 빠르게 적용할 수 있게 만들어 놓은 도구이다.

tomcat 세팅

환경세팅

  • 아파치 톰캣
    https://tomcat.apache.org/whichversion.html

    Supported Java Versions 확인 후
    왼쪽 메뉴 Download (나는 ver9) -> 해당하는 버전 다운 (나는 64-bit Windows.zip) -> 다른이름으로 저장 -> gb -> util폴더

  • 해당 폴더에 알아서 풀기

  • 이클립스 실행 -> 파일 경로지정

<초기에 경로지정을 못하고 launch를 했다면?>

실행 후 - > file - > switch workspace -> Other 에서 경로 재설정 가능


<프로젝트 설정>

Create a project -> Dynamic Web Project 검색후 -> Next
-> name 설정 day00 -> Configuration -> Modify -> java 버전선택(나는 ver11) -> OK

Java의 더 상위버전을 사용할 수 있으나 tomcat과 java의 호환성 문제가 존재할 수 있기에 tomcat ver9과 java ver11을 사용했다

next -> next -> Generate we.xml deployment descriptor 체크박스 선택후 -> Finish -> day00 프로젝트 생성 완료


<서버설정>

// Servers 클릭 버튼이 없다면
Servers 탭에서 -> 마우스 오른쪽버튼 -> new -> server

Apache 버전 선택 후 name변경(나는 day01) - > next
Browse 눌러서 경로선택 -> next
Availlable 에서 해당하는 파일선택 후 add
Finish


<서버 활성화 확인>

프로젝트 -> src -> main -> webapp -> 우클릭 -> 새로만들기 -> html -> html에 테스트 문구 작성 -> 서버 활성화 -> localhost:****로 이동 -> 결과값 확인


서버 스타트 오류 시 (동일한 포트넘버가 사용중일 때)
Servers -> 해당파일 더블클릭(해당 서버의 Overview가 열린다)
Ports 에서
HTTP/1.1 포트넘버 확인 후 변경 (0~ 65535범위내 사용)

Ctrl + s 눌러서 저장

Modules 탭에서
파일 선택후 - > Edit

path: 를 / 로 변경

OK

Ctrl + s 눌러서 저장


호출

http://localhost:8081/


<언어변경>
window - > preferences -> enc 검색 -> 항목들을 UTF-8 Apply & Save


<servlet-api.jar파일 가져오기>

내PC -> D드라이브 -> gb폴더 -> util -> apache-tomcat-9.0.73(톰캣 경로) -> lib -> servlet-api.jar 복사


<servlet-api.jar 파일 삽입하기>

java프로젝트 day01_1 -> src -> main -> webapp -> WEB-INF -> lib -> servlet-api.jar파일 붙여넣기


<servlet-api.jar 파일 적용하기>

프로젝트(day01_1) 우클릭 -> properties -> Java Build Path -> Classpath 좌클릭 -> 우측에 ADD JARs... 클릭 -> 프로젝트 -> src -> main -> webapp -> WEB-INF -> lib -> OK -> Apply -> servlet-api.jar 파일 등록 완료


<package와 class 생성하기>

프로젝트 -> src -> main -> java 우클릭 -> other... 클릭 -> wizard에 package 검색 -> next -> name : com.codingbox.web.servlet
(주소의 반대로 적는것이 국룰?)
-> Finish (Package 생성완료) -> com.codingbox.web.servlet(package)우클릭 -> new -> class -> name : MyServlet(Class 생성완료)


<코드 넣기>

-> 클래스에 extends HttpServlet 입력

-> 클래스 블록 내부에 service + ctrl + spacebar
service메서드 호출

-> 이거 지우기

// TODO Auto-generated method stub
	super.service(arg0, arg1); 

-> 이거 입력

System.out.println("hello service 도착");        

PrintWriter out = arg1.getWriter();
out.println("Hello servlet 	Annotation!!");        

<server와 console창에서 결과 확인하기>

Servers -> 서버start -> url ( localhost:8081/hello ) 로 이동 -> server url과 console창에서 출력값 확인

서블릿

  • Web Server

  • HTTP 프로토콜을 기반으로 하여 클라이언트의 요청을 서비스하는 기능을 담당

  • 클라이언트가 어떠한 요청을 하면 그에 대한 결과를 다시 전송해 주어야 하는데, 이러한 역활을 하는 자바 프로그램이다.

  • 클라이언트가 URL을 입력하면 HTTP Request가 Servlet Container로 전송합니다. 요청을 전송받은 Servlet Container는 HttpServletRequest, HttpServletResponse 객체를 생성한다.

  • web.xml을 기반으로 사용자가 요청한 URL이 어느 서블렛에 대한 요청인지를 찾는다.

    -해당 서블릿에서 service메소드를 호출한 후 클라이언트의 GET, POST 여부에 따라서 doGet() 또는 doPost()를 호출한다.

  • HttpServletResponse객체에 응답을 보낸다.

  • 응답이 끝나면 HttpServletRequest, HttpServletResponse 두 객체를 소멸시킨다.

Servlet 연결 방법

1) wet.xml에 직접 담아서 서버와 콘솔창에 출력값을 확인하는 방법

2) @WebServlet("/*")을 사용하는 방법

profile
수현

0개의 댓글