tcp ip는 전송~인터넷 두 계층을 맡고있따
인터+네트워크 = 인터넷
아이피 ----- 도메인서버(DNS domain name server)---- 이름(domain)
dns 서버는 인터넷을 제공하는 통신사(sk kt)가 제공하는거임
디엔에스 서버는 교환시스템이다
정보를 제공하면 서버,
사용하면 클라이언트
HTTP에서 가장 중요한건 TEXT
어짜피 서버-클라이언트가 주고받는건 TEXT(String)이다.
서버용 OS가 따로있다. 네트웍장비자체를 핸들링할수있는 기반자체는 이 OS 에 있고
일반 개인컴에서는 없다.
내용 동적인거바꾸고 모양
web3.0은 기술적인진보보다는 표준화..가 아루어짐
이때 html5도 나옴
서버는 데이터만 주고 화면은 각각의 기기마다 화면에서 나타냄.. 즉 예전엔 주소를 요청하면 화면을 내보ㅇ냈는데 이제는 주소를 요청하면 데이터를 내보냄 >> REST
>>자바스크립트의 역할이 매우 커졋다
프레임워크 : 작업표준
쌓인 경험으로 규정을 정한것 > 프레임워크 즉 처음부터만들어지는게 아님. 노하우가 기본임
노하우를 모아서 패턴화, 패턴을 라이브러리화하고 그게 모여서프레임워크
프레임웤은 왜나왓냐? ""생산성""
받아서 실행을 해주는녀석 이 서블릿
요청유알엘에 맞는 메서드를 실행할지 정의하는거 (누구한테?톰캣한테)가 서블릿임
요청이왔을때 어떤걸 실행할것인지 정의하는거(메이메서드대신에)가 서블릿
메뉴판같은거임
서블릿으로 안만들면/? 실행안함
uri 요청이 어떻게 왔을떄 어떤걸 실행할지 톰캣에게 알려주는것
우리가실행할거를 메인메서드에 담았었는데(초급때)
이제는 이름과 실행메서드가 따로있고그걸 매칭시켜줘야하는거임
우리는 response객체를 콘솔이라고 생각하면된다.
글데 그게 브라우저니까 브라우저에 맞게 보여주려면 html쓰게되는거임
스캐너대신 리퀘스트. syso대신 response임
실행은 f11이 아니고 사용자의 요청이올때
서비서와 dao는 처리를 위한거엿음
결국 입출력이 바뀌는거뿐임
그래서 was를 runtime enviroment라고 함.
실제로 실행할때 was가 하는거니까 (해당서블렛에 해당 메서드)
was는 언제실행하냐? 요청이있을대실행한다
그러면 자바에서 실행한다는건 .java가 아님 .class임
.class실행위해서는 컴파일이 먼저되어야하는데 그게 언제됨??
이클립스는 사용자가 저장할때 됨
서블릿도 .java니까 컴파일언제? 저장할때!
.class 배포는 왜해 ? 실행해야하니까.;.
이클립스가 .java를 .class로 바꿔서 배포될떄 톰캣이실행할수이슨곳에 놔둬줌
.class는 요청이올때 실행한다. 요청이없으면 실행안해
JSP는 자바가 아님 (스크립트방식)
그래서 톰켓이 실행할수가없음
JSP 요청을 받으면 그 JSP를 찾아서 .java로 바꾼다. 왜? JSP는 자바가 아니니까 컴ㄴ파일할수가없으니까
컴파일해서 .class로 만들고 그 .class를 실행하는거임
근데 그 JSP가 한번 .class로 바뀌면 그 다음부터는 .java 로 바ㅜ거ㅓㅅ 컴파일하는과정ㅎ안해두됨
그담부터는 요청이오면 바로 .class 실행함
요청이올때 한다는 점은 변함이없음
그니까 한번은 요청을 해야 .class로 바뀌는거임
이걸 실행코드방식이라고 한다.
JSP는 표현법을 배우는거임
html 마크업하기가 out.println 하기가 어려워서 나온게 JSP의 존재의 이유이기떄문에
자바적인 소스코드가없고 마크업을 위한 표현에만 치중하면됨
그러니까 처리같은건 다 서블렛으로 넘기는거임
서블릿등의 객체를 만듦녀 was가 네이밍을 하는건 요청시에 하려니까버거움
그래서 인위적으로 인스턴스를 만들게할수있고,ㅣ 아니면 요청시 인스턴스가만들어지ㅔ.. 간에 한데모아두는곳이잇음(톰켓이)
그 장소를 webcontainer라고 한다.
JSP도 .java> .class로 되어서 결국 서블릿으로 바뀐다.
다이나믹웹프젝만들고
서버에 넣고 한번 돌리면
servers-server.xml에 가면
context path가 설절되어있따
이걸수정하고싶다고 여기를 수정하면안되고 프로젝트에서 세팅을 바ㅜ꺼야함
일단 톰켓에서 빼고 돌려서 설정이 없어지게함
다시 서버에 에드하고 돌리면
이제 기본적인 index 만들거임 webcontent에
그담에 컨텍스트패스만 치고 실행하면
이게 서블릿으로 바뀌면
url 규정하고 서블릿 만들어서 그 요청이 겟방식인지포스트인지 구분하고 거기다가 실행메서드만든느것
지금은 콘솔에뿌린거임!~@~!
localhost/s01/main 으로 햇을떄..
사용자의 주소줄에 대한 요청은 겟방식임
post는 ajax와 form태그에서 post주는거
언제실행? 브라우저에서 주소줄 localhost/s01/main 로 치면 실행함
package com.servlet.main;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/main")
public class MainServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("안녕하세요");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
요청받으려면 서버돌아야함
즉 얘는 서버를 돌려야함 was가 실행하는거니까.. 톰캣이...
localhost/s01/play라고 요청하면
서버에서 콘솔에 놀아보세라고 찍게
새로운 유알엘 이으려면 새 서블렛 만들어야함~~~
서블릿의 역할은 이게 다야~
서블릿은 유알엘이 반드시필요. 해당 유알엘 요청오면 실행하게되는게 서블릿임 이게다임
유알엘에 따라 실행하려고 만든게 서블릿임
package com.servlet.main;
import java.io.IOException;
import java.util.Scanner;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/main")
public class MainServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("이곳은 메인 서블릿 입니다.");
//두개정수받아서 더한값
//입력
Scanner sc = new Scanner(System.in);
System.out.println("첫번째 정수를 입력하세요");
int x = Integer.parseInt(sc.nextLine());
System.out.println("두번째 정수를 입력하세요");
int y = Integer.parseInt(sc.nextLine());
//처리
int sum = x + y;
//출력
System.out.println(x + "+" + y + "의 합은 : " + sum);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
사용자가 콘솔에 입력하는건 말이안되니까 이렇게 줄거임
?뒤에있는걸 파라미터라고 얘기하는데,
출력도 콘솔에하면안된다.