Spring Web MVC 프레임워크 학습 구성 Spring Web MVC
VC Java 구성 및 XML 네임스페이스 활성화
기본 구성
VC Java 구성(@Controller 등 다양한 메모)과 XML 네임스페이스를 사용하려면 Java 구성을 사용하는 경우 구성 클래스에 @EnableWebMvc 메모를 추가하면 됩니다.
@Configuration
@EnableWebMvc
public class WebAppConfig {
}
XML 구성 파일을 사용하는 경우 다음 행을 추가하면 됩니다.
<mvc:annotation-driven/>
어떤 방식으로든 Spring에 일부 구성 요소를 등록하여 가장 기본적인 MVC 기능을 제공합니다.이 기능들은 문서에서 매우 명확하게 말한다.간단히 번역했습니다.위의 설정은 Request Mapping Handler Mapping, Request Mapping Handler Adapter와 Exception Handler Exception Resolver를 등록하여 주해 컨트롤러와 주해 방법(예를 들어 @Request Mapping과 @Exception Handler 등)으로 요청을 처리하는 기능을 제공합니다.
다음 기능도 활성화됩니다.
이러한 기본 구성을 통해 가장 기본적인 Spring MVC 사용을 시작할 수 있습니다.
사용자 정의 구성
위에서 가장 기본적인 설정을 제공하였다.일부 구성을 사용자 정의해야 하는 경우에도 가능합니다.Java 설정을 사용하면 설정 클래스가 WebMvcConfigurer 인터페이스를 실현하도록 합니다. 더 자주 사용하는 방법은 WebMvcConfigurerAdapter 기본 클래스를 계승하고 기본 클래스를 다시 쓰는 방법을 통해 관련 기능을 설정할 수 있습니다.
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
// ,
}
XML 프로필을 사용한다면 IDE의 자동 보완 기능을 통해 유형 변환 및 포맷
기본적으로 Spring은 Number (모든 기본 숫자 형식 포함) 와java를 등록합니다.util.Date 유형 변환 및 포맷 기능형식의 변환과 포맷 기능을 제공하려면 해당하는 형식 변환기와 포맷기를 스스로 등록해야 한다.
자바 설정을 사용하면addFormatters(Formatter Registry registry) 방법을 다시 쓰고 해당 기능을 추가하면 됩니다.
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addFormatters(FormatterRegistry registry) {
// Add formatters and/or converters
}
}
XML 설정을 사용하려면 Conversion Service를 등록하고
<mvc:annotation-driven conversion-service="conversionService"/>
<bean id="conversionService"
class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="org.example.MyConverter"/>
</set>
</property>
<property name="formatters">
<set>
<bean class="org.example.MyFormatter"/>
<bean class="org.example.MyAnnotationFormatterFactory"/>
</set>
</property>
<property name="formatterRegistrars">
<set>
<bean class="org.example.MyFormatterRegistrar"/>
</set>
</property>
</bean>
기능 검증Spring은 자체적으로 하나의 인터페이스와 클래스를 제공하여 일련의 검증 기능을 제공합니다.그러나 더 일반적인 방법은 Bean Validation을 이용하여 자바 대상의 검증을 하는 것이다. Bean Validation의 실현 중 하나는 바로 Hibernate Validator이다.
기본적으로 @EnableWebMvc 또는
Spring의 기본 인증서 구성을 직접 덮어쓰는 방법도 있습니다.Java 구성을 사용하는 경우 getValidator () 메서드를 다시 작성하면 됩니다.
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public Validator getValidator() {
// return "global" validator
}
}
XML 프로필을 사용하면 Validator를 정의하고
<mvc:annotation-driven validator="globalValidator"/>
위에서 정의한 것은 모두 전역 검증기입니다. 우리도 어떤 컨트롤러에서 국부 검증기를 정의한 다음에 전역 검증기와 결합하여 사용할 수 있습니다.이때 @InitBinder 메모를 사용해야 합니다.
@Controller
public class MyController {
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.addValidators(new FooValidator());
}
}
검증기를 설치한 후에Spring이 @Valid 메모의 메소드 매개 변수를 식별하면 검증을 실행하고 검증 결과를 BindingResult에 연결합니다. 우리는 방법에서 BindingResult에 접근하여 검증 결과를 얻을 수 있습니다.차단기
우리는 차단기를 실현한 후에 그것을 웹 프로그램에 응용할 수 있다.자바 설정을 사용하면addInterceptors(Interceptor Registry registry) 방법을 다시 쓰고 차단기를 추가하면 됩니다.차단 경로와 배제 경로를 설정하려면 여기서도 설정할 수 있습니다.
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LocaleInterceptor());
registry.addInterceptor(new ThemeInterceptor()).addPathPatterns("/**").excludePathPatterns("/admin/**");
registry.addInterceptor(new SecurityInterceptor()).addPathPatterns("/secure/*");
}
}
XML 프로필을 사용하면 MVC 네임스페이스를 사용할 수 있고 구성도 간단합니다.
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"/>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/admin/**"/>
<bean class="org.springframework.web.servlet.theme.ThemeChangeInterceptor"/>
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/secure/*"/>
<bean class="org.example.SecurityInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
뷰 컨트롤러이것은 Parameterizable View Controller를 정의하는 간단한 방식입니다. 이 컨트롤러가 요청되었을 때 논리적인 조작을 하지 않고 해당 보기로 바로 이동합니다.보기 컨트롤러의 흔한 사용법은 사이트의 첫 페이지를 직접적으로 비추거나 요청하는 것이다.
자바 설정을 사용하면 다음과 같이 쓸 수 있습니다. 다음 설정은 index라는 보기에/비칩니다.
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
}
}
XML 구성도 간단합니다.
<mvc:view-controller path="/" view-name="index"/>
뷰 해상도Java 구성을 사용하려면 configureViewResolvers(ViewResolverRegistry registry) 방법을 다시 작성하면 됩니다.JSP 뷰는 다음과 같이 구성되어 있습니다.다른 뷰 해상도가 필요한 경우 해당 문서와 ViewResolverRegistry의 JavaDoc을 참조하십시오.
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.enableContentNegotiation(new MappingJackson2JsonView());
registry.jsp()
.prefix("/WEB-INF/jsp/")
.suffix(".jsp")
.viewClass(JstlView.class);
}
}
XML 프로파일을 사용하면 MVC 네임스페이스를 사용하여 구성을 단순화할 수 있습니다.내장된 JSP 해상도를 제외한 다른 뷰 해상도는 추가 구성이 필요할 수 있습니다. 여기서 더 이상 설명하지 않겠습니다.
<mvc:view-resolvers>
<mvc:jsp prefix="/WEB-INF/jsp/"
suffix=".jsp"
view-class="org.springframework.web.servlet.view.JstlView"/>
</mvc:view-resolvers>
자원 처리정적 자원 처리
여기서 말하는 것은 주로 정적 자원의 처리이다.앞에서 컨트롤러, 보기에 대한 지식을 많이 말했지만 CSS, JS 파일을 어떻게 비추는지 설명하지 않았습니다.설정 방법은 여기서 설명합니다.
Java 설정을 사용하면addResourceHandlers(ResourceHandlerRegistry registry) 방법을 다시 쓰고 해당하는 맵을 추가하면 됩니다.
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("/resources/static/");
}
}
XML 프로파일을 사용하는 것도 간단합니다.
<mvc:resources mapping="/static/**" location="/resources/static/"/>
이렇게 비추면, 만약에 우리가/resources/static/bootstrap이 있다면.css 파일, 그러면/static/bootstrap을 사용할 수 있습니다.css 경로가 이 파일에 접근했습니다.같은 것은 보기 파일에서도 이렇게 인용할 수 있다.cache-period를 사용하여 자원의 만료 시간을 설정할 수 있습니다. 단위는 초입니다.여러 리소스 위치를 지정해야 하는 경우 쉼표로 구분할 수 있습니다.리소스의 버전 제어
일부 빈번하게 업데이트되는 자원은 버전 제어를 필요로 하여 클라이언트가 최신 자원을 사용하도록 강요할 수 있다.Spring 프레임워크도 자원의 버전 제어를 지원합니다. 자원 체인을 정의해서 이 기능을 실현해야 합니다.리소스 체인은 ResourceResolver 인스턴스와 여러 ResourceTransformer 인스턴스로 구성됩니다.내장된 Version Resource Resolver는 우리의 대부분의 수요를 만족시킬 수 있습니다. 예를 들어 Fixed Version Strategy는 날짜, 버전 번호 또는 다른 것을 버전으로 설정하는 정책을 정의할 수 있습니다.ContentVersionStrategy는 리소스의 MD5 값을 계산합니다.
ContentVersion Strategy 정책은 좋은 정책이지만 MD5를 계산하기 때문에 비용이 많이 들기 때문에 이런 정책을 사용할 때 캐시를 열어 성능을 향상시키는 것이 가장 좋다.
자바 설정을 사용하면 앞의 예와 차이가 많지 않습니다. 리소스 체인(true) 등 방법을 많이 호출하고 해당하는 버전 자원 해상도와 버전 정책을 추가해야 합니다.
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**")
.addResourceLocations("/resources/static/")
.resourceChain(true).addResolver(
new VersionResourceResolver().addContentVersionStrategy("/**"));
}
}
다음은 XML 구성을 사용하는 예입니다.
<mvc:resources mapping="/static/**" location="/resources/static/">
<mvc:resource-chain>
<mvc:resource-cache/>
<mvc:resolvers>
<mvc:version-resolver>
<mvc:content-version-strategy patterns="/**"/>
</mvc:version-resolver>
</mvc:resolvers>
</mvc:resource-chain>
</mvc:resources>
기본 서브렛이 옵션을 켜면 Dispatcher Servlet이 루트 경로/아래의 정적 자원 요청을 처리할 수 있습니다. 정적 파일이 웹 응용 프로그램/css/site라면 상세하게 말해 줍니다.css, 그러면 우리는 직접/css/site를 통과할 수 있습니다.css에서 이 파일에 접근합니다.이 기능을 사용하지 않으면 정적 파일은/static 같은 다른 경로로만 비칠 수 있습니다.
이 구성 항목은 경로/**에 매핑되고 가장 낮은 우선 순위가 있는 Default Servlet Http Request Handler를 실제로 구성합니다.Default ServletHttpRequestHandler는 모든 요청을 기본 Servlet으로 전송하기 때문에 마지막 처리 맵으로 설정해야 합니다.
Java 구성을 사용하면 configureDefaultServletHandling(...)메서드를 열고 이 옵션을 엽니다.
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
XML 구성을 사용하는 경우 다음 행을 추가합니다.
<mvc:default-servlet-handler/>
메시지 변환Spring 기본 메시지 변환기를 덮어쓰려면 configure Message Converters (List
XML 구성 파일을 사용하면 MVC 네임스페이스를 사용할 수 있습니다.
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper" ref="objectMapper"/>
</bean>
<bean class="org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter">
<property name="objectMapper" ref="xmlMapper"/>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
고급 사용자 정의 구성위의 구성은 Spring에서 제공하는 단순화 클래스 또는 MVC 네임스페이스를 사용하여 기능을 신속하게 구성할 수 있도록 도와줍니다.때로는 더 높은 기능의 맞춤형 제작이 필요할 수도 있다. 그러면 이러한 베이스 빈의 초기화와 속성 설정을 스스로 처리해야 한다.
Java 구성 사용자 정의
먼저 @EnableWebMvc 메모의 정의를 살펴보겠습니다.또한 DelegatingWebMvcConfiguration 클래스를 참조하는 @Import 메모를 사용할 수 있습니다.@EnableWebMvc에 주석을 달았을 때 실제로 초기화되고 설정된 기본 클래스는 DelegatingWebMvcConfiguration입니다.
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Import(DelegatingWebMvcConfiguration.class)
public @interface EnableWebMvc {
}
따라서 MVC를 사용자 정의하려면 첫 번째는 메모 @EnableWebMvc를 제거하는 것입니다.그리고 DelegatingWebMvcConfiguration 클래스를 계승하여 RequestMappingHandlerAdapter () 방법을 실현합니다.
@Configuration
public class WebConfig extends DelegatingWebMvcConfiguration {
@Override
@Bean
public RequestMappingHandlerAdapter requestMappingHandlerAdapter() {
//
}
}
프로젝트에서 DelegatingWebMvcConfiguration 하위 클래스와 @EnableWebMvc 주석 구성 클래스는 하나만 존재할 수 있습니다. 왜냐하면 그들이 하는 일은 사실상 같기 때문입니다.Spring MVC의 다른 구성에는 영향을 미치지 않습니다.사용자 정의 MVC 네임스페이스 구성
Spring은 적절한 구성 메커니즘을 제공하지 않기 때문에 사용자 정의 구성이 더 어렵습니다.사용자 정의 MVC 네임스페이스 설정이 필요하다면, 스프링에서 제공하는 BeanPostProcessor 메커니즘을 사용하여 Bean을 감지한 후에 값을 수정하는 것을 고려할 수 있습니다.
@Component
public class MyPostProcessor implements BeanPostProcessor {
public Object postProcessBeforeInitialization(Object bean, String name) throws BeansException {
if (bean instanceof RequestMappingHandlerAdapter) {
//
}
}
}
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.