스프링
RequestMapping value의 중괄호 { }
URI 패턴의 변수를 나타내고 요청된 URI에서 해당 부분을 가져와 매개변수로 전달한다.
/users/{id}
/users/1
/users/2
/users/3
@RequestMapping(value = "/users/{id}", method = RequestMethod.GET)
public User getUser(@PathVariable int id) {
// ...
}
@PathVariable 어노테이션을 이용해서 {id}에 해당하는 값을 파라미터에 할당할 수 있다.
RequestMapping value의 와일드카드 문자
'*'
와일드 카드란... 모든값에 일치한다.
/users/*
/users/
/users/1
/users/2
/users/3
'**'
/users/**
/users/
/users/1
/users/2
/users/3
/users/profile
/users/profile/edit
/users/messages/inbox
/users/messages/outbox
스프링 war파일로 배포된 컨텍스트의 URl을 호출했을때
@Controller에 해당하는 클래스의 @RequestMapping은 해당 웹 어플리케이션의 컨텍스트 이후의 path와 매핑하는 것 이기 때문에, 컨텍스트만 호출하면 해당 war파일의 리소스를 가져오게 된다. 스프링에서는 별도 설정이 없으면 index.html을 가져오게 된다.
web.xml의 servlet-mapping의 동작방식
web.xml : 배포 서술자 (Deployment Descriptor)로 웹 어플리케이션이 구동될때 로드되어 웹 어플리케이션의 설정정보로 참조되는 정보를 담고있는 파일.
servlet 태그 : 서블릿을 정의
servlet-mapping 태그 : 해당 서블릿이 처리해야하는 URL 패턴을 지정하고 클라이언트가 요청한 URL을 처리할 서블릿을 선택하는데 사용 됨.
servlet-mapping 태그 구성 :
1. servlet-name : 매핑할 서블릿을 지정하며 servlet 태그에 지정한 이름과 일치해야함.
2. url-pattern : 매핑될 URl 패턴을 지정하고, 패턴은 와일드 카드 문자를 사용 가능함.
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>com.example.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
web.xml (배포서술자)가 WEB-INF 밑에 들어가 있는 이유
WEB-INF 디렉토리는 일반적으로 웹 애플리케이션의 클래스 파일, 라이브러리, 설정 파일 등을 저장하는 곳입니다. 이 디렉토리는 클라이언트에서 직접 접근할 수 없으므로, 웹 애플리케이션의 보안을 강화할 수 있습니다. WEB-INF 디렉토리 밑에 위치하는 web.xml 파일도 클라이언트에서 직접 접근할 수 없습니다.
또한, web.xml 파일은 웹 애플리케이션의 설정 정보를 담고 있으므로, 이 파일이 위치한 곳을 변경함으로써 웹 애플리케이션의 동작을 변경할 수 있습니다. 예를 들어, web.xml 파일이 WEB-INF 디렉토리 밑에 위치하면, 웹 애플리케이션 서버는 이 파일을 읽어들여 웹 애플리케이션을 초기화합니다.
스프링 프로젝트의 webapp 디렉토리의 역할
webapp 디렉토리는 Spring 웹 애플리케이션에서 클라이언트에게 제공되는 정적인 리소스 파일들을 저장하는 곳.
webapp 디렉토리에는 웹 애플리케이션에서 사용하는 HTML, CSS, JavaScript, 이미지 파일 등의 정적인 리소스 파일들이 포함됩니다. 이러한 파일들은 서버에서 동적으로 생성되는 데이터와 함께 클라이언트에게 제공됩니다.
또한, webapp 디렉토리는 Spring 웹 애플리케이션에서 사용하는 JSP 파일 등의 동적인 리소스 파일들도 저장할 수 있습니다.
Spring MVC에서는 webapp 디렉토리 안에 WEB-INF 디렉토리가 포함됩니다. WEB-INF 디렉토리는 일반적으로 JSP 파일과 같은 동적인 리소스를 보호하기 위한 목적으로 사용됩니다. 이 디렉토리는 직접 클라이언트로부터 접근할 수 없으며, 컨트롤러에서 JSP 파일과 같은 리소스를 참조할 때 사용됩니다.
따라서, webapp 디렉토리는 Spring 웹 애플리케이션에서 클라이언트에게 제공되는 정적인 리소스 파일들을 저장하는 곳이며, WEB-INF 디렉토리는 동적인 리소스 파일들을 보호하기 위한 디렉토리입니다.
'블로그 > 개발일지 (TIL)' 카테고리의 다른 글
인텔리제이 git rebase 기능, 웹에서 git 연습하기, redis sentinel, cluster (0) | 2023.08.17 |
---|---|
스프링 공식 튜토리얼로 실습방법, 인텔리제이 단축키 3가지 소개, lombok 설정, 타임리프, Gradle 스프링 플러그인, bootRun (2) | 2023.04.26 |
스프링 @RestController와 @Controller (0) | 2023.03.12 |
Redis 서버, 클라이언트, SDR, Redis 마이그레이션 참고사항 (0) | 2023.02.14 |
Maven Multi Module 프로젝트, Multi 리포지토리, 성능 테스트 (1) | 2023.02.11 |
최근댓글