차근차근/Spring

2.용어정리(4)-ViewResolver,prefix,suffix

예쁜꽃이피었으면 2021. 12. 9. 10:27
InternalResourceViewResolver
- ViewResolver의 디폴트 클래스
BeanNameViewResolver
- 경로다각화
- 결과페이지가 없는 File Download, Ajax
prefix(접두어) /
suffix(접미어)
https://milkye.tistory.com/267

prefix - Controller가 리턴한 뷰 이름 앞에 붙을 접두어
suffix - Controller가 리턴한 뷰 이름 뒤에 붙을 확장자

더보기

그냥 jsp경로 앞뒤에 붙는거구나라고 생각했는데 찾아보고는 공부가 필요하다고 느꼈다.

 

ViewResolver

- 컨트롤러가 지정한 뷰 이름으로 View객체를 구한다.

- View객체에는 컨텐트타입(text/html)을 리턴하는 getContentType() 메서드와 파라미터로 모델과 요청/응답 객체를 갖는 render()메서드가 있다.

더보기

Content-Type

https://dev-gorany.tistory.com/125

 

[Spring] 업로드한 파일의 Content-Type

첨부파일을 다루다 보면, 파일의 종류, 확장자에 따라 다르게 처리해야할 경우가 있다. 이 때 업로드된 파일의 종류를 알아보려면 Content-Type이 무엇인지 알면 간단하게 판단할 수 있다. Content-Type

dev-gorany.tistory.com

서버와 클라이언트가 어떤 자원(파일,문서,데이터 등)을 주고받을 때 웹서버는 HTTP헤더로 파일이나 자원을 포함하는 바이트의 Stream을 앞에 보낸다. 

Content-Type개체 헤더는 리소스의 Media Type을 나타내기 위해 사용된다. (Media Type = MIME Type)

과거에는 MIME(Multipurpose Internet Mail Extension)으로 불렸지만 요즘은 Media Type이라고 함

jch9537님의 velog

 


getContentType()

https://sjs0270.tistory.com/19

 

request 기본 객체

request 기본 객체는 JSP 페이지에서 가장 많이 사용되는 기본 객체로서 웹 브라우저의 요청과 관련이 있다. 웹 브라우저에 웹 사이트의 주소를 입력하면 웹 브라우저는 해당 웹 서버에 연결한 후,

sjs0270.tistory.com

클라이언트 정보 및 서버 정보 읽기

- request 기본 객체는 웹 브라우저, 즉 클라이언트가 전송한 정보 및 서버 정보를 구할 수 있는 메서드를 제공하고 있다. 

- 방법 : <%=request.메소드%>

- getContentType()

: 클라이언트가 요청 정보를 전송할 때 사용한 컨텐트의 타입을 구한다. (return type : String)


 

- ViewResolver구현 클래스  (검색어 : Spring MVC 뷰 리졸빙)

1) InternalResourceViewResolver

: 뷰 이름으로 JSP나 Tiles연동을 위한 View객체를 리턴

2) BeanNameViewResolver

: 뷰 이름과 동일한 이름의 빈 객체를 View객체로 사용한다.

 

 


InternalResourceViewResolver

- JSP, HTML과 같은 웹 어플리케이션의 내부 자원을 이용해서 응답 결과를 생성한다.

JSTL이 존재할 경우 하위 타입은 JstlView객체를 리턴한다.

/WEB-INF 하위에 JSP파일을 위치시키는 이유는 클라이언트가 직접 접근하는 것을 막기 위해서다.
웹 컨테이너가 /WEB-INF 하위 경로에 접근하는 것을 제한한다.
<bean id="viewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/view/" />
		<property name="suffix" value=".jsp" />
</bean>

 


BeanNameViewResolver

- 뷰 이름과 동일한 이름을 갖는 빈 객체를 뷰로 이용한다.

주로 파일 다운로드 기능을 위한 커스컴 View클래스로 사용된다.

@Controller
public class downloadClass{
	public ModelAndView download(MultipartHttpServletRequest request, HttpServletResponse response){
    	File downloadFile = request.getFile("file");
        return new ModelAndView("download", "downloadFile", downloadFile);
    }
}
--------------------------------------------------------------------------------------------
<bean id = "viewResolver" class = "org.springframework.web.servlet.view.BeanNameViewResolver"/>
<bean id = "download" class = "my.com.download.DownloadView"/>

 


다수의 ViewResolver설정하기

- 하나의 DispatcherServlet에서 2개이상의 ViewResolver를 가질 수 있다.

- order 값이 작은 순서대로 ViewResolver에게 뷰이름에 해당하는 View객체를 요청한다.

우선순위가 높은 ViewResolver가 null을 리턴하면 그 다음 순위에게 요청한다.

IntervalResourceViewResolver는 null리턴하지 않으므로 가장 낮은 순위를 지정해야 한다.

<bean class="org.springframework.web.servlet.view.BeanNameViewResolver" p:order="0"/>
<bean id="viewResolver"	
          class="org.springframework.web.servlet.view.InternalResourceViewResolver"
		p:prefix="/WEB-INF/view/" p:suffix=".jsp" p:order="0"/>

https://javacan.tistory.com/tag/VelocityViewResolver

SimpleUrlHandlerMapping에서 사용되는 규칙
  • ? - 한 글자에 매칭된다.
  • * - 0 개 이상의 글자에 매칭된다.
  • ** - 0개 이상의 디렉토리에 매칭된다.
    더보기
    • com/t?st.jsp - com/test.jsp, com/tast.jsp 또는 com/txst.jsp 등에 매칭된다.
    • com/*.jsp - com 디렉토리에 있는 모든 .jsp에 매칭된다.
    • com/**/test.jsp - com 경로 아래에 위치한 모든 test.jsp와 매칭된다.
    • org/springframework/**/*.jsp - org/springframework 경로 아래에 위치한 모든 jsp와 매칭된다.

BeanNameUrlHandlerMapping , SimpleUrlHandlerMapping 구현체의 공통 프로퍼티
  • interceptors - 사용할 인터셉터의 목록
  • defaultHandler - 매칭되는 핸들러를 찾지 못할 때 사용할 기본 핸들러
  • order - 하나의 서블릿 콘텍스트에서 다수의 HandlerMapping을 사용할 수 있는데, 이 경우 HandlerMapping 간의 우선순위를 지정한다

[참조]

https://windorsky.tistory.com/entry/spring-prefix-suffix-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0

https://milkye.tistory.com/267

https://j2yes.tistory.com/entry/viewresolver-prefix-suffix-%EB%93%B1%EB%A1%9D

https://icefree.tistory.com/entry/Spring-BeanNameViewResolver

 

[Spring] BeanNameViewResolver

[ViewResolver] View 페이지의 실질적인 물리적 위치 정보를 다루기 위해서 필요한 라이브러리 클래스이다. InternalResourceViewResolver (default)는 ViewResolver의 기본 클래스로 따로 설정하지 않으면 /WEB-I..

icefree.tistory.com

https://velog.io/@ednadev/%EC%8A%A4%ED%94%84%EB%A7%81-6-ViewResolver

 

스프링 #6 ViewResolver

Controller가 수행한 후 리턴되는 객체는 ModelAndViewModelAndView = View 페이지 이름 + Model(Data) 정보View 페이지의 실질적인 물리적 위치정보를 다루기 위해서 필요한 라이브러리 클래스ViewResolver의 디폴

velog.io

https://midas123.tistory.com/201

 

스프링4.0 - MVC : 뷰 구현

컨트롤러의 처리 결과가 뷰로 전달되는 과정 @Controller 클래스 포함한 모든 웹 요청을 처리하는 객체를 '핸들러'라고 한다. HandlerAdapter는 핸들러의 실행 결과를 DispatcherServlet이 요구하는 ModelAndVi

midas123.tistory.com

https://javacan.tistory.com/tag/VelocityViewResolver

 

 

 

 

반응형

'차근차근 > Spring' 카테고리의 다른 글

2.용어정리(6)-SPA  (0) 2021.12.09
2.용어정리(5)-싱글톤패턴  (0) 2021.12.09
2.용어정리(3)-AOP  (0) 2021.12.08
2.용어정리(1)-Model1,Model2,SpringMVC,POJO  (0) 2021.12.08
1.스프링의 구조  (0) 2021.12.08