국비 내용 정리/Spring

국비 62일차 내용정리 (Spring ViewResolver)

개발자가 되고 싶은 곰 2024. 10. 8. 21:25

ViewResolver 화면이동 영향 및 담당하는 객체
-> 실질적인 이동은 DispatcherServlet이 담당한다.

Resolver에는 종류가 많기 때문에 이름(id)을 반드시 지정해야한다. 
InternalResourceViewResolver 는 통상적으로 많이 사용하지는 않지만 실습용으로 많이 사용한다.
의존성 주입은 setter 주입을 해야한다.

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="viewResolver">
	<property name="prefix" value="/"/>
	<property name="suffix" value=".jsp"/>		
</bean>

 

페이지에 데이터를 반드시 출력해야할때
>> 상세보기
페이지에 들어갈때 인증 반드시 해야할때
>> 관리자페이지
>> 마이페이지

 

WEB-INF 하위에 있는 파일은 브라우저, 클라이언트, 사용자가 찾아갈 수 없다.
WEB-INF/views 폴더를 생성하는 이유는 .xml 파일과 나누어 관리를 하기 위해 생성한다.
 + 접근, 인가, 허가 가 필요할때 많이 사용되는 방식이다.

만약 ViewResolver 가 필요없다면
Controller 코드에서 mav.setViewName("redirect:login.jsp"); 로 수정하여 사용해야한다.
이때 forward 방식을 사용할때 ViewResolver를 통과해야할때 mav.setViewName("main"); 
redirect: 작성 없이 사용이 가능하다.
(이때 redirect:Xxx.jsp 가 있다면 데이터가 없는 페이지구나를 알 수 있다.)

 

이때 ds-servlet.xml 에 schemal를 추가해야한다.

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context" <-- 추가해야한다.
	xsi:schemaLocation="http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context-4.2.xsd">

</beans>

 


@Component 일반 객체
@Repository DAO
@Service Service
@Controller Controller

@Controller("") -> 어노테이션을 추가하면 implements Controller를 할 필요가 없다.

implements 를 사용한다 사이즈가 큰 프로젝트다.
-> 개발자의 자유도가 낮아지므로 개발자가 편해진다.
@ 어노테이션을 사용한다 메서드가 자유롭고 성능이 좋다.
-> 개발자의 자유도가 높아지고 개발자가 생각해야하는 것이 많아진다.

이때 @Controller 어노테이션을 사용할때 
handlrmapper 대신 @RequestMapping 어노테이션으로 대체하여 사용한다.

mav -> request 대신 가볍게 사용하기 위함
session -> web 전체에서 사용할 데이터들을 사용하기 위함

HandlerMapping에 의해
개발자가 new 해주지않아도 Spring 컨테이너가 객체를 생성해준다.
Ex) public String login(HttpServletRequest request, MemberDTO memberDTO) 

이때 <use:Bean> 에서 setter 할때  *로 동일한 명칭에 데이터를 받아왔을때 자동으로 넣어준다.

팁 : HttpServletRequest request -> 에서 session 을 사용한다면 다운 캐스팅을 진행하여 
HttpSession session로 사용이 가능하다.

Spring에서 MemberDTO memberDTO -> 커맨드 객체 라는 명칭으로 불린다.

728x90