웹 서버의 동작원리 (HTML, JSP)
HTML 동작원리
사용자(유저, 클라이언트)가 브라우저에 URL을 입력 : http://localhost:8080/webProject/html2/test2.html
localhost:8080 서버에 test2.html 페이지를 요청
→ 웹 서버 전달
→ 웹 서버 안에 test2.html 페이지 찾기
→ 찾은 페이지를 사용자에게 전달(응답)
∴사용자가 요청하면 서버가 찾아서 사용자에게 응답
사용자(유저, 클라이언트)가 브라우저에 URL 입력 : http://localhost:8080/webProject/jsp1/form1.jsp
localhost:8080 서버에 form1.jsp 페이지를 요청
→ 웹 서버(아파치) 전달
→ 웹 서버 안에 form1.jsp 페이지 찾기
→ .jsp는 서버를 통해서만 실행이 됨. 따라서 jsp 처리하는 작업이 필요.
→ 웹 애플리케이션 서버(WAS, 톰캣, 웹 컨테이너)에 전달
→ java,jsp 명령을 처리하고 결과를 html로 변경하는 작업(응답 정보)
→ 응답 정보를 웹 서버에 전달
→ 응답 정보를 사용자에게 전달
사용자(유저, 클라이언트)가 브라우저에 URL 입력 : http://localhost:8080/webProject/jsp1/form1.jsp
→ http가 요청 정보를 가지고 localhost:8080 서버를 찾아감
localhost:8080서버에 form1.jsp 페이지를 요청
→ 웹 서버(아파치) 전달
→ 웹 서버 안에 form1.jsp 페이지 찾기
→ .jsp는 서버를 통해서만 실행이 됨. 따라서 jsp 처리하는 작업이 필요.
→ 웹 애플리케이션 서버(WAS, 톰캣, 웹 컨테이너)에 전달
→ request(http가들고 온 요청 정보를 저장),response(서버의 처리 결과 응답 정보를 저장), 기억 장소를 만들어줌
→ web.xml 참조(설정 정보 확인)
→ servlet(명령을 처리하는 담당) 기억 장소를 만들어줌
→ java,jsp 명령을 처리하고 결과를 html로 변경하는 작업(응답 정보를 response에 저장)
→ 응답 정보를 웹 서버에 전달
→ 응답 정보를 http에 전달
→ 응답 정보를 사용자에게 전달
JSP 특징
강력한 이식성 : 자바기반의 언어이기 때문에 어떠한 운영체제와 상관없이 동작
서버 자원의 효율적인 사용
간편한 MVC 패턴 적용
JSTL, 커스텀 태그 등을 이용한 개발 용이성
서블릿과 비교되는 장점
HTTP 프로토콜
https://www.google.com
https://www.naver.com
http://localhost:8080/webProject/jsp1/form1.jsp
...
주소를 입력하면 https 또는 http가 붙는다.
HyperText Transfer Protocol : html을 요청하고 응답하는 통신규약(통신 규칙).
HTTP 요청 메세지(주소줄, 헤더, 본문) → 웹 서버
HTTP 응답 메세지(주소줄, 헤더, 본문) ← 웹 서버
커리큘럼
- 주석
- %
- 내장객체
request, response, session, application, out, ... - 액션태그
- 쿠키
- 데이터베이스 연결
- 자바
- MVC패턴
프로그램 패턴(방식) → taglib, JSTL 사용 - 스프링 프레임워크
1. 주석
<%-- <%="jsp주석" %> --%> Ctrl + Shift + c
<%
// : 한 줄 주석
/* */ : 여러 줄 주석
%>
2. %
<%@ %> : jsp 페이지 설정
JSP 지시어 : page 지시어(page 설정 지시), include 지시어(변수, 내용 포함), taglib 지시어(% 대신 태그처럼 사용하는 설정)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%= %> : html에 java, jsp 코드 출력, 변수를 출력 (표현식)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>form1</title>
</head>
<body>
<form action="form1Pro.jsp" method="post">
아이디 : <input type="text" name="id">
비밀번호 : <input type="password" name="password"><br>
<input type="submit" value="전송">
</form>
</body>
</html>
<%
String sid = request.getParameter("id");
// 변수명 value
// request는 정보가 들어 있는 창고
String spw = request.getParameter("pw");
%>
아이디 : <%=sid %><br>
비밀번호 : <%=spw %><br>
<% %> : java, jsp 코드 영역 스크립틀릿(Scriptlet)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp1/form2.jsp</title>
</head>
<body>
<h1>jsp1/form2.jsp</h1>
<form action="formPro2.jsp" method="get">
이름 : <input type="text" name="name"><br>
좋아하는 숫자 : <input type="text" name="num"><br>
<input type="submit" value="전송">
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jsp1/formPro2.jsp</title>
</head>
<body>
<h1>jsp1/form2.jsp</h1>
<%
// 스클립틀릿(Scriptlet)
// form2.jsp에서 입력한 name, num 이름에 해당하는 값이 서버에 전달
// → 서버 request, response라는 기억장소가 만들어짐
// → request에 name, num 이름에 해당하는 값,.. 요청 정보가 저장
// request에서 name, num 이름에 해당하는 값을 가져와서 String 변수에 저장
// → 변수를 출력(표현식)
String name = request.getParameter("name");
String num = request.getParameter("num");
%>
이름 : <%=name %><br>
좋아하는 숫자 : <%=num %><br>
</body>
</html>
(...생략...)
<%
// java,jsp 코드
// 정수형 변수 선언, 변수 이름 : hour, 초기값 17 저장
// 정수형 변수 선언, 변수 이름 : min, 초기값 20 저장
// 정수형 변수 선언, 변수 이름 : sec, 초기값 30 저장
int hour = 17;
int min = 20;
int sec = 30;
%>
<h1>현재 시간은 <%=hour %>시 <%=min %>분 <%=sec %>초 입니다.</h1>
(...생략...)
if문을 이용해서 변수 hour가 12시 미만이면 "오전입니다." 그렇지 않으면 "오후입니다." 출력
(...생략...)
<%
// java,jsp 코드
// 정수형 변수 선언, 변수 이름 : hour, 초기값 17 저장
// 정수형 변수 선언, 변수 이름 : min, 초기값 20 저장
// 정수형 변수 선언, 변수 이름 : sec, 초기값 30 저장
int hour = 17;
int min = 20;
int sec = 30;
%>
<h1>현재 시간은 <%=hour %>시 <%=min %>분 <%=sec %>초 입니다.</h1>
<%
if(hour<12) {
out.println("오전입니다.");
} else {
out.println("오후입니다.");
}
%>
//== out.println을 사용하지 않고 표현
//if(hour<12) {%>
//오전입니다
//<%} else {%>
//오후입니다
//<%}%>
<%=hour %>
(...생략...)
<%if(hour<12) {%>
<%=hour %> 오전입니다
<%} else {%>
<%=hour %> 오후입니다
<%}%>
<%! %> : 선언문 → 전역변수 선언, 메서드 선언
'KDT > WEB' 카테고리의 다른 글
231130 WEB - JSP4(내장객체) (0) | 2023.11.30 |
---|---|
231128 WEB - JSP3(웹 서버 동작 과정, %, 내장객체) (0) | 2023.11.28 |
231122 WEB - CSS9, JSP1(서버의 역할) (0) | 2023.11.22 |
231120 WEB - CSS8 (0) | 2023.11.20 |
231117 WEB - CSS7 (0) | 2023.11.17 |