프로젝트 생성은 오랜만에 하다 보니까 살짝 햇깔린 것들이 있어서 정리하려고 한다. 구글 드라이브에 저장해놨던 내용들을 평소에 궁금했지만 익숙해서 설정했던 것들이 뭔지 알아가면서 해보려 한다.
file > new > spring legacy project 생성
프로젝트명 입력 > spring MVC project 선택 > Next
패키지 명 입력. 최소 3레벨 이상으로 구성하는 것이 규칙
많은 폴더들이 만들어진 것을 확인 할 수 있다.
지금 캡쳐는 이미 pom.xml을 수정한 상태니까 자바 버전은 무시하자! (기본 1.6 인듯)
익숙해서 계속 사용하고 있었지만 설명하기는 힘든 상태이므로 폴더들과 파일들에 대해서 조금 알아보자.
1. Maven Dependencies
Maven이란?
- 프로젝트 진행 시 사용할 라이브러리를 관리를 도와줌. pom.xml에 필요한 라이브러리를 정의하면 사용할 라이브러리뿐만 아니라 해당 라이브러리가 작동하는데 필요한 다른 라이브러리까지 관리하여 네트워크를 통해 자동으로 다운 받아줌. > Maven이 없다면 수동으로 외부 라이브러리를 추가 해줘야함.
- 외부 라이브러리를 사용 할 때 온라인을 통해서 라이브러리를 관리를 할 수 있음.
- 작업 환경이 다른 개발자들이 소스코드를 공유하기 위해서 메이븐을 사용할 때 pom.xml을 같이 공유하면 개발환경이 다르더라도 에러가 터지지 않고 정상적으로 실행됨.
- 라이브러리 저장 위치(repository)?
window > preferencees > Maven > User settings에서 저장 위치를 확인 할 수 있음.
+ 온라인 네트워크를 통해서 관리하는데 유선은 괜찮지만 무선의 경우 인터넷 연결이 불완전해서 파일 손상이 될 수 있음. 그런 경우 repository를 지우고 다시 다운.
2. pom.xml
- 프로젝트 정보 : 프로젝트 이름, 개발자 목록, 라이센스 등의 정보 기술
<name> : 프로젝트 이름
<url> : 프로젝트 사이트 URL
- 빌드 설정 : 소스, 리소스, 라이프 사이클 별 실행할 플러그인 등 빌드와 관련된 설정 기술
- 빌드 환경 : 사용자 환경 별로 달라질 수 있는 프로파일 정보를 기술
- POM 연관 정보 - 의존 프로젝트(모듈), 상위 프로젝트, 포함하고 있는 하위 모듈 등을 기술
<groupId> : 프로젝트의 그룹 ID 설정
<artifactId> : 프로젝트의 Artifact ID 설정
<version> : 버전 설정
<packaging> : 패키징 타입 설정
<dependecies> : 이 프로젝트에서 의존하는 다른 프로젝트 정보를 기술함
ㄴ <dependency> </dependency> : 하나의 라이브러리르 의미
+ JRE System Library 업데이트 하는 법
프로젝트 오른쪽 마우스 > Maven > Update Project이 설정 정보(pom.xml)을 기반으로 해서 repository에 각종 라이브러리가 다운 될 것.
수정 사항
<properties>
<java-version>1.8</java-version>
<org.springframework-version>5.0.7.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArgument>-Xlint:all</compilerArgument>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
3. servlet-context.xml
- 웹과 관련된 스프링 설정 파일
DispatcherServlet과 관련된 설정을 해야 함
* DispatcherServlet이란?
- web.xml에서 등록 가능
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/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>
- servlet 컨테이너에서 HTTP 프로토콜을 통해 들어오는 모든 요청을 제일 앞에서 처리하는 컨트롤러
- 동작방식 ?
관련 내용 http://springmvc.egloos.com/504151 진짜 잘 설명되어 있다.
처음에는 진짜 잘 이해 안됬는데 이제 조금 읽힌다.
기본 형태
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />
<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/dist/**" location="/resources/dist/" />
<resources mapping="/plugins/**" location="/resources/plugins/" />
<resources mapping="/resources/**" location="/resources/" />
<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
<context:component-scan base-package="com.spring.escape" />
</beans:beans>
- <annotation-driven /> 어노테이션 사용 선언
- <resources mapping = "/resources/**" location="resources/"> html 리소스 디렉토리 정의
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
jsp와 name을 매핑함.
<context:component-scan base-package="com.spring.escape" />
패키지 하위의 모든 어노테이션을 스캔해서 빈으로 등록하겠다는 것.
4.root-context.xml
기본 형태
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
</beans>
- view와 관련되지 않은 객체 정의 (service, repository(DAO), DB 등의 비즈니스 로직 관련 설정)
- 처음 프로젝트 생성시 아무 내용 없음.
- 스프링 설정 파일
5.web.xml
설정을 위한 설정 파일. WAS가 최초로 구동시 각종 설정 정의.
여러 xml 파일을 인식하도록 각 파일을 가리킴.
기본 형태
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>
<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Processes application requests -->
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/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>
</web-app>
<context-param></context-param> : web.xml의 전역 변수를 선언해주는 부분.
ㄴ <param-name> : context parameter 이름
ㄴ <param-value> : context parameeter 값
<listener></listner> : apllication listenr bean 가리키기 위한 부분. bean은 웹 어플리케이션에 등록되어있어야 함.
<servlet></servlet> : servlet 선언시 사용.
<servlet-mapping></servlet-mapping> : servlet과 url 사이의 매핑 정의
ㄴ url-pattern : servlet과 매핑할 url 패턴을 선언하는 부분 / 서블릿에 어떤 요청을 할 때 특정 url로만 요청 될 수 있게 함.
추가로 사용해본 적 있는 element만 정리해보겠다.
- <filter> Element : 사용하는 필터 선언하는 부분.
<!-- Korean Filter -->
<filter>
<filter-name>CharacterEncodingFilter</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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
- <fiter-mapping> Element : 설정한 필터를 어디에 적용할 것인지 url/servlet을 통해 선언함
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- <welcome-file-list> Element : 서버로 요청이 들어왔을 때 표시할 파일을 순서대로 정의함
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
바탕으로 환경 설정을 완료하겠다.
+ 읽어보려고 기록하는 블로그
http://springmvc.egloos.com/487497
'Spring' 카테고리의 다른 글
스프링 핵심 원리 기본편 - 챕터 6. 컴포넌트 스캔 (0) | 2023.03.19 |
---|---|
스프링 핵심 원리 기본편 - 챕터 5. 싱글톤 컨테이너 (0) | 2023.03.19 |
스프링 핵심 원리 기본편 - 챕터 4 (0) | 2023.03.12 |
스프링 핵심 원리 기본편 - 챕터 3 (0) | 2023.03.10 |
스프링 핵심 원리 기본편 - 챕터 1,2 (0) | 2023.03.05 |
댓글