Spring MVC 配置详解 WebMvcConfigurer

这篇具有很好参考价值的文章主要介绍了Spring MVC 配置详解 WebMvcConfigurer。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MVC Java配置和MVC XML命名空间提供了适合大多数应用程序的默认配置,并提供了一个配置API来定制它。

一、启用 MVC 配置

在Java配置中,你可以使用 @EnableWebMvc 注解来启用MVC配置,如下例所示:

@Configuration
@EnableWebMvc
public class WebConfig {
}

在XML配置中,你可以使用 <mvc:annotation-driven> 元素来启用MVC配置,如下例所示:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <mvc:annotation-driven/>

</beans>

二、 MVC 配置 API

在Java配置中,你可以实现 WebMvcConfigurer 接口,如下例所示:

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    // Implement configuration methods...
}

在XML中,你可以检查 <mvc:annotation-driven/> 的属性和子元素。你可以查看 Spring MVC XML schema 或使用IDE的代码补全功能来发现有哪些属性和子元素。

三、类型转换

默认情况下,各种数字和日期类型的 formatter 已被安装,同时还支持通过字段上的 @NumberFormat 和 @DateTimeFormat 进行定制。
要在 Java config 中注册自定义 formatter 和 converter,请使用以下方法:

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addFormatters(FormatterRegistry registry) {
        // ...
    }
}

要在XML配置中做同样的事情,请使用以下方法:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <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>

</beans>

默认情况下,Spring MVC 在解析和格式化日期值时考虑了请求的 Locale。这适用于日期被表示为字符串的 "input" 表单字段。然而,对于 "date" 和 "time" 表单字段,浏览器使用HTML规范中定义的固定格式。在这种情况下,日期和时间的格式化可以按以下方式定制:

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addFormatters(FormatterRegistry registry) {
        DateTimeFormatterRegistrar registrar = new DateTimeFormatterRegistrar();
        registrar.setUseIsoFormat(true);
        registrar.registerFormatters(registry);
    }
}

四、 校验

默认情况下,如果 Bean Validation` 在classpath上存在(例如Hibernate Validator),LocalValidatorFactoryBean 会被注册为全局 Validator,用于 @Valid 和 Validated 的 controller 方法参数。
在 Java 配置中,你可以自定义全局 Validator 实例,如下例所示:

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Override
    public Validator getValidator() {
        // ...
    }
}

下面的例子显示了如何在XML中实现同样的配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <mvc:annotation-driven validator="globalValidator"/>

</beans>

注意,你也可以在本地注册 Validator 实现,如下例所示:

@Controller
public class MyController {

    @InitBinder
    protected void initBinder(WebDataBinder binder) {
        binder.addValidators(new FooValidator());
    }
}

五、拦截器

在Java配置中,你可以注册拦截器来应用于传入的请求,如下例所示:

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LocaleChangeInterceptor());
        registry.addInterceptor(new ThemeChangeInterceptor()).addPathPatterns("/**").excludePathPatterns("/admin/**");
    }
}

下面的例子显示了如何在XML中实现同样的配置:

<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:interceptors>

六、Content Type

你可以配置Spring MVC如何从请求中确定所请求的媒体类型(例如,Accept 头、URL路径扩展、查询参数,以及其他)。
默认情况下,只有`Accept` 头被检查。
如果你必须使用基于URL的内容类型解析,考虑使用查询参数策略而不是路径扩展。
在Java配置中,你可以自定义请求的 content type 解析,如下例所示:

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
        configurer.mediaType("json", MediaType.APPLICATION_JSON);
        configurer.mediaType("xml", MediaType.APPLICATION_XML);
    }
}

下面的例子显示了如何在XML中实现同样的配置:

<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager"/>

<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
    <property name="mediaTypes">
        <value>
            json=application/json
            xml=application/xml
        </value>
    </property>
</bean>

七、Message 转换器(Converter)

你可以通过写 configureMessageConverters()(替换Spring MVC创建的默认转换器)或覆写 extendMessageConverters()(自定义默认转换器或为默认转换器添加额外的转换器)在Java配置中定制 HttpMessageConverter。
下面的例子添加了XML和Jackson JSON转换器,用一个定制的 ObjectMapper 代替默认的:

@Configuration
@EnableWebMvc
public class WebConfiguration implements WebMvcConfigurer {

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder()
                .indentOutput(true)
                .dateFormat(new SimpleDateFormat("yyyy-MM-dd"))
                .modulesToInstall(new ParameterNamesModule());
        converters.add(new MappingJackson2HttpMessageConverter(builder.build()));
        converters.add(new MappingJackson2XmlHttpMessageConverter(builder.createXmlMapper(true).build()));
    }
}

在前面的例子中, Jackson2ObjectMapperBuilder 被用来为 MappingJackson2HttpMessageConverter 和 MappingJackson2XmlHttpMessageConverter 创建一个共同的配置,其中启用了缩进,自定义了日期格式,并注册了 jackson-module-parameter-names,这增加了对访问参数名称的支持(Java 8中增加的一个功能)。
这个 builder 定制了 Jackson 的默认属性,如下所示:

  • DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES 被禁用。
  • MapperFeature.DEFAULT_VIEW_INCLUSION 被禁用。

如果在classpath上检测到以下知名模块,它也会自动注册这些模块:

  • jackson-datatype-joda: 对Joda-Time类型的支持。
  • jackson-datatype-jsr310: 支持Java 8 Date 和 Time API类型。
  • jackson-datatype-jdk8: 支持其他Java 8类型,如 Optional。
  • jackson-module-kotlin: 支持Kotlin类和数据类(data classe)。

还有其他有趣的 Jackson 模块可用:

  • jackson-datatype-money: 支持 javax.money 类型(非官方模块)。
  • jackson-datatype-hibernate: 支持Hibernate特有的类型和属性(包括懒加载切面)。

下面的例子显示了如何在XML中实现同样的配置: 

<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>

<bean id="objectMapper" class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"
      p:indentOutput="true"
      p:simpleDateFormat="yyyy-MM-dd"
      p:modulesToInstall="com.fasterxml.jackson.module.paramnames.ParameterNamesModule"/>

<bean id="xmlMapper" parent="objectMapper" p:createXmlMapper="true"/>

八、View Controller

这是一个定义 ParameterizableViewController 的快捷方式,当调用时立即转发到视图。你可以在静态情况下使用它,在视图生成响应之前没有Java controller 逻辑需要运行。
下面这个Java配置的例子将一个对 / 的请求转发给一个叫做 home 的视图:

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("home");
    }
}

下面的例子通过使用 <mvc:view-controller> 元素,实现了与前面的例子相同的事情,但使用了XML:

<mvc:view-controller path="/" view-name="home"/>

如果一个 @RequestMapping 方法被映射到任何HTTP方法的URL上,那么视图控制器就不能被用来处理同一个URL。这是因为通过URL与注解控制器的匹配被认为是一个足够强大的端点所有权的指示,所以405(METHOD_NOT_ALLOWED),415(UNSUPPORTED_MEDIA_TYPE),或类似的响应可以被发送到客户端以帮助调试。出于这个原因,我们建议避免将URL处理分割到一个注解控制器和一个视图控制器。

九、视图(View)解析器

MVC配置简化了视图解析器的注册。
下面的Java配置例子通过使用JSP和Jackson作为JSON渲染的默认 View 来配置内容协商的视图解析:

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        registry.enableContentNegotiation(new MappingJackson2JsonView());
        registry.jsp();
    }
}

下面的例子显示了如何在XML中实现同样的配置:

<mvc:view-resolvers>
    <mvc:content-negotiation>
        <mvc:default-views>
            <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"/>
        </mvc:default-views>
    </mvc:content-negotiation>
    <mvc:jsp/>
</mvc:view-resolvers>

然而,请注意,FreeMarker、Groovy Markup 和 script 模板也需要配置底层视图技术。 MVC命名空间提供了专用元素。下面的例子适用于FreeMarker:

<mvc:view-resolvers>
    <mvc:content-negotiation>
        <mvc:default-views>
            <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"/>
        </mvc:default-views>
    </mvc:content-negotiation>
    <mvc:freemarker cache="false"/>
</mvc:view-resolvers>

<mvc:freemarker-configurer>
    <mvc:template-loader-path location="/freemarker"/>
</mvc:freemarker-configurer>

在Java配置中,你可以添加相应的 Configurer bean,如下例所示:

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        registry.enableContentNegotiation(new MappingJackson2JsonView());
        registry.freeMarker().cache(false);
    }

    @Bean
    public FreeMarkerConfigurer freeMarkerConfigurer() {
        FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
        configurer.setTemplateLoaderPath("/freemarker");
        return configurer;
    }
}

十、静态资源

这个选项提供了一个方便的方法,从基于 Resource 的位置列表中提供静态资源。
在下一个例子中,给定一个以 /resources 开头的请求,相对路径被用来寻找和提供相对于Web应用root下的 /public 或 /static 下classpath的静态资源。这些资源在未来一年内到期,以确保最大限度地利用浏览器的缓存,减少浏览器的HTTP请求。Last-Modified 信息是从 Resource#lastModified 中推导出来的,因此HTTP条件请求支持 "Last-Modified" header。
下面的列表显示了如何用Java配置来实现:

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**")
                .addResourceLocations("/public", "classpath:/static/")
                .setCacheControl(CacheControl.maxAge(Duration.ofDays(365)));
    }
}

下面的例子显示了如何在XML中实现同样的配置:

<mvc:resources mapping="/resources/**"
    location="/public, classpath:/static/"
    cache-period="31556926" />

resource handler 还支持 ResourceResolver 实现和 ResourceTransformer 实现的链,你可以用它们来创建一个处理优化资源的工具链。
你可以使用 VersionResourceResolver 来获取基于从内容计算的MD5哈希值、固定的应用程序版本或其他的版本资源URL。ContentVersionStrategy(MD5哈希值)是一个不错的选择—​但也有一些明显的例外,比如与模块加载器一起使用的JavaScript资源。
下面的例子显示了如何在Java配置中使用 VersionResourceResolver:

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**")
                .addResourceLocations("/public/")
                .resourceChain(true)
                .addResolver(new VersionResourceResolver().addContentVersionStrategy("/**"));
    }
}

下面的例子显示了如何在XML中实现同样的配置:

<mvc:resources mapping="/resources/**" location="/public/">
    <mvc:resource-chain resource-cache="true">
        <mvc:resolvers>
            <mvc:version-resolver>
                <mvc:content-version-strategy patterns="/**"/>
            </mvc:version-resolver>
        </mvc:resolvers>
    </mvc:resource-chain>
</mvc:resources>

然后你可以使用 ResourceUrlProvider 重写URL,并应用完整的解析器(resolver)和转换器链—​例如,插入版本。MVC配置提供了一个 ResourceUrlProvider bean,这样它就可以被注入到其他地方。你也可以用 ResourceUrlEncodingFilter 使重写透明化,用于 Thymeleaf、JSP、FreeMarker 和其他有依赖 HttpServletResponse#encodeURL 的URL标签。
注意,当同时使用 EncodedResourceResolver(例如,用于 serving gzipped 或 brotli 编码的资源)和 VersionResourceResolver 时,你必须按照这个顺序注册它们。这可以确保基于内容的版本总是在未编码文件的基础上被可靠地计算出来。
对于 WebJars 来说,像 /webjars/jquery/1.2.0/jquery.min.js 这样的版本化URL是推荐的、最有效的使用方式。相关的资源位置在Spring Boot中是开箱即配置的(也可以通过 ResourceHandlerRegistry 手动配置),不需要添加 org.webjars:webjars-locator-core 依赖。
像 /webjars/jquery/jquery.min.js 这样无版本的URL是通过 WebJarsResourceResolver 支持的,当 org.webjars:webjars-locator-core 库出现在classpath上时,它就会自动注册,代价是classpath扫描会减慢应用程序的启动。该解析器可以重写URL以包括jar的版本,也可以与传入的没有版本的URL相匹配—​例如,从 /webjars/jquery/jquery.min.js 到 /webjars/jquery/1.2.0/jquery.min.js。

十一、Default Servlet

Spring MVC允许将 DispatcherServlet 映射到 /(从而覆盖容器的默认Servlet的映射),同时仍然允许静态资源请求由容器的默认Servlet处理。它配置了一个 DefaultServletHttpRequestHandler,其URL映射为 /**,相对于其他URL映射,其优先级最低。
这个 handler 将所有请求转发到默认的Servlet。因此,它必须在所有其他URL HandlerMappings 的顺序中保持最后。如果你使用 <mvc:annotation-driven>,情况就是这样。另外,如果你设置了你自己的自定义 HandlerMapping 实例,请确保将其 order 属性设置为低于 DefaultServletHttpRequestHandler 的值,即 Integer.MAX_VALUE。
下面的例子显示了如何通过使用默认设置来启用该功能:

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
}

下面的例子显示了如何在XML中实现同样的配置:

<mvc:default-servlet-handler/>

重写 / Servlet映射的注意事项是,默认Servlet的 RequestDispatcher 必须通过名称而不是路径来检索。 DefaultServletHttpRequestHandler 试图在启动时自动检测容器的默认Servlet,使用大多数主要Servlet容器(包括Tomcat、Jetty、GlassFish、JBoss、Resin、WebLogic和WebSphere)的已知名称列表。如果默认的Servlet被定制配置了不同的名字,或者如果使用的是不同的Servlet容器,而默认的Servlet名字未知,那么你必须明确地提供默认Servlet的名字,如下例所示:

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable("myCustomDefaultServlet");
    }
}

下面的例子显示了如何在XML中实现同样的配置:

<mvc:default-servlet-handler default-servlet-name="myCustomDefaultServlet"/>

十二、路径(Path)匹配

你可以自定义与路径匹配和处理URL有关的选项。
下面的例子显示了如何在Java配置中自定义路径匹配:

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {
        configurer.addPathPrefix("/api", HandlerTypePredicate.forAnnotation(RestController.class));
    }

    private PathPatternParser patternParser() {
        // ...
    }
}

下面的例子显示了如何在XML配置中自定义路径匹配:

<mvc:annotation-driven>
    <mvc:path-matching
        path-helper="pathHelper"
        path-matcher="pathMatcher"/>
</mvc:annotation-driven>

<bean id="pathHelper" class="org.example.app.MyPathHelper"/>
<bean id="pathMatcher" class="org.example.app.MyPathMatcher"/>

十三、高级Java配置

@启用WebMvc导入,其中:DelegatingWebMvcConfiguration
为Spring MVC应用程序提供默认的Spring配置。
检测并委托给 WebMvcConfigurer 实现来定制该配置。
对于高级模式,你可以去掉 @EnableWebMvc,直接从 DelegatingWebMvcConfiguration 扩展,而不是实现 WebMvcConfigurer,如下例所示:

@Configuration
public class WebConfig extends DelegatingWebMvcConfiguration {

    // ...
}

 你可以保留 WebConfig 中现有的方法,但你现在也可以覆盖基类中的bean声明,而且你仍然可以在classpath上拥有任何数量的其他 WebMvcConfigurer 实现。

十四、高级 XML 配置

MVC命名空间没有高级模式。如果你需要在Bean上定制一个你无法以其他方式改变的属性,你可以使用Spring ApplicationContext 的 BeanPostProcessor 生命周期钩子,如下例所示:

@Component
public class MyPostProcessor implements BeanPostProcessor {

    public Object postProcessBeforeInitialization(Object bean, String name) throws BeansException {
        // ...
    }
}

请注意,你需要将 MyPostProcessor 声明为一个Bean,可以在XML中明确声明,也可以通过 <component-scan/> 声明让它被检测到。

大家好,我是Doker品牌的Sinbad,欢迎点赞和评论,您的鼓励是我们持续更新的动力!欢迎加微信进入技术群聊! 文章来源地址https://www.toymoban.com/news/detail-786293.html

到了这里,关于Spring MVC 配置详解 WebMvcConfigurer的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring MVC处理响应附案例详解

    目录 一、配置视图解析器 二、控制器方法的返回值 2.1 返回值为void 2.1.1 控制器方法 2.1.2 jsp页面 2.1.3 测试结果 2.2 返回值为String 2.2.1 控制器方法 2.2.2 测试结果 2.3 返回值为ModelAndView 2.3.1 控制器方法 2.3.2 JSP页面 2.3.3 测试结果  三、某些会话对象设置数据 3.1 request域设置数据

    2024年02月11日
    浏览(36)
  • Spring MVC学习随笔-第一个Spring MVC程序(父子项目结构、Tomcat配置、ViewResolver)

    学习视频:孙哥说SpringMVC:结合Thymeleaf,重塑你的MVC世界!|前所未有的Web开发探索之旅 JDK1.8+ Maven3.6+ IDEA2021+ SpringFramework 5.1.4 Tomcat8.5.29 MySQL5.7.18 按照父子项目的结构,管理和创建项目,创建一个空Project作为父项目,pom文件如下 创建子项目Module: 子项目pom文件: 注意 :初次

    2024年02月05日
    浏览(48)
  • Spring MVC 三 :基于注解配置

    Servlet3.0 Servlet3.0是基于注解配置的理论基础。 Servlet3.0引入了基于注解配置Servlet的规范,提出了可拔插的ServletContext初始化方式,引入了一个叫ServletContainerInitializer的接口。 An instance of the ServletContainerInitializer is looked up via the jar services API by the container at container / application sta

    2024年02月11日
    浏览(27)
  • Spring MVC 二 :基于xml配置

    创建一个基于xml配置的Spring MVC项目。 Idea创建新项目,pom文件引入依赖: 在项目的webapp/WEB-INF目录下创建web.xml文件,配置DispatcherServlet: 注意其中定义了contextConfigLocation:上下文配置文件位置,配置为:classpath:springmvc.xml,指定Spring MVC启动过程中会到指定位置读取该配置文件

    2024年02月11日
    浏览(29)
  • Spring MVC配置全局异常处理器!!!

    为什么要使用全局异常处理器:如果不加以异常处理,错误信息肯定会抛在浏览器页面上,这样很不友好,所以必须进行异常处理。 系统的dao、service、controller出现都通过throws Exception向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处理,如下图: 结果展示:  

    2024年01月15日
    浏览(33)
  • 【Java】Spring MVC程序开发

    Spring Web MVC是基于Servlet API构建的原始Web框架,从一开始就包含在Spring框架中。它的正式名称是“Spring Web MVC”来自其原模块的名称,但是它通常被称为“Spring MVC” 从上述定义我们可以看到两个信息: Spring MVC 是一个Web框架 Spring MVC 是基于Servlet API构建的 然而要真正的搞懂S

    2024年01月16日
    浏览(45)
  • 1.7 基于XML配置方式使用Spring MVC

    1、创建Maven项目 Maven项目 - SpringMvcDemo01 单击【Finish】按钮 2、添加相关依赖 在pom.xml文件里添加支持Spring MVC的相关依赖 3、给项目添加Web功能 打开项目结构窗口,在列表里选择【Modules】 单击【+】按钮,添加Web功能 单击【Create Artifact】按钮,将名称改为“SpringMvcDemo01” 单击

    2024年02月08日
    浏览(40)
  • 11 spring-boot的MVC配置原理

            1.ContentNegotiatingViewResolver视图解析器;         2.静态资源或者支持WebJars;         3.自动注册类型转换器:比如说前台提交user的字段,后台自动封装的意思;         4.HttpMessageConverters:转换http的请求和相应,比如把一个user字符串转为一个json字符串;        

    2024年02月15日
    浏览(31)
  • SpringMVC-2-Spring MVC拦截器详解:从入门到精通

    能够编写拦截器并配置拦截器 1.1 拦截器概念和作用 拦截器(Interceptor)是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行 作用: 在指定的方法调用前后执行预先设定的代码 阻止原始方法的执行 总结:增强 核心原理:AOP思想 1.2 拦截器和过滤器的区别

    2024年02月12日
    浏览(35)
  • Spring MVC是什么?详解它的组件、请求流程及注解

    作者: Insist-- 个人主页: insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 前言 本文将讲解Spring MVC是什么,它的优缺点与九大组件,以及它的请求流程与常用的注解。 目录 一、Spring MVC是什么? 二、Spring MVC的优缺点 1、优点 2、缺点 三、Spring MVC的九

    2024年02月12日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包