개발공부 일지
학원수업_36day [HTML,CSS,Javascript (3day) - web 구동원리 ] 본문
학원수업_36day [HTML,CSS,Javascript (3day) - web 구동원리 ]
짜몽- 2022. 9. 22. 09:14**Servlet 기본 개념 **
HTTP : HyperText Transfer Protocol 웹 통신 규약
HTTPS : HTTP Secure -> 보안 http protocol 의 보안 , 암호화된 버전
Web Server : HTTP 에 의거해 *HTML(html,css,javascript)*문서를 서비스 하는 서버
웹 브라우저 클라이언트에 *정적인* 컨텐트를 서비스하는 서버
Web Application Server (WAS) : Web Sever + Web Container
데이터베이스 서버 및 타 서버와 연동
다양한 비즈니스 로직을 처리하여
*동적인* 컨텐트를 클라이언트에게 제공하는 웹 어플리케이션 서버 ex)
Web Container : java web 기술인 Servlet 과 JSP 가 실행되는 환경 제공
우리는 현재 WAS 제품군 중에서 Apache Tomcat 9 버전을 이용한다.
//개발환경 jdk.18 WAS는 아파치톰캣이고, DB는 오라클쓰고있다
- 자바 웹 어플리케이션 개발 환경 설정
0.WAS 인 Apache Tomcat 9 버전 다운로드 후 압축해제
1. Apache Tomcat\conf\server.xml 에서 port 를 8080 에서 8888 로 변경 -> 왜냐? oracle web port 와 중복되므로
URIEncoding="utf-8" 설정 추가 -> http get 방식 요청 데이터의 한글 처리를 위해
2. Apache Tomcat\conf\server.xml 에서 reloadable="true" , 서버 프로그램 변경시 서버 restart 없이 자동 리로드 (이걸 안해주면 자바dao, jsp 변경시 리스타트해야함)
- Client Side : html (web document content 담당 ) , css ( web site design style 담당)
javascript (web document behavior 행위 담당 )
HTML : web document 의 컨텐츠를 담당 **
CSS : web document 디자인 스타일 담당 **
JavaScript : web document 행위 담당 **
ECMAScript 표준을 준수하는 스크립트 언어
ECMA 인터내셔널 : 정보 통신 표준을 제정하는 표준화 기구
ES5 (ECMA5, 2009) : 변수 선언 var -> 중복 선언 가능, Function-level scope
ES6 (ECMA6, 2015) : 변수 선언 let -> 중복 선언 불가 , Block-level scope
const 상수 , arrow function ( 화살표 함수 ) 등이 새롭게 추가
DOM ( Document Object Model ) : javascript 에서 Html(web) 문서(document) 의 요소(element)를 **
제어하기 위한 프로그래밍 인터페이스(제어 방법)를 제공한다 **
웹브라우저에서 지원
HTML 문서 요소를 계층적으로 지원 ( Dom Tree )
각 요소들을 자바스크립트에서 제어하고 조작하기 위한
함수를 제공
ex) 넷플릭스
전세계사람들에 동영상 서비스 지원,
여러개 독립된 서버들을 구축해놓음
통신방법이 레스트방식
-Server Side : Servlet & JSP
- Servlet : Java Web Programming의 기반 기술
model 2 MVC (Web MVC) 의 Controller 역할을 담당
java class 개발 방식
- JSP : Java Server Page , 서버 가이드에서 동적인 웹문서를 생성하는 템플릿 엔진 역할을 담당 //
html 내에 java code 삽입하는 개발 방식 -> 웹문서 구현에 장점
Jsp 는 WAS ( Web Container ) 에 의해 Servlet class 로 생성됨
// 나중에 스프링부트 - 타임루프 쓸 것
model 2 MVC (Web MVC) 의 View 역할을 담당
- Web MVC or Model2 MVC => 이후 공부예정
Model : 비즈니스 로직과 데이터 액세스 로직을 담당
java component(or java beans) 가 담당 : DAO, Service , VO 등
View : 클라이언트에게 동적인 화면을 제공
jsp 가 담당
Controller : 제어자의 역할 , 클라이언트 요청 분석 후 모델과 연동 , 적절한 view 를 선택
Servlet 이 담당
- Java Web Application 설정 방식
1) xml 설정 방식 : WEB-INF\web.xml => DD ( Deployment Descriptor : 배포기술서 )
소스 코드와 설정이 *분리*
2) Annotation 설정 방식 : 의미있는 주석 => 설정 정보의 역할
소스 코드 상에서 설정 정보를 기술 *통합*
web.xml의 예 : client 가 hello url 로 요청하면 step1.HelloServlet가 실행된다
HelloServlet
step1.HelloServlet //step1.HelloServlet 물리적위치의 별칭은
HelloServlet
/hello // 안에 hello가 HelloServlet 로 작동된다.
- Http Request Method ( 요청 방식 )
get 요청 방식 : 정보 조회용 , url 상에 전달하는 정보가 노출 , 전송 데이터 용량에 제한 (ex 뉴스)
post 요청 방식 : 정보 전송용 , url 상에 정보가 노출되지 않음 , 전송 데이터 용량에 제한이 없음 (ex 회원가입, 상품등록
별도의 한글처리가 필요
(ex - 로그인시 , 파일 업로드시에는 post 방식을 이용해야 함
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>html과 Servlet연동</title>
</head>
<body>
<!--
action : 처리할 서버 프로그램 url! => web.xml 에 기술되어 있음
method : http request method ( 요청 방식 )
아래는 get 방식임 , step1.HelloServlet 의 do goGet 메서드가 실행된다
-->
<form action="hello" method="get">
메세지 <input type="text" name="message" required="required">
<button type="submit">get요청방식버튼</button>
</form>
<hr>
<!-- 아래는 post 방식 요청임 step1.HelloServlet의 doPost 메서드가 실행됨 -->
<form action="hello" method="post">
메세지 <input type="text" name="message" required="required">
<button type="submit">post요청방식버튼</button>
</form>
</body>
package step1;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class HelloServlet
*/
public class HelloServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public HelloServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//System.out.println("doGet 실행");
response.setContentType("text/html;charset=utf-8"); //클라이언트 브라우저에서 응답할 정보의 타입과 한글처리를 지정 // "text/html // charset
PrintWriter out=response.getWriter();
out.print("<html>");
out.print("<body bgcolor=yellow>");
out.print("<h3>Hello Servlet doGet() 실행</h3>");
String message=request.getParameter("message");
out.print("<h4>메세지를 잘 받았습니다 보내신 메세지:"+message+"</h4>");
System.out.println(message);
out.print("</body>");
out.print("</html>");
out.close();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// post 요청 방식으로 전달되는 데이터는 별도의 한글 처리가 필요
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8"); //클라이언트 브라우저에서 응답할 정보의 타입과 한글처리를 지정 // "text/html // charset
PrintWriter out=response.getWriter();
out.print("<html>");
out.print("<body bgcolor=lime>");
out.print("<h3>Hello Servlet doPost() 실행</h3>");
String message=request.getParameter("message");
out.print("<h4>메세지를 잘 받았습니다 보내신 메세지:"+message+"</h4>");
System.out.println(message);
out.print("</body>");
out.print("</html>");
out.close();
}
}

'학원수업 > Web(HMTL,CSS,JSP,Servlet)' 카테고리의 다른 글
| 학원수업_39day [HTML,CSS,JSP,Servlet(6day) - ServletConfig, Servletcontext] (0) | 2022.09.26 |
|---|---|
| 학원수업_38day [HTML,CSS,JSP,Servlet(5day) - web ] (0) | 2022.09.23 |
| 학원수업_37day [HTML,CSS,JSP,Servlet(4day) - web ] (0) | 2022.09.23 |
| 학원수업_35day [HTML,CSS,Javascript (2day) - div,span ] (0) | 2022.09.21 |
| 학원수업_34day [HTML,CSS,Javascript (1day) - Web] (0) | 2022.09.20 |