스프링 프레임워크(Spring Framework) 외부연수
라이언의 꿀팁백과
1 강사님
오정임 purum01@naver.com
2 목표
- 스프링 프레임워크 이해
- Spring Framework 은 결국 JSP & Servlet을 더 효율적으로 사용하도록 돕는 도구
- 웹 시스템 유지보수 및 개발역량 함양
3 수업방식
- 100% 실습
※ (주의사항) Java 기본문법을 알고 JSP & Servlet(=Web)에 대한 기본이해가 있다는 것을 전제로 하고 수업을 함
4 커리큘럼
교육일자 | 회차 | 내용 | 비고 |
---|---|---|---|
2023.5.15(월) | 1일 | JSP &Servlet(=Web) 이해 | Spring Frameowrk 선수과정 |
2023.5.16(화) | 2일 | ||
2023.5.17(수) | 3일 | ||
2023.5.18(목) | 4일 | ||
2023.5.19(금) | 5일 |
5 필기노트
5.1 1일차
5.1.1 Java SE vs. Java EE
자바 언어를 활용한 개발은 크게 두 가지로 나뉜다.
- Java SE : Standalone 프로그램 개발 시 활용
- Java EE : 다른 프로그램(컨테이너, 엔진, 서버)에 의존해서 실행하는 프로그램 개발 시 활용 (예: JSP, Servlet)
정확히 말하자면 자바 언어를 활용한 개발은 정확히는 크게 네 가지로 나뉜다.
Differences between Java EE and Java SE
Java technology is both a programming language and a platform. The Java programming language is a high-level object-oriented language that has a particular syntax and style. A Java platform is a particular environment in which Java programming language applications run.
There are several Java platforms. Many developers, even long-time Java programming language developers, do not understand how the different platforms relate to each other.
The Java Programming Language Platforms
There are four platforms of the Java programming language:
- Java Platform, Standard Edition (Java SE)
- Java Platform, Enterprise Edition (Java EE)
- Java Platform, Micro Edition (Java ME)
- JavaFX
All Java platforms consist of a Java Virtual Machine (VM) and an application programming interface (API). The Java Virtual Machine is a program, for a particular hardware and software platform, that runs Java technology applications. An API is a collection of software components that you can use to create other software components or applications. Each Java platform provides a virtual machine and an API, and this allows applications written for that platform to run on any compatible system with all the advantages of the Java programming language: platform-independence, power, stability, ease-of-development, and security.
Java SEWhen most people think of the Java programming language, they think of the Java SE API. Java SE's API provides the core functionality of the Java programming language. It defines everything from the basic types and objects of the Java programming language to high-level classes that are used for networking, security, database access, graphical user interface (GUI) development, and XML parsing.
In addition to the core API, the Java SE platform consists of a virtual machine, development tools, deployment technologies, and other class libraries and toolkits commonly used in Java technology applications.
Java EEThe Java EE platform is built on top of the Java SE platform. The Java EE platform provides an API and runtime environment for developing and running large-scale, multi-tiered, scalable, reliable, and secure network applications.
Java METhe Java ME platform provides an API and a small-footprint virtual machine for running Java programming language applications on small devices, like mobile phones. The API is a subset of the Java SE API, along with special class libraries useful for small device application development. Java ME applications are often clients of Java EE platform services.
JavaFXJavaFX is a platform for creating rich internet applications using a lightweight user-interface API. JavaFX applications use hardware-accelerated graphics and media engines to take advantage of higher-performance clients and a modern look-and-feel as well as high-level APIs for connecting to networked data sources. JavaFX applications may be clients of Java EE platform services.
ChatGPT는 Java SE 와 JavaEE 차이점을 아래와 같이 대답했다.
5.1.2 WAS
WAS는 Web Application Server으로 JSP, Servlet을 처리하는 미들웨어 소프트웨어다. 우리는 수업 때, 전통적으로 많이 쓰이는 Tomcat 중 버전 8.5를 쓴다. JDK는 8을 쓴다. ChatGPT 설명을 참고하면 좀 더 이해가 쉽다. 쉽게 말해서 WAS는 웹 서버와 애플리케이션 서버를 연결하는 역할을 한다. WAS가 애플리케이션 서버는 아니다.
5.1.3 JDK
Sun 시절에는 JDK 8 버전까지는 오픈소스이나 그 이후부터는 Oracle 에서 라이선스 구독이 필요하다. 그러나 무료로 사용할 수 없는 것은 아니다. JDK는 OracleJDK, OpenJDK로 나뉜다. 이름에서 알 수 있듯이 OpenJDK는 무료다. OpenJDK의 종류로는 Azul 등이 있음.
참고로 JDK와 Tomcat 버전은 동일하게 맞춰야 제대로 작동한다. 정확히는 Tomcat 의 아래 표 중 Supported Java Versions를 살펴본 후, Tomcat을 설치해야 한다.
Oracle10gExpressEdition
5.1.4 개발환경 구성
- JDK 설치 (JDK 1.8.0_91)
- WAS 설치 (Tomcat 8.5)
- IDE 설치 (Eclipse Java EE Neon 2)
- Eclipse Plugin 설치 (OJDBC)
- DB 설치 (Oracle 10g DB Express Ediition)
5.1.5 web.xml 관련
WEB-INF/web.xml 파일은 컨테이너 환경설정 파일이다. Servlet 2.5 에는 항상 환경설정을 web.xml 에서만 해야했음. 그러나 Servlet 3.0 부터는 소스코드에 Annotation을 추가함으로써 환경설정을 추가할 수 있는 기능을 제공했다.
5.1.6 context
웹 애플리케이션 이름이라고 생각하면 됨
5.1.7 WEB-INF 디렉토리
- 기본적으로 애플리케이션 서버는 Context Root d아래, WEB-INF 이하 classes 에서 *.class 파일을, lib 에서 *.jar 파일을 찾음.
- Maven, Gradle 과 같은 패키지 관리 도구는 필요한 패키지(*.jar)를 lib 폴더에 자동으로 다운로드 및 복사를 함.
5.1.8 서블릿
웹에서 요청해서 실행할 수 있는 유일한 자바 프로그램을 서블릿이라고 한다. 서블릿은 아래와 같은 특성을 갖는다.
- 반드시 javax.servlet.http.HttpServlet 상속
(Lunch Time)
javax.servlet 과 javax.servlet.http 기억하기
컨테이너가 최초 호출이 되면 아래와 같은 일이 일어남.
- 객체 생성
- init() 호출
- HttpServletRequest(①), HttpServletRespons(②) 객체 생성
- service(①, ②)
두 번째 부터는 아래와 같은 일만 일어남.
- HttpServletRequest(①), HttpServletRespons(②) 객체 생성
- service(①, ②)
HttpServlet은 GenericServlet을 상속하고 있음. init() 함수는 GenericServlet에 있고, service() 함수는 HttpServlet에 있다.
5.1.8.1 서블릿 경로 만들기
- web.xml 수정
- 어노테이션 @ 사용
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>edu</display-name>
<servlet>
<servlet-name>first</servlet-name>
<servlet-class>com.edu.test.FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>first</servlet-name>
<url-pattern>/exam01</url-pattern>
</servlet-mapping>
</web-app>
5.2 2일차
업데이트 예정
5.3 3일차
업데이트 예정
5.4 4일차
업데이트 예정
5.5 5일차
업데이트 예정
6 강의자료
7 참고자료
- Apache Tomcat® - https://tomcat.apache.org
- Apache Tomcat® Documentation - https://tomcat.apache.org/tomcat-8.5-doc/index.html
- Servlet 3.1 Javadoc - https://docs.oracle.com/javaee/7/api/index.html?javax/servlet/package-summary.html
- Java Downloads - https://www.oracle.com/kr/java/technologies/downloads/
- Spring API - https://docs.spring.io/spring/docs/4.3.8.RELEASE/javadoc-api/
- Mybatis - http://www.mybatis.org/mybatis-3/apidocs/reference/org/apache/ibatis/session/SqlSession.html
- Mybatis-Spring - http://www.mybatis.org/spring/apidocs/
- Mybatis Mapper XML Files - http://www.mybatis.org/mybatis-3/sqlmap-xml.html
- JavaScript - http://www.w3schools.com/js/default.asp
- Devdocs - http://devdocs.io/
- CSS - https://www.kobzarev.com/wp-content/uploads/cheatsheets/css/css3-cheat-sheet.pdf / https://developer.mozilla.org/ko/docs/Web/CSS/Css_Reference
- jQuery - https://oscarotero.com/jquery/