spring-servlet Namespaces에서 mvc 활성화
mvc라는 모듈의 기능 사용가능하게 됨.
<mvc:annotation-driven/>
-스프링 내부에 있는 어노테이션 방법으로 핸들러맵핑과 핸들러어댑터기능을 제공함
@Controller : 빈으로 생성할 클래스. 선언문 같은 것. 따로 명령을 해서 빈으로 만들어줘야 한다.
@RequestMapping("주소") : 핸들러맵핑
따로 명령을 해서 빈으로 만들어줘야 한다.->
Namespaces에서 context모듈 활성화
<context:component-scan base-package="컨트롤러가 들어있는 패키지"/>
-이 태그는 위의 mvc:annotation-driven과 짝.
-@Controller어노테이션이 붙어있는 애들을 패키지 스캔을 하여 빈으로 생성해준다.
-이 태그를 사용하면 @Controller어노테이션이 있는 컨트롤러.java파일에 S표시가 생기는데, 빈으로 변경되었다는 뜻임.
빈으로 등록해야 할 클래스들이 많아지면,
<context:component-scan base-package="com.simple.**">
<context:include-filter type="annotation" expression="com.simple.controller.HomeController"/> //클래스까지
...
...
</context:component-scan>
으로 확장 가능. include, exclude를 확장시켜 사용 가능
정적 파일은 컨트롤러 맵핑에 들어가면 안됨. 컨트롤러 요청에 들어가지 않아도 되는 파일은 제외. (대표적으로 css, js)
정적자원 맵핑설정
<mvc:resources location="/resource" mapping="/resource/**"/>
(태그의 mapping)/resource경로로 들어오면 (태그의 location)/resource폴더경로로 바로 연결
이 resource폴더는 WEB-INF와 같은 자리. webapp에서 폴더를 생성한다.
이렇게 하면 컨트롤러에 태우지 않고 바로 실행이 가능해진다.
spring-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
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-3.1.xsd">
<!-- 메인컨트롤러를 빈으로 등록 -->
<!-- <bean id="xxx" class="com.simple.controller.MainController" /> -->
<!-- 핸들러맵핑 등록 -->
<!-- /test/aaa 요청이 들어오면 xxx빈으로 핸들러맵핑 -->
<!-- <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings"> <props> <prop key="/test/aaa">xxx</prop> <prop
key="/test/bbb">xxx</prop> </props> </property> </bean> -->
<!-- 스프링 내부에 있는 어노테이션 방법으로 핸들러맵핑과 핸들러어댑터기능을 제공함 -->
<!-- 해당 패키지를 읽어서 @Controller가 있는 클래스를 자동으로 bean으로 등록시킴. include, exclude를 확장시켜 사용가능함 -->
<mvc:annotation-driven />
<context:component-scan base-package="com.simple.**">
<context:include-filter type="annotation" expression="com.simple.controller.HomeController"/>
</context:component-scan>
<!-- css, js 정적자원들은 폴더경로로 바로 연결 -->
<!-- /resource경로로 들어오면 /resource폴더 연결 -->
<mvc:resources location="/resource" mapping="/resource/**"/>
<!-- 뷰 합성기(뷰 리졸버) -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
각주처리한 방법이 mvc모듈을 통해 더 간단하게.
HomeController.java
package com.simple.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller //빈으로 생성할 클래스
public class HomeController {
@RequestMapping("/test/aaa") //핸들러맵핑
public String home() {
return "home";
}
}
home.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
hello world!
</body>
</html>
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
index.jsp
</body>
</html>
home.jsp와 다르게 index.jsp는 바로 실행가능하다. index.jsp의 위치는
로, resource폴더에 위치한다. <mvc:resources location="/resource" mapping="/resource/**"/>를 통해 바로 연결된 것.
'Spring' 카테고리의 다른 글
230201 Spring MVC Controller 객체 구현. @Controller와 @RequestMapping (0) | 2023.02.01 |
---|---|
230201 Spring Spring Legacy Project 생성하기 (0) | 2023.02.01 |
230131 Spring JSP에 Maven을 이용한 스프링 조립하기 (0) | 2023.01.31 |
230131 Spring MVC2 웹서비스 (0) | 2023.01.31 |
230131 Spring xml파일을 java파일로 변경하기 (0) | 2023.01.31 |