1. 스마트 시대의 Web Programming
1) Web 2.0에서 Web 3.0
->시맨틱 웹이 개념 - 컴퓨터가 정보 자원의 뜻을 이해하고 논리적 추론까지 가능
->인공지능이나 블록체인의 개념 추가
**HTML5의 목적
=>Off Line Web Application
=>Semantic Web
@앱개발 할 때 유의해야 할점 어디까지 업데이트 할 것인지?
2) WOA(Web Oriented Architecture)
=>요즈음은 한 명의 유저가 여러 개의 디바이스를 사용하는 경우가 많은데 이 디바이스를 사용 할 때 기존의 서비스가 끊기지 않고 이어서 수행되기를 원하는 경우가 많음
이 것을 Web구현하는 것이 쉬움
=>웹을 중심으로 전체 시스템 아키텍쳐 설계
3) FrameWork
=>프로그램의 규모가 확대/ 개발 방법론들이 많이 등장 -개발자가 공부할 내용이 많음
=>개발자가 공부할 내용을 최소로 하기 위해 공통으로 만들어야하는 내용을 Framework가 제공해서 개발을 빠르고 견고하게 할 수 있도록 도와주는 프로그램/툴
PHP의 라라벨
2.web Service 구현방식
1)정적 애플리케이션
=>HTML, CSS, JavaScript를 이용해 구현
=>JavaScript를 이용해서 동적 구현이 가능하지만, JAvaScript는 자신의 브라우저 바깥을 나가지 못함
2)동적 애플리케이션
=>CGI(Common Gateway Interface):클라이언트의 요청을 별도의 프로그램이 처리하는데 이 경우는 프로세스 형태로 처리
-한 번에 하나의 요청만 처리 가능한 방식으로 Perl이나 VB기반의 asp
=>Application Server 방식:클라이언트의 요청의 별도의 프로그램이 처리하는데 스레드 형태로 처리
-한 번에 여러 개의 처리가 가능한 방식으로 java, C#, Python, Ruby, JavaScript의 프레임워크 등을 이용해 구현
=>Web Server이 외에 프로그램을 호출할 별도의 컨테이너가 필요
-이 경우는 일반적으로 Web Server, Web Container, Application Server, Program, Repository로 구성
Web Server로는 Apache, IIS, Linux Web Server 등을 이용
Web Container로는 Tomcat, Web Logic, Jboss, Zetty, resion 등 이있고
국산 제품으로는 zeus가 있음
Application Server Program은 프로그래밍 언어만을 이용하기도하고 Framework를 같이 사용하기도 함
Repository는 RDBMS(Oracle, MySQL, MS-SQL 등),NoSQL, Hadoop등의 분산 처리 시스템등이 사용
3.Java Web Programming 개발 환경
1)데이터베이스
=>MySQL 8.0을 Docker에 설치
=>접속 도구로 DBeaver 사용
2)Java
=>JDK 11버전
3)IDE(통합 개발 환경)
=>Eclipse-Eclipse를 직접 활용하도 되고 Plug형태로 제공하는 STS, 전자 정부 프로그레임워크, AnyFramework
STS3 버전을 사용 - STS4 Spring Legacy Project 메뉴가 없어짐
VO 클래스를 간단하게 만들 수 있도록 해주는 lombok 설치
다운로드 링크
Spring Tools 4 is the next generation of Spring tooling
Largely rebuilt from scratch, Spring Tools 4 provides world-class support for developing Spring-based enterprise applications, whether you prefer Eclipse, Visual Studio Code, or Theia IDE.
spring.io
3버전 Spring Tool Suite 3.9.16
https://github.com/spring-attic/toolsuite-distribution/wiki/Spring-Tool-Suite-3
=>IntelliJ-최근에 많이 사용 무료 버전은 Web Programming을 못함
4.HttpServlet
=>URL을 이용해서 호출할 수 있는 Java클래스
=>J2EE API클래스
J2EE를 설치해서 사용해야 하는데 J2SE를 설치하고 Web Container들이 HttpServlet 클래스를 사용할 수 있는 라이브러리를 제공하므로 이 라이브러리를 이용해서 사용하거나 Spring Framework를 이용해서 사용할 수 있다.
=>javax.servlet.http.HttpServlet 클래스를 상속받아서 필요한 메서드를 재정의하고 URL를 등록하는 형태로 사용
=>자바 클래스이므로 자바 코드에 출력을 위한 코드를 삽입해 웹브라우저에 출력
=>웹 컨테이너가 인스턴스를 생성하고 수명 주기를 관리
1)일반적인 자바클래스와 다른점
=>직접 인스턴스를 생성하지 않고 웹 컨테이너가 인스턴스를 생성해서 수명 주기를 관리
-loC(Inversion of Control - 제어의 역전 또는 역 흐름) **외우기
IoC/DI,AOP,security,test
2)JSP(Java Server Pages)
=>HttpServlet이 Java클래스라서 자바 코드를 작성하는 것은 쉽지만 HTML출력을 작성하는 것은 번거롭다.
why? Java코드 안에 HTML을 삽입하는 형태로 작성해야 하기 때문에
=>HTML 코드 안에 java코드를 넣을 수 있도록 변형한 것 : JSP
3)HttpServlet과 JSP비교
=>Servlet은 첫번째 요청이 오거나 웹 컨테이너가 시작될 떄 컴파일하고 인스턴스를 생성한 후 이 인스턴스를 재사용하는 형태로 동작
=>JSP는 해당하는 요청이 오면 HttpServlet클래스로 변경되고 인스턴스를 생성해서 요청 처리하고 소멸된다.
=>Servlet 코드를 수정하면 코드를 다시 컴파일해서 인스턴스를 만들어야기때문에 웹 컨테이너를 중지시켰다가 새로 시작해야한다.
=>JSP코드는 요청할 때 마다 컴파일을 하기 떄문에 코드를 수정해도 컨테이너를 재시작할 필요가 없다.
5.Web Container 설치
=>Apache Tomcat 사용
=>Web Container는 Web Application Server라고도 부르는데 Web Server가 URL을 이용해서 필요한 로직을 호출할 수 있도록 Web Component를 관리하는 역할을 수행하는 프로그램
-Java 진형에서는 Open Source인 Tomcat을 많이 사용함
-Spring Boot에서는 설치할 필요 X
-국내 공공 기관 SI에서는 티맥스에서 만든 zeus를 많이 사용함
6.Servlet과 JSP파일을 생성해서 실행한 후 Web Browser에서 확인
1)Dynamic Web Project를 생성
Generate web.xml 생성 체크
2) 실행
=>프로젝트 선택 마우스 우 클릭 Rus As
여기서 톰캣 설정 or 서버 삭제 후 서버 설치
톰캣은 9.0!!!
3)Servlet 생성
=>src/main/java 디렉토리 안에 HttpsServlet 클래스를 상속받는 클래스를 만들고 이 클래스와 매핑할 URL을 어노테이션을 이용해서 작성하거나 web.xml파일에 기재한 후 요청을 처리할 메서드 재정의
=>확인은 SErvlet클래스를 선택하고 실행해도 되고 프로젝트를 실행한 후 브라우저에 매핑하 ㄴURL을 입력해서 확인해도 됨
4)jsp 생성
=>src/main/webapp디렉토리 안에 생성 작성 특별 설정 없으면
src/main/webapp안에 있는 경로가 URL이 됨
=>Servlet이기는 하지만 doGet과 doPost메서드가 없으면 요청을 분리해서 처리하지 못함
7.JSP(Java Server Page)
=>Servlet의 변형으로 HTML코드에 자바 코드를 삽입하는 형태로 사용할 수 있는 Java Web Component
=>최근의 Web Programming에서 MVC 패턴이 Model2패턴이 등장하면서 jsp파일에 java코드를 직접 사용하는 것을 금기시
=>Model2 는 처리하는 코드는 Servlet이나 Java Class에 작성하고 출력하는 코드만 jsp파일에 출력하는 것
=>MVC(Model View Controller) 패턴:역할 별로 분리 작성
Model:데이터를 만들어내는 부분 -Service, Repository, VO-DTO-Entity 등
View:화면 출력 부분 -jsp
Controller 2개를 연결시켜주는 부분 -Servlet
=>한 동안은 jsp파일에 EL과 JSTL을 이용해서 출력 함..
jsp 는 Server 에서 해석 한 후 HTML 코드를 클라이언트에 전송하는 형태로 동작하는데
최근에는 서버에서 랜더링을 하지 말자는 추세여서 jsp 사용이 많이 줄어듦
why? 클라이언트 디바이스의 다양화 떄문에 모든 클라이언트의 요청에 맞추어서 화면을 만들어 줄 수 없기 때문
요즘은 서버에서 REST API형태로 json형태의 데이터를 전송해주면 클라이언트 측에서 web socket, ajax, FERCH API등을 이용해서 데이터를 전송받고 전송받은 데이터를 파싱해서 직접 출력함
이러한 작업을 단순화 시켜주는 라이브러리로 react, vue, anguler 등이 많이 사용됨
이 객체를 이용해서 클라이언트의 정보를 읽음 클라이언트의 정보중에서 가장 대표적인 것이 요청 방식, 요청 URL,파라미터 입니다.
요청방식
🎉GET:데이터를 URL에 붙여서 전송하는 방식으로 URL 뒤에 ? 를 추가하고 속성이름=값& 의 형태로 전송
(Query String) 파라미터의 길이에 제한이있고 보안성이 떨어지지만 자동 재전송 기능이 있음, 일반적으로 읽기 작업에 사용
🎉POST:데이터를 요청 헤더에 숨겨서 전송하는 방식, 길이 제한이 없고 외부로 노출되지 않기 떄문에 보안성이 좋지만 자동 재전송 기능이 없음, 전에서 삽입, 삭제, 갱신 등에 모두 이용했지만 최근에는 삽입에만 이용하는 것을 권장, 반드시 인코딩 해서 전송하고 읽는 곳에서 인코딩 설정을 해서 읽어야 하면 전송하고자 하는 데이터에 파일이 있거나 textarea,password가 있다면 GET으로 전송하는 것은 안 됨 파일을 전송할 때는 enctype을 mulitipart/form-data로 설정해야 한다.
🎉PUT: POST와 같고 수정할 때 사용
🎉DELETE: POST와 같은데 삭제할 때 사용
*파라미터를 읽을 때는 request.getParameter나 request.getParameterValues 메소드 사용
Spring에는 대부분 파라미터를 Vo나 DTO클래스를 이용해서 읽어낸다
최근에는 하나의 파라미터 같은 경우는 파라미터를 이용하지 않고 URL를 이용
@pathvariable 어노테이션
ex 파라미터에 =? 없음 /바로
request 객체를 이용하면 접속한 클라이언트의 IP 나 referrer 나 운영체제 종류 및 브라우저 종류를 파악할 수 있다.
=>HttpServletResponse.response:요청 처리 메서드의 2번째 매개 변수로 응답 객체로 클라이언트에게 응답을 전송하고자 할 때 사용
=>JSPWriter out:서블릿에서는 response를 이용해서 생성해야함
클라이언트 브라우저에 출력하기 위해 버퍼에 기록하는 클래스 인스턴스
=>ServletContext application:모든 클라이언트가 공유할 수 있는 객체
=>HttpSession session:하나의 클라이언트가 사용할 수 있는 객체로 접속 할 때 만들어지고 접속이 끝나면 소멸
request 객체를 이용해서 생성 가능
=>Object page: 하나의 페이지가 생성될 때 만들어지고 페이지가 없어질 때 소멸되는 객체
=>ServletConfig config: 서블릿 환경 설정 정보
=>PageContext pageContext: JSP페이지 내에서 사용할 수 있는 데이터 저장 기능을 소유한 객체
=>Throwable exception: 예외 발생했을 때 예외 내용을 가지고 있는 객체
'ETC > 개발지식' 카테고리의 다른 글
Git 업로드하기 (0) | 2022.10.12 |
---|---|
Java Web Programming -STS #2 (0) | 2022.10.12 |
사이트 크롤링이 어려운 case (0) | 2022.09.26 |
tomcat 서버 오류날 때 (0) | 2022.08.17 |
[제작순서] 게시판, 회원가입, 공지사항, 갤러리보드, 상품등록 (0) | 2022.08.08 |
댓글