3월 16일

이전영·2022년 3월 17일
0

아파치 톰캣 버전에 따른 서블릿, jsp 스펙.

https://tomcat.apache.org/whichversion.html

WEB-INF 안에 view폴더에 jsp가 만들어진다.
WEB-INF 안에 있으면 브라우저에서 직접 접근할수 없고 webapp까지만 접근 가능하다. 따라서 jsp는 이제 직접 접근할수 없다. (MVC패턴 자체가 서블릿에서 jsp요청하는것이다.

Spring bean Configuration 파일 만든것이 저 두 파일로 자동으로 만들어진다.

context-param과 init-param 차이점
context-param은 전역 변수처럼 init-param은 로컬변수처럼

<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/spring/root-context.xml</param-value>
	</context-param>
	
	<!-- Creates the Spring Container shared by all Servlets and Filters -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<!-- Processes application requests -->
	<servlet>
		<servlet-name>appServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

Spring에서 Bean을 등록하려고 한다.
1. web 기술과 비web 환경에서 사용하는 bean모두를 하나의 xml. 즉 Servlet-context.xml에 저장한다.
2.web 에 해당하는 것은 Servlet-context.xml에 비web에 해당하는 것은 root-context에 저장한다.

자동으로 만들어주는 HomeController. @Controller, @RequestMapping을 사용해서 만들어주는데 우리는 삭제한다.

@Controller
public class HomeController {
	
	private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
	
	/**
	 * Simply selects the home view to render by returning its name.
	 */
	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String home(Locale locale, Model model) {
		logger.info("Welcome home! The client locale is {}.", locale);
		
		Date date = new Date();
		DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
		
		String formattedDate = dateFormat.format(date);
		
		model.addAttribute("serverTime", formattedDate );
		
		return "home";
	}
	
}

Spring MVC 패턴
여러 빈 등록 web.xml수정. paramvalue

	<servlet>
		<servlet-name>appServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>
			/WEB-INF/spring/appServlet/servlet-context.xml
			/WEB-INF/spring/appServlet/hello-context.xml
			</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

xml이 많으면 퉁칠수있다.

	<param-value>
			/WEB-INF/spring/appServlet/*-context.xml
			</param-value>

혹은 *.xml로 만들면 모든 xml파일을 참조한다.

콘솔창에 이렇게 매핑값이 나오면 컨트롤러는 문제없는것. 안나오면 xml에 등록되어있는지 확인.

INFO : Mapped URL path [/list] onto handler 'controller'
INFO : org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping - Mapped URL path [/list.*] onto handler 'controller'
INFO : org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping - Mapped URL path [/list/] onto handler 'controller'
profile
개발자 2년차

0개의 댓글

관련 채용 정보