2023. 10. 28. 02:23ㆍ학부 강의/웹프로그래밍 (Spring)
0. 출처
아직 배우고 있는 중이라 부정확한 정보가 포함되어 있을 수 있습니다!
주의하세요!
올인원 스프링 프레임워크 참고.
1. STS
- STS
: Spring Tool Suite
: Spring 개발을 도와주는 툴 모음.
STS3을 사용한다.
STS3에선 Eclipse에 STS 플러그인을 설치할 수 있고 STS를 설치할 수도 있다.
STS를 설치하도록 한다.
가. 설치
우선 springMVC_STS
아래 workspace로 사용할 project
폴더와 다운로드한 파일을 관리할 download
폴더를 생성한다.
github에서 설치한다.
Spring Tool Suite 3.9.18의 full distribution on Eclipse 4.21 ver 설치한다.
springMVC_STS\download
아래에 다운로드 후 압축 푼다.
STS.exe
를 실행한다.
springMVC/project
를 workspace로 설정한다.
나. 인코딩 설정
- Workspace encoding
: Window → Preferences → General → Workspace → Text file encoding → Other 체크 → UTF-8 선택
- CSS encoding
: Window → Preferences → Web → CSS Files → Encoding → ISO 10646/Unicode(UTF-8)
- HTML encoding
: Window → Preferences → Web → HTML Files → Encoding → ISO 10646/Unicode(UTF-8)
- JSP encoding
: Window → Preferences → Web → JSP Files → Encoding → ISO 10646/Unicode(UTF-8)
2. Tomcat
- 아파치 톰캣(Apache Tomcat)
: 아파치 소프트웨어 재단에서 개발한 서블릿 컨테이너(또는 웹 컨테이너)만 있는 웹 애플리케이션 서버이다.
: 웹 서버와 연동하여 실행할 수 있는 자바 환경을 제공하여 JSP와 Java Servlet이 실행할 수 있는 환경을 제공하고 있다.
톰캣은 웹 컨테이너로 웹 애플리케이션에 필요한 웹 컴포넌트를 실행할 수 있는 환경을 제공한다.
출처 : https://ko.wikipedia.org/wiki/아파치_톰캣
가. 설치 및 연동
강의에서는 Tomcat 9 버전 사용했음.
springMVC_STS\download
아래에 다운로드 후 압축 풀기.
기본으로 설치된 VMWare Server는 삭제한다.
Tomcat server 추가.
Tomcat indtallation directory에 Tomcat이 설치된 디렉터리를 선택한다.
정상적으로 추가된 tomcat server.
나. 설정
STS3에서 Tomcat의 설정을 바로 수정할 수 있다.
Use Tomcat Installation
: 톰캣의 경로를 지정하는 방법.Publish module contexts to separate XML files
: 서버 설정 파일을 STS에서 관리하기 위해서 필요Ports
: 사용할 포트 번호 선택. 8090 사용.
설정 후 Ctrl + s
로 저장한다.
오른쪽 삼각형 버튼을 눌러서 실행한다.
여기서 가끔 경고창이 뜨는 경우가 있다.
CONSOLE PERFEORMANCE WARING (from Ansi Console)!
Console buffer size too low (80,000). About 2 times slower
....
콘솔 창의 버퍼 크기가 작아서 생기는 문제다.
Window → Preferences → Run/Debug → Console → Limit console output 해제
http://localhost:8090/에 접속하기.
성공적인 설치
다. 보충 설명
1) “Publish module contexts to separate XML files” 옵션 설명
톰캣의 디렉터리 구조
❯ pwd
/Users/dmlrms4598/Desktop/Study_JavaSpring_2/download/apache-tomcat-9.0.82
❯ ll
total 240
drwxr-xr-x@ 16 dmlrms4598 staff 512 10 26 23:58 .
drwxr-xr-x 4 dmlrms4598 staff 128 10 26 23:58 ..
-rw-r-----@ 1 dmlrms4598 staff 19992 10 11 22:15 BUILDING.txt
-rw-r-----@ 1 dmlrms4598 staff 6210 10 11 22:15 CONTRIBUTING.md
-rw-r-----@ 1 dmlrms4598 staff 57092 10 11 22:15 LICENSE
-rw-r-----@ 1 dmlrms4598 staff 2333 10 11 22:15 NOTICE
-rw-r-----@ 1 dmlrms4598 staff 3398 10 11 22:15 README.md
-rw-r-----@ 1 dmlrms4598 staff 6901 10 11 22:15 RELEASE-NOTES
-rw-r-----@ 1 dmlrms4598 staff 16505 10 11 22:15 RUNNING.txt
drwxr-x---@ 29 dmlrms4598 staff 928 10 11 22:15 bin
drwx------@ 12 dmlrms4598 staff 384 10 11 22:15 conf
drwxr-x---@ 34 dmlrms4598 staff 1088 10 11 22:15 lib
drwxr-x---@ 2 dmlrms4598 staff 64 10 11 22:15 logs
drwxr-x---@ 3 dmlrms4598 staff 96 10 11 22:15 temp
drwxr-x---@ 7 dmlrms4598 staff 224 10 11 22:15 webapps
drwxr-x---@ 2 dmlrms4598 staff 64 10 11 22:15 work
앞서 Publish module contexts to separate XML files
옵션을 사용했었다.
그 이유는 Context를 관리하기 편하기 때문이다.
Tomcat에서 웹 애플리케이션을 실행시킬 때 참고할 Context를 정의해야 한다.
Tomcat이 설치된 디렉터리에는 conf
라는 디렉터리가 위치해 있다.
이때 conf/context.xml
에 모든 애플리케이션에 공통으로 해당되는 기본적인 Context를 정의한다.
웹 애플리케이션 별로 개별적인 Context에 대하여 정의할 때는 conf/server.xml
나 conf/Catalina/[hostname]/[appname].xml
에 저장한다.
각 애플리케이션마다 분리된 conf/Catalina/[hostname]/[appname].xml
파일로 관리하는 것이 conf/server.xml
하나로 관리하는 것보다 관리 및 분리의 어려움, 설정의 복잡성 증가 등 여러 이유로 권장된다.
항목 | 설명 |
/conf/context.xml | - Tomcat의 모든 웹 애플리케이션에 공통으로 적용되는 기본 Context 설정을 포함합니다. - 개별 웹 애플리케이션의 <Context>설정에 명시되지 않은 경우, 이 파일의 설정이 기본값으로 사용됩니다. |
/conf/server.xml | - Tomcat 서버 전체의 구성과 관련된 설정을 포함합니다. - 여러 서비스, 커넥터, 엔진, 호스트 등을 포함할 수 있습니다. - <Host> 아래에 <Context>를 정의할 수 있지만, 이 방식은 권장되지 않습니다. |
/conf/Catalina/[hostname]/[appname].xml | - 특정 웹 애플리케이션에만 적용되는 <Context> 설정을 포함합니다. - [hostname]은 서버의 호스트 이름, [appname]은 웹 애플리케이션의 이름을 나타냅니다. - 이 파일의 설정은 해당 웹 애플리케이션에만 적용됩니다. |
2) document root 설정
eclipse를 사용하면 할 필요없음. 참고만 하세요.
Tomcat의 설정을 수정하기 위해서는 설치된 디렉터리의 conf/server.xml
을 수정해야 한다.
conf/server.xml
: Tomcat의 핵심 구성 요소 및 연결, 동작 방식을 정의.
: 여기에는 서버의 네트워크 설정, 웹 애플리케이션 배포 방식, 보안 설정 등의 주요 정보가 포함됨.
톰캣의 디렉터리 구조
❯ pwd
/Users/dmlrms4598/Desktop/Study_JavaSpring_2/download/apache-tomcat-9.0.82
❯ ll
total 240
drwxr-xr-x@ 16 dmlrms4598 staff 512 10 26 23:58 .
drwxr-xr-x 4 dmlrms4598 staff 128 10 26 23:58 ..
-rw-r-----@ 1 dmlrms4598 staff 19992 10 11 22:15 BUILDING.txt
-rw-r-----@ 1 dmlrms4598 staff 6210 10 11 22:15 CONTRIBUTING.md
-rw-r-----@ 1 dmlrms4598 staff 57092 10 11 22:15 LICENSE
-rw-r-----@ 1 dmlrms4598 staff 2333 10 11 22:15 NOTICE
-rw-r-----@ 1 dmlrms4598 staff 3398 10 11 22:15 README.md
-rw-r-----@ 1 dmlrms4598 staff 6901 10 11 22:15 RELEASE-NOTES
-rw-r-----@ 1 dmlrms4598 staff 16505 10 11 22:15 RUNNING.txt
drwxr-x---@ 29 dmlrms4598 staff 928 10 11 22:15 bin
drwx------@ 12 dmlrms4598 staff 384 10 11 22:15 conf
drwxr-x---@ 34 dmlrms4598 staff 1088 10 11 22:15 lib
drwxr-x---@ 2 dmlrms4598 staff 64 10 11 22:15 logs
drwxr-x---@ 3 dmlrms4598 staff 96 10 11 22:15 temp
drwxr-x---@ 7 dmlrms4598 staff 224 10 11 22:15 webapps
drwxr-x---@ 2 dmlrms4598 staff 64 10 11 22:15 work
톰캣의 기본 Document Root는 webapps/ROOT
이다.
그러면 기본 Document Root는 어디에서 설정되었는지 살펴보자.
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
..
</Host>
conf/server.xml
의 <Host>
태그는 아래와 같이 설정되어 있고, <Context>
태그가 생략되어 있다.
<Context>
를 사용하지 않으면 webapps/ROOT
를 자동으로 Document Root로 사용한다.
<!-- webapps/hello를 Document Root 로 지정한 예제 -->
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- Document Root를 수정함 -->
<Context path="" docBase="hello" reloadable="true"/>
...
</Host>
webapps/hello
을 Document Root로 지정해 보았다.
<Context>
태그를 사용해 appBase
하위 디렉터리를 Document Root로 지정할 수 있다.
# maven 빌드
mvn clean package # 또는 mvn clean install
# war 이동
#cp target/[artifactId].war [path to tomcat]/webapps/[document root].war
cp hello-1.0.0-BUILD-SNAPSHOT.war ../../../download/apache-tomcat-9.0.82/webapps/hello.war
# tomcat start
[tomcat 설치 위치]/bin/startup.sh
해당 과정을 매번 반복할 순 없으니 ide를 사용하자.
# tomcat 명령어
[tomcat 설치 위치]/bin/startup.sh
[tomcat 설치 위치]/bin/shutdown.sh
# maven 명령어
# 1. `target` 디렉토리를 클린하여 이전 빌드 결과물을 제거합니다.
mvn clean
# 2. 소스 코드를 컴파일합니다.
mvn compile
# 3. 단위 테스트를 실행합니다. (`src/test/java` 내의 테스트들)
mvn test
# 4. 프로젝트를 JAR, WAR 등의 패키지로 번들링합니다.
mvn package # mvn clean package 가능
# 5. 컴파일 및 테스트 후, 패키지를 로컬 Maven 저장소에 설치합니다.
# mvn package의 모든 단계를 수행하고 추가로, 패키징된 아티팩트를 로컬 Maven 저장소에 설치합니다.
# 이로 인해 다른 로컬 Maven 프로젝트에서 해당 아티팩트를 종속성으로 사용할 수 있게 됩니다.
mvn install
# 6. 생성된 패키지를 원격 Maven 저장소에 배포합니다.
mvn deploy
# 7. 프로젝트가 올바른지와 필요한 모든 정보가 사용 가능한지 확인합니다.
mvn validate
# 8. 프로젝트의 종속성 트리를 출력합니다.
mvn dependency:tree
# 9. Maven 아키텍처를 사용하여 새 프로젝트 구조를 생성합니다.
mvn archetype:generate
# 10. `clean`과 `install` 명령을 함께 실행하여 이전 빌드 결과물을 제거하고, 빌드 후 패키지를 로컬 저장소에 설치합니다.
mvn clean install
# 11. 빌드 시 테스트를 건너뜁니다.
mvn install -DskipTests
# 12. 프로젝트의 실제 POM (부모 POM을 포함한)을 출력합니다.
mvn help:effective-pom
출처 : http://wiki.gurubee.net/pages/viewpage.action?pageId=1508019
3) conf/Catalina/[hostname]/[appname].xml 추가
eclipse를 사용하면 할 필요없음. 참고만 하세요.
앞서 “각 애플리케이션마다 분리된 conf/Catalina/[hostname]/[appname].xml
파일로 관리하는 것이 conf/server.xml
하나로 관리하는 것보다 관리 및 분리의 어려움, 설정의 복잡성 증가 등 여러 이유로 권장된다.”라고 언급했다.
conf/server.xml
에 있던 <Context>
를 /conf/Catalina/localhost/[appname].xml
로 옮긴다.
<!-- [appname].xml 형식 -->
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="[document root]" path="[path to app]" reloadable="true"/>
hello.xml
예시
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/hello" docBase="~/Desktop/Study_Java_2/download/apache-tomcat-9.0.82/webapps" reloadable="true"/>
3. STS로 웹 프로젝트 생성
File → New → Spring Legacy Project
Templates로 Spring MVC Project 선택.
화면에 Hello world!와 서버 시간을 출력하는 샘플을 포함하는 프로젝트가 생성된다.
4. 디렉터리 구조
- webapp : 웹 관련 파일들 모음
- resources : CSS, JS 파일 위치
- spring : 스피링 설정 파일 위치
- views : view로 사용될 jsp 파일 위치
- web.xml : 웹 서비스의 전반적인 설정
- pom.xml : Maven 설정 파일
- WEB-INF, META-INF : 웹 상에 노출되지 않는 특수 폴더. 클라이언트에서 URL로 접근할 수 없다. webapp 및에 jsp를 위치시키면 웹 상에 노출된다. URL만 알면 언제든지 접근할 수 있다.
가. pom.xml
<java-version>
을 1.6
에서 11
로 변경한다.
<org.springframework-version>
도 3.1.1.Real…
에서 5.2.9.RELEASE
로 변경한다.
pom.xml
의 수정사항을 저장하고 maven update 실행한다.
Run As → Run on Server
실행 후 Hello world! 확인한다.
서버 시간이 깨져서 보인다.
한글 인코딩 설정이 필요하다.
나. 한글 인코딩
web.xml
을 열고 인코딩 설정을 추가한다.
...
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 추가-->
<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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
'학부 강의 > 웹프로그래밍 (Spring)' 카테고리의 다른 글
[Spring] Service, DAO 그리고 VO (0) | 2023.11.07 |
---|---|
[Spring] 클라이언트의 요청이 처리되는 과정 (0) | 2023.11.02 |
[Spring] @Configuration로 Bean 생성하기 (0) | 2023.10.18 |
[Spring] 의존 객체 자동 주입_2 (1) | 2023.10.18 |
[Spring] 의존 객체 자동 주입_1 (0) | 2023.10.07 |