I. INTRO : 지난 시간 복습
is a 하면은 남의 것 쓰는것에 자유로워진다.
이런것을 하기위한 도구로 서블릿이다.
II. 서블릿
1. 웹서버 포트번호 변경하기
(1) 톰캣설치 디렉토리 \conf 폴
톰캣은 서비스 목적뿐만 아니라 개발목적으로도 가능하다.
8080말고 바꾸고 싶을 때!
server.xml 을 바꿔준다 (이경우 복사본으로!)
8080 => 80으로
이 경우 web은 80으로서 생략한다. (이경우 80은 보안되지 X)
사서함에서 가져와라 했을 때 사서함 번호(80번)를 알아야한다.
80번은 묵시형 (디폴트 포트)포트이다. 말하지않으면 기본이다. 그래서 생략됨
톰켓은 index.html / index.jsp / index.htm 요구 파일이없으면 404에러가뜬다.
nana.txt -> index.html로 바꾸자
실제로 nana.txt파일이름을 바꾸면 404오류가 뜬다.
- DNS
주소(192) 다 알기 어렵다. 도메인네임으로 하면 수월하다. 도메인 회사의 네트워크에 대한 이름을 사는것이다
내 회사 어떤회사인지에 따라서 도메인 사는 루트가 다름 (ex. com : 주식회사 / net /org :비영리 등)
- 전달매체가 있다.
그 중 구리선으로 연결시에... 한편 과거에
A - B - C 만 순차적연결 시 (여기서 AC는 서로 통신할수있는가? 어렵다)
그래서 다 연결해야한다 (N-1개씩 늘어남)
그래서 이렇게 연결하지 않는다.
공유하는 방법을 이용한다.
링형, 스타형, 버스형이 있다.
서로 조금씩 떨어져있음 (스위치형 - 구형전화기)
이 경우 버스형은 다른애들이 쓰는동안 다른 애들은 못쓴다. 화장실처럼 기다려야한다.그래서 컴퓨터 多이면 다운 됨
값싸지만 성능 떨어짐
한편 스타형은 C,D끼리쓰면 그동안 다른애들도 쓸수있다.
비싸지만 성능 높음
오늘날은 보편화됐고, 우리 공유기는 스위치로 구현되어있다.
/*------------------------------
-이 정보가 내꺼인지 알기위해 LAN카드에 MAC이 있다. 브로드캐스팅한 것에 MAC해당하는지 수신해서 판단한다.
이 경우 수신을 물리적으로 끄면은 정보 '스니핑'이가능하다.
다른곳에 가려면 ip가 필요한데, 도메인네임을 주로쓴다.
도메인을 알고 그 다음에 IP로 가야한다.
------------------------------*/
네트워크 네이밍을 도메인이라고 한다.
[C:\Windows\System32\drivers\etc\hosts 파일]
여기는 자주사용하는 것을 이용가능하게 끔 할수있다.
네트워크에 입력하면 먼저 아이피가 있는지 찾아본다. 그러면 도메인네임 물어보기 위한 작업을한다.
그러나 관리자권한없음 (관리자 권한은로 CLI 탐색기 열기 - 최근 막힘)
막힌 이유는 hosts파일 바꿔치기 해서 은행인척하면서 할수있다.
사적정보 가지고 있는자(지원여부)가 오게해서 hosts파일 다운받게 함
- DNS서버는 클라이언트가 요청한 DNS네임을 아이피주소로 바꿔주는역할이
우리가 도메인이름가지면 톰캣으로 가능하다. (추후에)
2. Context 서버
(1) Context 사이트 추가
[https://espania.tistory.com/103]
컨텍스트 경로(Context Path)란 WAS에서 웹 애플리케이션 접근(구분) 하기위한 경로이다.
다시말하면 어플리케이션의 root경로이다.
-> http://localhost:[PORT번호]/[프로젝트 별칭]/[Servlet 명]
-> http://localhost:8800/news/Nana.txt
(이경우 Nana.txt 외에도 html, java 등도 가능하다)
별도의 공간에 붙여서 사이트를 만들기도 한다. 루트외에
네이버 서브 카테고리들이 컨텍스트이다.
루트에 news라는 폴더를 만든다. 그리고 url에 news 폴더를 반영해서 하면은 이것이 context이다.
규모가 작으면 한번에 옮길수 있으나 규모가 크면 잘라서 하나씩 옮긴다.
이 경우 큰가지 작은가지 이어져야하는데 이어주는 문맥이 필요하다
이름이 문맥처럼 보이기 위해서, 하나의 디렉토리 처럼보이게끔 하기위한것을 context name이라고한다.
server.xml 이용.
실제 docBase 경로를 Context path 로 치환시켜준다.
<Context path="news" docBase="C:\home\news\" privileged="true"/>
(이 경우 오타 반드시 주의)
이제 프로젝트는 컨텍스트 단위로 만든다.
3. Servlet 프로그램 만들기
메모장 번역기로 충분히 웹개발이 가능하다. (이클립스도 가능)
(1) 왜 웹서버 응용 프로그램을 servlet 이라 명칭할까
예전에는 CS모델이고, 최근에는 웹이라는 위에서 서버클라이언트 개념이고, 백프론엔드이다.
통으로 만드는것이 아니라 쪼개서 Let로 (기능단위로) 요청한다
우리는 기능단위로 만들것이다. (상단의
(2) 서블릿 코드 작성과 실행
코드 실행하는 것이 was(서블릿)이다 즉 톰캣으로 이용한다.
이 경우 톰캣이용하려면 상속받아야한다.
왜? 고쳐쓰려고
무엇을? Service함수를 고쳐쓰려고...
메모장으로 한번 위 코드를 쳐보고 Nana.java 로 저장하자
<참고> [https://codevang.tistory.com/191]
Tomcat(서블릿 컨테이너의 대표주자)은 WEB/WAS의 기능을 가진 자바 어플리케이션입니다. JAVA EE 기반으로 만들어졌다고 합니다. WAS는 자바로 만들어진 JSP와 Servlet을 구동하기 위한 서블릿 컨테이너 역할을 수행합니다
서블릿이 누군지 모른다.
톰캣 라이브러리에 servlet-api.jar 있다.
경로를 알게끔 하거나 같이 두면된다
<경로알게>
javac -cp "D:\setup\apache-tomcat-10.0.27\lib\servlet-api" .\Nana.java
(-cp : class path)
톰캣 10은 javax 대신에 jarkarta로 바꾸기
import jakarta.servlet.*;
import jakarta.servlet.http.*;
import java.io.*;
public class Nana extends HttpServlet
{
public void service(HttpServletRequest request
, HttpServletRequest response)
throws IOException, ServletException
{
for(int i = 0 ; i < 10 ; i++)
System.out.println("hello Servlet");
}
}
10번 반복하게끔 했다.
그러나 .class 파일을 실행했으나
오류: 기본 클래스 .\Nana.class을(를) 찾거나 로드할 수 없습니다.
원인: java.lang.ClassNotFoundException: /\Nana/class
가 발생하였다.
다만 먼저 Nana.class 파일을 [C:\home\news\WEB-INF\classes]
web-info 란 사용자 요청해도접근할수없는 경로 (Web의 root를 의미) 에 넣어준다.
(3) 서블릿 맵핑
이 경우 실행(.class 파일)은 서블릿으로 한다.(처음이자 마지막으로 직접한다. )
왜냐 사용자가 WEB - INF(보안) 직접이용못하는데, 이용하기 위해 (우리가 client임)
실제 디렉토리인지 여부와 상관없이 맵핑으로 이용한다.(서블릿 매핑)
이클립스 다이나믹웹프로젝트 + 제너레이트
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd" id="WebApp_ID" version="5.0">
<display-name>webPrj</display-name>
<servlet>
<servlet-name></servlet-name>
<servlet-class></servlet-class>
</servlet>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.jsp</welcome-file>
<welcome-file>default.htm</welcome-file>
</welcome-file-list>
</web-app>
<보충 : 질문>
Frame frame = new GameFrame();
자식은 확장기능도 있고 부모의 기능수준에서만 쓸생각이다.
자식이름으로 하면 쓸수있는 폭이 줄어든다.
쓰는기능이있으면 쓰능기능에 맞춰서 객체를 쓰는것이 좋다.
참조형에 따라 볼수있는 함수가 정해지고, 객체 우선순위가 달라진다.
GF만 쓸거면 GF 객체로 / 오버라이드 할거면 Frame으로!
1. 보충
(1) 정적동적 웹페이지?
정적 웹 : 대표적인 예로 학교홈페이지의 보편적인 페이지이다. (웹 서버와 통신, 이미 저장된 CSS + HTML + JS 파일 운)
동적 웹 : 대표적인 예로 학교홈페이지 포털 마이페이지이다.(CSS + HTML + JS) + WAS 을이용한다.
동적인 페이지의 경우 클라이언트의 요구(reauets)에 맞춤으로 전달(response)해주기 위한 것으로 볼 수있다.
그 결과 동적 웹은 더 복잡한 비즈니스 로직과 리소스 필요로 함
(1 - 1) 비즈니스로직?
서블릿이 클라이언트의 Request에서 필요한 것을 처리하고 Response 하는 과정을 의미한다.
(2) 서블릿이란 [https://joel-dev.site/84]
서블릿이란 동적인 웹페이지를 처리를 위한 자바 프로그램이다.
(3) Contetxt path 왜 필요? 무엇?
프로젝트 단위로 볼 수있다. 긴 경로를 프로젝트단위로 디렉토리 처럼 이용이 가능하다.
이를 이용해서 손쉽게 WAS의 애플리케이션에 접근이 유용하다.
이 경우 쪼개어진 Servlet을 이용가능하다.
(4) 톰캣이란
서블릿을 이용하기 위한 대표적인 서블릿컨테이너이다.
여기서 서블릿컨테이너는 요청,응답 생명주기 관리 등을 할 수있는 환경 제공해주는 것이다.
(4) 서블릿인터페이스 종류
init() 서비스 생성
service() 서비스제공
destroy() 서블릿삭제
(5) 서블릿 매핑
What (정의) : 서블릿에 손쉽게 접근하기 위한 URL접목시킨 방식
Why (존재이유) : web-inf와 같은 보안(디렉토리 노출), 접근의 불편함(패키지, 클래스명 모두입력)을 해소하기 위해서
How (방법) : web.xml 파일 이용 (url 패턴이용)
e.g. (예) : X
2. 회고
1) 다양한 개념이 오면서 여러가지로 충돌이 발생한다.
세심하게 체크하고, 오고가고 하면서 이러한 용어들을 익숙해지게끔하자
이경우 What , why , how (정의, 존재이유, 방법) 식으로 사고하자.
'배움 __IL > TIL 1기' 카테고리의 다른 글
TIL : 21번째- 221227 [12-5-화] : js 시작 (0) | 2022.12.27 |
---|---|
TIL : 20번째- 221226 [12-5-월] (1) | 2022.12.26 |
TIL : 18번째- 221222 [12-4-목] (1) | 2022.12.22 |
TIL : 17번째- 221221 [12-3-수] (0) | 2022.12.21 |
TIL : 16번째- 221220 [12-3-화] (0) | 2022.12.20 |