2019. 9. 29. 12:29ㆍProject B (SPMS)/Project B 파트2
스프링 MVC
스프링 MVC는 스프링의 서브 프로젝트중 하나일 뿐이다.
스프링에는 여러가지 서브 프로젝트들이 존재한다.
[B-2-6] 까지는 스프링의 코어 설정을 한 것이다.
- RootConfig.class : Spring Core, MyBatis
[B-2-7] 부터는 스프링 MVC 프로젝트를 설정한다.
- ServletConfig.class : Spring MVC
스프링의 서브 프로젝트 리스트
서블릿 환경설정 파일 생성 : ServletConfig
src/main/java
com.spms.config
ServletConfig.java
package com.spms.config;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;
@EnableWebMvc
@ComponentScan(basePackages = {"com.spms.controller"})
public class ServletConfig implements WebMvcConfigurer {
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
InternalResourceViewResolver bean = new InternalResourceViewResolver();
bean.setViewClass(JstlView.class);
bean.setPrefix("/WEB-INF/views/");
bean.setSuffix(".jsp");
registry.viewResolver(bean);
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
}
웹 MVC 사용 허용 : @EnableWebMvc
컴포넌트 검색 : @ComponentScan
다른 패키지에 작성된 스프링의 빈 객체(Bean)을 인식할 수 있다.
기본 패키지는 컨트롤러로 설정 : com.spms.controller
웹 MVC 환경 설정자 : WebMvcConfigurer 인터페이스 구현
스프링 MVC 관련 설정을 메서드로 오버라이드하는 형태를 이용시 사용
configureViewResolvers() : 뷰(View) 관련 환경설정 (jsp) 위치
addResourceHandlers() : 뷰(View) 관련 환경설정 (javascript, css) 위치
위의 환경설정들을 지정한 후에, 환경설정에 적용(환경설정 빈 객체 리턴)한다.
웹 환경설정 파일 수정 : WebConfig
src/main/java
com.spms.config
WebConfig.java
getServletConfigClasses()
getServletMappings()
package com.spms.config;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { RootConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
// TODO Auto-generated method stub
return new Class[] { ServletConfig.class };
}
@Override
protected String[] getServletMappings() {
// TODO Auto-generated method stub
return new String[] { "/" };
}
}
getServletConfigClasses()
서블릿 환경설정 클래스 지정 : ServletConfig.class
getServletMappings()
서블릿 환경설정 URL 매핑 : /
웹 MVC 기동 테스트 : http://localhost/
기본 MVC 테스트가 문제없이 잘 됨을 알 수 있다.
하지만, ? 부분 문자가 깨져있는데, 사실은 한글문자이다.
대책방법은 UTF-8 캐릭터 인코딩 필터를 추가해야 한다.
웹 환경설정 파일 수정 (캐릭터 인코딩 필터 추가) : WebConfig
src/main/java
com.spms.config
WebConfig.java
getServletConfigClasses()
package com.spms.config;
import javax.servlet.Filter;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { RootConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
// TODO Auto-generated method stub
return new Class[] { ServletConfig.class };
}
@Override
protected String[] getServletMappings() {
// TODO Auto-generated method stub
return new String[] { "/" };
}
@Override
protected Filter[] getServletFilters() {
// TODO Auto-generated method stub
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
characterEncodingFilter.setEncoding("UTF-8");
characterEncodingFilter.setForceEncoding(true);
return new Filter[] { characterEncodingFilter };
}
}
UTF-8 캐릭터 인코딩 필터를 만들어서 환경설정에 적용한다.
웹 MVC 기동 테스트 (캐릭터 인코딩 적용) : http://localhost/
한글 캐릭터까지 문제없이 나오는 것을 알 수 있다.
'Project B (SPMS) > Project B 파트2' 카테고리의 다른 글
[B -2-12] CRUD 게시판 삭제 구현 (0) | 2019.09.30 |
---|---|
[B -2-11] CRUD 게시판 수정 구현 (0) | 2019.09.30 |
[B -2-10] CRUD 게시판 조회 구현 (0) | 2019.09.30 |
[B -2-9] CRUD 게시판 등록 구현 (0) | 2019.09.30 |
[B -2-8] CRUD 게시판 목록 구현 (0) | 2019.09.29 |