[230207 93일차]
*css 와 js는 절대경로를 넣는 것이 바람직하고 contextPath 를 직접 명시해주는 것은 바람직하지 않다.(바뀌는 경우가 발생하기 때문)
→ ${pageContext.request.contextPath }/resources/ 를 붙여준다.
*프로젝트 Run 해줄 때, 서버에서 프로젝트가 하나만 구동되도록 해주는 것이 바람직하다.
✶ Lombok Library
*lombok 라이브러리 설치
https://projectlombok.org/download
→ 다운로드 후 jar 파일 클릭(맥OS의 경우 접근이 안되면 ctrl 누르고 클릭)
→ IDE에 STS, Eclipse 추가 후 완료
→ Maven - Update Project
*Lombok 기능
멤버변수 선언과 클래스에 간단한 어노테이션만으로 getter, setter, 생성자, toString(), equals(), hashCode() 를 생성해줄 수 있으며 멤버변수 추가 및 삭제 시 자동으로 그에 맞게 조정된다.
- @Getter
- @Setter
- @AllArgsConstructor
- @NoArgsConstructor
- @ToString
→ @Data : @Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor 의 기능을 모두 포함한다.
Ex>
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TripVO {
private int tno;
private String writer;
}
✶ Tiles Library
디스플레이의 레이아웃 기능을 제공하는 오픈 소스 라이브러리이다. React 의 중첩 라우팅과 비슷한 기능이다.
< Tiles 라이브러리 사용 방법 >
1. pom.xml 에 타일즈 dependency 추가
<!-- 타일즈 뷰 템플릿 jstl이 반드시 필요함-->
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-extras</artifactId>
<version>3.0.8</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-servlet</artifactId>
<version>3.0.8</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-jsp</artifactId>
<version>3.0.8</version>
</dependency>
2. Servlet-context에 타일즈 빈 선언
<!-- 타일즈 설정파일 위치 -->
<beans:bean id="tilesConfigurer"
class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<beans:property name="definitions">
<beans:list>
<beans:value>/WEB-INF/tiles/tiles.xml</beans:value>
</beans:list>
</beans:property>
</beans:bean>
3. WEB-INF 아래 tiles 폴더 생성 후 tiles.xml 파일 생성
4. Tiles.xml 안에 타일즈 설정 구문 선언
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN"
"http://tiles.apache.org/dtds/tiles-config_2_1.dtd">
5. servlet-context에 뷰리졸버를 대체할 구문 선언(뷰 리졸버 구문 삭제 무방)
<!-- 뷰 리졸버 상위 클래스 UrlBasedViewResolver 클래스의 뷰로 사용할 tileView 클래스를 주입 -->
<beans:bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<beans:property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView" />
<beans:property name="order" value="1" />
</beans:bean>
6. tiles.xml 에 템플릿 모형 정의
body 부분만 유동적으로 변하게끔 설정해주는 것이 바람직하다.
<tiles-definitions>
<!-- 템플릿의 모형을 정의 -->
<!-- name은 컨트롤러에서 반환되는 값 template은 파일의 위치 -->
<definition name="base" template="/WEB-INF/tiles/template.jsp">
<put-attribute name="header" value="/WEB-INF/tiles/header.jsp" />
<put-attribute name="body" value="" />
<put-attribute name="footer" value="/WEB-INF/tiles/footer.jsp" />
<put-attribute name="left" value="/WEB-INF/tiles/left.jsp" />
</definition>
<!-- 위에 선언된 base템플릿을 상속 body부분을 동적으로 처리 -->
<definition name="*" extends="base">
<put-attribute name="body" value="/WEB-INF/views/{1}.jsp" />
</definition>
<definition name="*/*" extends="base">
<put-attribute name="body" value="/WEB-INF/views/{1}/{2}.jsp" />
</definition>
<definition name="*/*/*" extends="base">
<put-attribute name="body" value="/WEB-INF/views/{1}/{2}/{3}.jsp" />
</definition>
<!-- 템플릿 미적용 페이지 지정 -->
<!-- <definition name="user/login" template="/WEB-INF/views/user/login.jsp" /> -->
</tiles-definitions>
7. 템플릿을 적용시키지 않을 페이지는 tiles.xml 에 아래와 같이 따로 설정해주면 된다.
<definition name="user/login" template="/WEB-INF/views/user/login.jsp" />
< MyBatis mapper 파일 활용 시 설정 부분 >
*root-context.xml 에 sqlSessionFactory 빈 내부에 매퍼 파일 경로 속성을 추가해줘야 한다.
<property name="mapperLocations" value="classpath:/sqlmap/*.xml" />
*mapper.java 파일의 경로를 mapper.xml 파일의 namespace 로 추가해줘야 한다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.joongang.myweb.trip.service.TripMapper">
댓글