뭐가 엄청 많은데 가장 기본적인것
버전 + 플러그인 + 라이브러리 관리로 생각하고 있다.
Properties
Dependencies내부에는 dependency를 등록해 라이브러리를 적용한다.
<!-- dependencies : Maven 프로젝트는 외부 저장소와 의존 관계를 맺고 있어 프로젝트에 필요한 파일을(라이브러리)
사용자가 직접 받을 필요 없이 해당 태그 내에 지정된 형식으로 작성하면 네트워크를 통해 외부 저장소에서 자동으로 얻어와 세팅함. -->
<dependencies>
<!-- 롬복[lombok] 라이브러리 추가 -->
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
내가 추가한 라이브러리
1. lombok
2. jstl( impl , spec , jstlel )
3. Spring 모듈 ( 뭐 이것저것 많은데 못알아보겟다 )
4. AspectJ ( AOP 기능을 사용하기 위한 언어 문법 )
5. AspectJ Weaver (AspectJ를 구성한 코드를 생성하는데 필요한 유틸)
6. Log4j (Logging 오늘 배운것 중 꿀템 syso 안찍어도됨)
7. InJext
8. jsp-api(Servlet 버전을 4.0으로 변경)
9. JUnit (단위 테스트 도구)
10. pom.xml 에러방지
뭐 엄청나게 많다 언제 다 이해하지
밑에 빌드 관련 설정도 있는데 이건 그냥 설정 관련 연결이라 필요한때 마다 보는게 정신건강에 이로울것 같다.
컴파이 관련 설정도 있는데 '버전 맞추자 이것만 기억하자.'
WAS ( Web Apllication Server )
동적웹 수행 시작시 가장 먼저 읽어들이는 파일
서버 실행 시 초기 설정 내용
DispatcherServlet
클라이언트에게 들어오는 모든 요청을 1차적으로 앞에서 받아 들이는
'진짜' Front Controller 요청에 일치하는 Controller들과 연결하고
해당 Controller의 반환 결과에 따라 알맞은 View를 선택해 응답한다.
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/appServlet/servlet-context.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
대략적으로 이해하자면
loadn - on startup 1으로 모든 요청중 가장 먼처 처리하게 되는것 같다
그 후 로직은 프링이가 알아서 controller로 보내주는것 같다
나중에 네트워크 심층 로직이랑 톰캣아파치 동작원리 자세하게 이해하기 위한 시간이 한번 필요할 것 같다.
또한 기본적으로 Servlet 프로젝트할때 가장 먼저 설정한 것 중 하나가
encodingFilter였는데 원래는 Java폴더 안에 Filter로 등록을 했는데
스프링에서 기본적으로 지원해주기 때문에.
web.xml에서 작성하면 된다
개꿀
<!-- 한글 깨짐 방지를 위한 Filter 추가 -->
<!-- 별도의 filter 클래스를 만들지 않고 스프링에서 제공하는 filter를 사용 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>