반응형
01. Spring 프로젝트 파일명의 종류
main : 배포하기 위해 만들어진 프로그램 - main프로그램
- src/main/java : main 프로그램에서 사용하는 클래스를 두는 파일 : servlet, model, dto, dao
- src/main/resources : main 프로그램 만들 때 필요한 값들을 저장하는 폴더 : xml파일 , properties파일
- src/main/webapp : 웹프로그램과 관련된 자원 : 이미지파일, 동영상파일, 음악파일, html파일, css파일, js파일, jsp파일
test : test를 하기위해 만들어진 프로그램 - test프로그램
- jUnit을 이용하면 test 프로그램을 만들 수 있음
- dao, service, model 역할 하는 프로그램이 제대로 동작되는지 확인 가능
- 왜 필요할까? 출력할 수 있는 프로그램이 필요하므로
- 현업에서는 출력은 프론트엔드가 하므로 그 전까지 확인할 수 없으니..
- 테스트 프로그램을 통해 명령들이 제대로 동작되는지 확인할 수 있음 모듈 테스트 테스트 폴더 내 만든 프로그램은 배포되지 않음!!
- src/test/java : test 프로그램에서 사용하는 클래스를 두는 파일 : servlet, model, dto, dao
- src/test/resources : test 프로그램 만들 때 필요한 값들을 저장하는 폴더 : xml파일 , properties파일
02. Spring에서 사용하는 라이브러리
1) JRE SYSTEM 라이브러리 (최소버전으로 빌드됨)
- java가 제공해주는 라이브러리 (jdk)
- 기본적으로 우리는 jdk 11버전을 다운받아 사용했었음
- 최신버전(17) spring 프로젝트가 만들어지지 않으므로 사용못함
- spring은 JRE SYSTEM 라이브러리의 default가 1.6(최소화)으로 되어있음
- 왜? 스프링 라이브러리가 4가 아닌 3으로 되어있는데, spring이 제공해주는 최소버전이 1.6이라 변경 필요함
2) Maven Dependencies 라이브러리 (최소버전으로 빌드됨)
- maven 빌드 툴이 제공해주는 라이브러리
- maven의 로컬 레파지토리의 위치임
- 팁) 첫번째 프로젝트 만들 때 빌드처리 되어야 하기 때문에 시간이 조금 오래걸리고, 그 이후로 두번째, 세번째 프로젝트 빌드처리 시에는 가져다쓰므로 오래안걸림
- 라이브러리 빌드가 잘 되도록 프로젝트 생성 시 와이파이 끊기지 않는 곳에 서 해주기
3) maven 라이브러리 빌드 처리 시 주의점
- 빌드가 완료되면 아래처럼 워크스페이스 .metadata에 파일들이 생김
4) 만약 home.jsp 실행 시 ContextLoader클래스의 ClassFoundNotException 발생??
① 제대로 다운은 되었지만 프로젝트에 빌드처리가 안되었을 때
- 밑에처럼 web deloyment assembly에서 maven dependencies가 web-inf/lib있나 확인
- 있어야 프로젝트에 제대로 빌드처리 되었다는 것
- 만약 없다면 add 눌러 maven 추가하기
② 와이파이가 끊어져 로컬레파지토리에 라이브러리가 정상적으로 빌드처리 안될 경우
- maven은 UCP를 이용하므로, 중간에 무선인터넷이 끊어진다면 완전하지 않은 라이브러리를 제공함ㅠㅠ
- 그럴 때는 로컬 레파지토리를 삭제하고, 이클립스 종료 후 다시 실행 하면 로컬 레파지토리를 다운받음!!
- 에러메세지 확인해서 ClassFoundNotException 떨어지는 라이브러리를 찾아 해당 라이브러리만 삭제
- 만약 잘 몰라서 라이브러리를 다 삭제하고 다시 빌드처리 하고 싶다면? 이클립스 종료 후 -> /m까지 폴더 싹 다 삭제
- 그러나 위처럼 다 삭제하고 다시 빌드처리하면 시간이 오래 걸리니, 해당 라이브러리를 찾는 데에 익숙해지면 해당 라이브러리에만 들어가서 그것만 삭제하는 것을 권장
03. Spring VS Springboot 기본 빌드 툴
- spring 기본 빌드 툴 : maven -> 최소버전으로 빌드되므로, 코드작성을 통해 최신버전으로 변경해야함
- spring boot 기본 빌드 툴 : gradle -> 프로젝트 생성 시 최신버전으로 빌드 가능
04. spring 프로젝트가 사용할 버전 변경
Maven >> project Facets
- spring 프로젝트가 내부적으로 쓰는 실제적인 것들이 적혀있음
- 프로젝트에서 쓰는 JDK와 웹모듈 버전 변경
- 변경을 해야 서블릿이 제공해주는 기능들 모두 사용 가능
- jre system library을 확인해보면 변경이 완료되어있음
05. home.jsp utf-8 추가
- utf-8 코드 추가
<%@ taglib uri="<http://java.sun.com/jsp/jstl/core>" prefix="c" %>
<%@ page session="false" pageEncoding="utf-8"%>
<html>
<head>
<title>Home</title>
</head>
<body>
<h1>
Hello world!
</h1>
<P> The time on the server is ${serverTime}. </P>
</body>
</html>
06. 실행 - HomeController 서블릿
- 실행은 서블릿으로! MVC패턴이니 당연히 그래야 겠죠? .. - ctrl + f11
package xyz.itwill.controller;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* Handles requests for the application home page.
*/
@Controller
public class HomeController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
/**
* Simply selects the home view to render by returning its name.
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
logger.info("Welcome home! The client locale is {}.", locale);
Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
String formattedDate = dateFormat.format(date);
model.addAttribute("serverTime", formattedDate );
return "home";
}
}
07. context 루트 경로를 project 명과 동일하게 변경
- spring이라는 프로젝트 외 다른 프로젝트를 만들면 똑같이 localhost:8000/controller/로 인식되어
- 다수 프로젝트가 있을 경우 충돌이 된다고 할 수 있다!
- 그래서 프로젝트명과 동일하게 변경이 필요함
변경후 localhost:8000/spring/home.jsp 호출
반응형
'framework > spring' 카테고리의 다른 글
[spring] 7. 로그팩토리 없이 콘솔에 로그 출력 VS 로그팩토리를 생성해 로그구현체를 통해 콘솔에 로그 출력 (0) | 2024.07.25 |
---|---|
[spring] 5. 메이븐 라이브러리 환경설정파일 pom.xml (0) | 2024.07.24 |
[spring] 4. sts 설치법 | spring으로 perspective 변경법 | spring 프로젝트 생성법 (feat. Eclipse) (1) | 2024.07.24 |
[spring] 3. 로그설정파일 - log4j.xml (3) | 2024.07.23 |
[spring] 2. Lombok 라이브러리 빌드 및 사용법 (2) | 2024.07.23 |