TIL

2025_02_19 TIL

hi_i 2025. 2. 19. 18:43

오늘의 할일

  • Servlet과 jpa를 활용한 홈페이지_3
    • Servlet -> Spring 변환                                       

Spring setting

  • Spring
    • project - gradle
    • java - 17
    • spring boot 3.4.2
더보기

Spring 프로젝트 생성

http://start.spring.io

Spring jsp사용

Spring에서 jsp사용을 위해 필요한 구성

  • 디렉토리 구성
    • 웹 서버에 의해 jsp파일에 직접접근 차단(Controller를 통해서만 접근)
    • src/main/webapp(생성)/WEB-INF(생성)/jsp(생성)
  • View Resolver setting
    • ModelAndView 객체를 View 영역으로 전달하기 위해 알맞은 View 정보를 설정하는 역할.
    • application.properties file
      spring.mvc.view.prefix=/WEB-INF/jsp/(추가)
      spring.mvc.view.suffix=.jsp(추가)
  • 의존성 주입
    • spring boot는 기본적으로 jsp엔진 미포함 의존성 추가 필요
    • build.gradle -> dependencies
      {
      implementation group: 'org.springframework.boot', name: 'spring-boot-starter-web'
      implementation group: 'org.glassfish.web', name: 'jakarta.servlet.jsp.jstl', version: '2.0.0'
      implementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-jasper'
      }
      (추가)

Servlet code-> Spring

  • servlet code -> spring
    @WebServlet -> @RequestMapping
    doGet, doPost -> @GetMapping, @PostMapping
    ...etc
  • javax.servlet:jstl 문제
    Spring Boot version 3.x 이상: Spring Boot 3.x부터는 Jakarta EE로 전환되었으며, JSTL 관련 라이브러리도 Jakarta 패키지(jakarta.servlet.jsp.jstl)로 변경 (기존 jsp파일에 사용했던 javax.servlet:jstl)

MVC 관심사 분리

  • MVC 패턴 구성을 위해 기존 servlet에 포함되어있던 로직을 분리
    • M : 로그인 검증,Cookie,Session 과 같은 비즈니스 로직을 처리하는 모델계층으로 분리
    • V : 기존 jsp파일을 화면을 랜더링하는 뷰 계층으로 분리
    • C : 모델과 상호작용을 통해 적절한 뷰로 전달하는 login,logout부분을 컨트롤러 계층으로 분리

💻 jsp는 spring boot 2.5 이상 권장 x 대체 "thymeleaf"