JAVA/Spring Framework

추상 클래스로 view 만들기, properties 파일 사용해 폴더 위치 지정하기

Tech Signal 2020. 10. 13. 21:14

첨부파일을 다운로드 받을 때 사용되는 백엔드 컨트롤러다. 보면 컨트롤러 단과 뷰 단이 함께 존재하므로 분리해주는 것이 좋음. 

jsp를 사용하는 이유가 '응답데이터를 html로 내보내기위해'인데 이 다운로드컨트롤러는 jsp를 사용할 이유가 딱히 없음.

그러니 MVC패턴에 맞도록

< 추상 뷰를 이용, 새로운 ViewResolver를 사용해보자>

@RequestMapping("/board/download.do")
	public String download(
			@RequestParam(name="what", required=true) int att_no, 
			Model model) throws IOException, ServletException{
		AttatchVO attatch = service.download(att_no);
		model.addAttribute("attatch", attatch);
		
		return "downloadView";
	}

요렇게 코드를 작성하면 view가 클래스패스 내에 존재하므로 새로운 viewResolver가 필요하고 bean 등록해야함. 

	<beans:bean id="BNVR" class="org.springframework.web.servlet.view.BeanNameViewResolver" 
		p:order="2"
	/>
	
	<!-- ctroller에서 리턴시킨 뷰네임이 여기 id가 됨. 등록된 빈들 중 id, viewname을 매치시키는 전략 필요 -->
	<beans:bean id="downloadView" class="kr.or.ddit.board.view.DownloadView" />
	

BeanNameViewResolver라는 이름의 클래스를 등록하고, TilesViewResolver다음으로 순위를 정해준다. 


<properties 파일 사용해 저장할 폴더 위치 자동 관리>

 

resource 안에 어플리케이션의 각종 설정을 넣을 properties를 만들어준다.

이 파일은 어떤 컨테이너에 추가되어야할까? : root-Context.xml에서 util 네임스페이스 추가하고 빈 등록하기. 

빈 등록을 마치면 이런 방식으로 사용이 가능함. 

@Value를 쓰면 spEL 을 사용 가능함. 

스프링 컨테이너가 파일 객체를 자동으로 만들어준다.