KDT/WEB

231127 WEB - JSP2(웹 서버 동작 원리, 주석, %)

001cloudid 2023. 11. 27. 17:42
728x90

웹 서버의 동작원리 (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 응답 메세지(주소줄, 헤더, 본문) ← 웹 서버


 

커리큘럼

  1. 주석
  2. %
  3. 내장객체
    request, response, session, application, out, ...
  4. 액션태그
  5. 쿠키
  6. 데이터베이스 연결
  7. 자바
  8. MVC패턴
    프로그램 패턴(방식) → taglib, JSTL 사용
  9. 스프링 프레임워크

 


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>

form1.jspformPro1
그림 1. request.getParameter

 

<% %> : 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>

 

form2.jspformPro2.jsp
그림 3. form2.jsp, formPro2.jsp

(...생략...)
<%
// java,jsp 코드
// 정수형 변수 선언, 변수 이름 : hour, 초기값 17 저장
// 정수형 변수 선언, 변수 이름 : min, 초기값 20 저장
// 정수형 변수 선언, 변수 이름 : sec, 초기값 30 저장

int hour = 17;
int min = 20;
int sec = 30;
%>

<h1>현재 시간은 <%=hour %>시 <%=min %>분 <%=sec %>초 입니다.</h1>
(...생략...)

그림 4.

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 %>
(...생략...)

그림 5.

<%if(hour<12) {%>
<%=hour %> 오전입니다
<%} else {%>
<%=hour %> 오후입니다
<%}%>

그림 6

 

 

<%! %> : 선언문 → 전역변수 선언, 메서드 선언

728x90

'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