웹에서 서비스를 제공하는 컴퓨터 시스템
사용자로부터 HTTP프로토콜을 이용해 요청받거나 웹 컨테이너가 전달해준 '결과물'을 사용자에게 응답해주는 소프트웨어
결과물은 보통 html, css, js 정적인 결과물.
웹 서버가 전송해준 요청에 따라 동적인 페이지를 생성해서 웹서버로 반환해준다.
웹 애플리케이션이 동작할 수 있는 환경을 제공해주는 소프트웨어
Tomcat, Weblogic...등
웹 서버와 사용자 사이의 통신 프로토콜
네트워크를 통해 컴퓨터들이 정보를 주고받는 통신 규약
데이터가 드나드는 하나의 통로.
0 ~ 65535번까지의 포트.
0~ 1023번까지 포트 well known port : 잘 사용하는 포트
80포트 HTTP
20포트 FTP(File Transfer Protocol)
특정 서버 > 개발 소스 보낼때 쓰는 것들: putty 파일질라
웹 서버에 '저장되어 있는 파일 그대로' 웹 브라우저에 전송해 출력하는 가장 기본적인 웹 페이지
ex 포르폴리오 사이트 등
동일한 페이지라 할지라도 그때그때 내용이 달라질 수 있는 웹 페이지. 서버가 클라이언트의 요청을 해석하여 가장 적절한 웹 페이지를 그때그때 생성해 보내주는 기술.
[WEB] 정적 웹 페이지와 동적 웹 페이지
https://velog.io/@dyunge_100/WEB-%EC%A0%95%EC%A0%81-%EC%9B%B9-%ED%8E%98%EC%9D%B4%EC%A7%80%EC%99%80-%EB%8F%99%EC%A0%81-%EC%9B%B9-%ED%8E%98%EC%9D%B4%EC%A7%80
jsp 페이지를 자바 코드로 변환하는데 필요한 정보들을 담고 있고, jsp 엔진에 알려주는 역할.
언어, 인코딩
<%@ 지시어 속성1 ="값" 속성2 = "값" %>
-ISO-8859-1 한글 사용할 때에는 UTF-8
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%--
<%@ %> -> 지시어 directive
jsp 페이지를 자바 코드로 변환하는데 필요한 정보들을 담고 있고, jsp 엔진에 알려주는 역할.
언어, 인코딩
<%@ 지시어 속성1 ="값" 속성2 = "값" %>
## 지시어 종류
### page
- jsp 페이지에 대한 설정.
### language
- 기본값이 자바이다.
### contentType
- 기본값은 text/html; 그 외 text/xml, text/plain
### charset=UTF-8 c
-ISO-8859-1 한글 사용할 때에는 UTF-8
### import
- 자바에서 외부 클래스 사용할 때 import 해주는 것처럼 jsp에서도 필요한 클래스를 import해서 사용한다.
include
tablib (테이블 라이브러리)
--%>
<%!
String str1 = "먹고자";
String str2 = "안녕하세요.";
%>
<!DOCTYPE html>
<html>
<head>
<title>JSP - Hello World</title>
</head>
<body>
<h1><%= "Hello World!" %>
</h1>
<p>
<% out.println(str2 + str1 + "입니다.");
Date today = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String todayStr = dateFormat.format(today);
out.println("오늘은 " + todayStr + "입니다.");
%>
</p>
<br/>
<a href="hello-servlet">Hello Servlet</a>
</body>
</html>
//webapp - 새로만들기 경로 - jsp페이지 작성.
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<html>
<head>
<title>page 지시어 - errorPage isErrorPage 속성</title>
</head>
<body>
<%
//try catch문으로 에러 처리.
try {
int myAge = Integer.parseInt(request.getParameter("age")) + 10; //에러 발생
out.println("10년 후 당신의 나이는" + myAge + "입니다."); //실행되지않음.
}catch(Exception e){
out.println("예외 발생 : 매개변수 myAge가 null입니다.");
}
%>
</body>
</html>
<%--
Created by IntelliJ IDEA.
User: admin
Date: 2023-11-30
Time: 오후 12:24
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<html>
<head>
<title>error 발생 시 처리 페이지</title>
</head>
<body>
<h2>서비스 중 일시적인 오류가 발생했습니다.</h2>
<p>오류명 : <%= exception.getClass().getName()%> <br>
오류 메세지 : <%= exception.getMessage()%>
</p>
</body>
</html>

반복되는 부분을 별도의 파일에 작성해두고 필요한 페이지에서 include 지시어로 포함시킬 수 있다.
<%@ page import="java.time.LocalDate" %>
<%@ page import="java.time.LocalDateTime" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<html>
<%
LocalDate today = LocalDate.now(); //오늘 날짜
LocalDateTime tomorrow = LocalDateTime.now().plusDays(1); //내일 날짜
%>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%@ include file="includeFile.jsp" %>
<html>
<head>
<title>Include 지시어 </title>
</head>
<body>
<%
out.println("오늘 날짜 : " + today);
out.println("내일 날짜 : " + tomorrow);
%>
</body>
</html>