Loading...

Web / / 2022. 2. 23. 00:04

Web 9강. 동적 웹 서버

반응형

 

 

아파치 웹 서버는 정적인 웹 서버이다.

톰캣이 해주는 일


-> html 파일이 브라우저에서 해석되기 전에
  html 파일에 있는 자바 언어를

선 해석해서 브라우저에 뿌려준다.

html에다가 자바 코드만 쓸 수 있으면

동적인 페이지가 된다.


html에 데이터를 자바 코드로 넣을 수 있는 기술

-> JSP(JavaServer Pages)


html에 자바언어를 적을 수 있는 파일

.jsp => 동적 파일

<% %>  이 자리에는

자바 코드를 적겠다는 약속이다.


<%= %> 이 자리에 자바 코드를 쓰겠다 

= 자바에서의 BufferedWrite 하는 것과 같음


아파치가 클라이언트에게 응답하는 파일은 

%까지 다 글자로 인식해서 돌려준다.


그대로 돌려주면 안 된다.


아파치는 자바 언어를 해석하지 못하기 때문에

톰캣에게 jsp파일을 던진다.

: 권한을 위임

아파치와 톰캣 두 개가 같이 움직여서

아파치 톰캣이라고 붙여서 말한다.


단 jsp파일에만! 

자바 코드가 있는 요청이 들어왔을 때만!!

아파치가 톰캣에게 jsp 파일을 던질 때

그냥 던지지 않고
이름을 바꿔서 던진다.


a.jsp파일을 요청받으면

아파치가 톰캣에게 a_jsp.java 파일로 바꾸어 던져준다.


톰캣이 "어? 자바 파일이네?"하고 인식하면

컴파일을 한다.

javac.exe가 a_jsp.class로 바꾸는 것이다!


그다음 JVM(java.exe)이 .class파일을 실행시킨다.

실행시키면 <% %> 부분이 자바인 것을

톰캣의 라이브러리가 인식한다.


그 부분만 컴파일하고 실행하는 것이다!

실제로 실행하는 과정을 보면
<% %>을 읽고 실행한 다음 

코드에서 지워버린다.


그렇게 실행이 끝나면 

순수한 html 파일이 나오게 된다.


이 html 파일을 아파치에게 돌려주고 

파일의 내용을 클라이언트에게 돌려주는 것이다.

jsp 해석기 -> 톰캣!!

 

 


 


소켓


request 객체로 ByteStream에 접근이 가능하다.

선으로 흐르는 모든 문자열에 접근 가능한 것이다.


json으로 통신할 때 gson으로 파싱 했는데
이건 http 프로토콜로 날아오니까 파싱이 어렵다.

IP는 뭔지, 프로그램은 뭔지, 쿼리 스트링은 뭔지
모든 정보를 버퍼에 담아서 전송하면 그냥 문자열로 받게 된다.

파싱을 하지 않으면 .을 사용해

접근이 불가능하다.

그냥 문자열이니까!

request는 소켓이 문자열을 받으면

스트링을 파싱 해서

자바 오브젝트로 다 바꿔준다!!


request에 접근하면 모든 정보를 다 알 수 있다.


이 request는 톰캣이 만들어준다.

키워드 같은 거임!!

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<ul>
	<li><a href="/user/login.html">로그인 홈페이지</a></li>
	<li><a href="/user/join.html">회원가입 홈페이지</a></li>
	<li><a href="/user/userInfo.jsp">회원정보 홈페이지</a></li> 
	<li><a href="/post/list.html">글목록 홈페이지</a></li>
</ul>

<%
//request는 BufferedReader로 읽은 모든 정보를 자바 오브젝트로 바꾼 결정체(톰켓이 해줌)
//getParameter 쿼리스트링 파싱해주는 메서드

String name =request.getParameter("name");
String phone = request.getParameter("phone");
%>

<h1>회원정보 페이지입니다.</h1>
<h3>이름:<%=name%> 전화번호:<%=phone%> </h3>
<hr/>
</body>
</html>

 

 

 

 

 

 

[출처]

https://cafe.naver.com/metacoding

 

메타코딩 : 네이버 카페

코린이들의 궁금증

cafe.naver.com


메타 코딩 유튜브
https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9

 

메타코딩

문의사항 : getinthere@naver.com 인스타그램 : https://www.instagram.com/meta4pm 깃헙 : https://github.com/codingspecialist 유료강좌 : https://www.easyupclass.com

www.youtube.com

 

반응형