Spring mvc框架配置案例详解,值得收藏。

160 篇文章 0 订阅
91 篇文章 0 订阅

开发者可以根据自己的业务需要能力来选择Spring mvc开启哪些功能,在对应启动的组件中,可以根据参数来设置他对应的工作方式,同时可以扩展组件之外的业务数据处理策略,来完成框架默认未支持的能力。

肖哥弹架构 跟大家“弹弹” SpringBoot源码,需要代码关注

欢迎 点赞,点赞,点赞。

关注公号Solomon肖哥弹架构获取更多精彩内容
](https://mermaid.live/edit#pako:eNp9lW1T2lgUx79KJq-pSyBV4EWnBS0-wLYjs52dDbzIyq0yqyQbgrOucQZacNQFy1bR-jTU1q6sa6Nup_WhUr8M95J8i73kRgOEJS-YJOd_fufck_vnztMTQhzQPnpS4sUpKjQeTVL4esRFRCmRnKTCzwJ6vtioqXClor2sxah79x5QCvpU1Q7f63-fwZUqfgtXdhTKz8F8VlMv6rWbxnrVSifamMkl-dp5FV2VtM85_AvzZ_Wrf6jAk_GIQgU4Ug0LYKWinZyjsxdQXYb5auPjRqP8oR2jf32jqQcRIM1OAxke5BqlRYUa5KC6Xb9cRrtHsHCJcYTS2M4RBdq4hNevOkB7WyiTJf2gN2_haU6hhsxWWmM_jIdQdR-nw9eFeq0Z7VjX4SLc-YZWD-HSF7hVVajHZjMNNQOLZX3_s773Tjv_pNWO2xPRH3-hpSOcQmoqVNCcJlo-1PYL5iCWi7C0SqR65qv27c8OSHUf7d3A6zJaW73lDJurqF_g3EKrAl38iyprpOOOVeS20e4x0d5yRji0foIKWRLTTj5q1QwhkEV1dFI-RUVVP8KNZxVqlNN3FtFSyQ_4JPWMn07EeTkhJKlHT0fa0-BOTd_Kw8IGHi-uAndP8b1CjZm14cG2WfjLEsqekE_SUZhEaseo-E6hQub0zfG9LsC1IrxaJ90REU4ngFT6Z2IB-94mgublN6r4Ge7hOPg1DVJymBdFvM9jNomLexgE_x923xH8QnzOHmeb8ZQoJFOgRQCScVu7Td-Qj2RBAgYkwNw6knx7bDj1Rt9UYzahy9wkXZzWrWSb4SzYoAEbZLhWx7SV7AazW88iDhnEIYa78x3pM2aTuDhCIKZsU3Ur2mE3Cxc0cEGGQ5sf4M2mpp7CWjlmi7s4tPdS3yqh9xlU6TUquyUt1rDBGma4xxIAYV76BUgxW9TFBSVBmJ2jmoK02KOU3bUWbMSAjTDcKD_LRyakhCgT8_ZqvcXDFmnUII0ynOmpVy-wjoh6sLoa24KOGdAxvF_vHG4Yvld3LUa3QCEDFMLrjDz5_rsfwyH09hrvmjurmzTaQc8AaYZPxPHBN998HaXlKTADorQP38bBcz49LUfpaHIBS_m0LETmkhO0T5bSwEFLQnpyivY956dT-Ckt4n8zMJjgcV8ztxKRT_4kCK2PtG-e_o32sayzj3X2uz0e1u1lB7xe1kHP0T6G8fSxLg_b73Hd97jvs15mwUH_bhCYvn7G6fV6nMyA0-N1DTBuBw3iCVmQwuTgNs7vhf8ALz-GDg)

配置能力范围包括

  1. 注解驱动能力:

    • 允许使用Spring MVC注解,如@RequestMapping@GetMapping等,来简化请求映射的处理。
    • 支持使用@RequestBody@ResponseBody等注解进行数据的自动转换。
  2. 跨源资源共享(CORS) :

    • 配置跨域请求的安全策略,允许不同源的Web应用访问你的服务器资源。
  3. 默认Servlet处理 :

    • 定义当Spring MVC没有找到匹配的Controller时,如何处理请求,通常用于静态资源的访问。
  4. 静态资源映射 :

    • 配置静态资源的URL模式和位置,使得可以轻松地访问图片、CSS、JavaScript等资源。
  5. 视图控制器:

    • 用于定义简单的页面跳转,直接返回视图名称而不需要Controller逻辑处理。
  6. 拦截器配置 :

    • 允许在请求处理前后执行拦截逻辑,用于实现日志记录、权限检查等功能。
  7. 模板引擎配置:

    • 配置不同的模板引擎,用于渲染视图。
    • FreeMarker、Groovy Markup等模板引擎允许使用模板文件生成HTML页面。
  8. 脚本模板配置:

    • 支持使用脚本语言(如JavaScript)来渲染页面,提供了一种动态的页面生成方式。
  9. 数据验证:

    • 集成JSR-303/JSR-349 Bean Validation API,用于对Web请求参数进行验证。
  10. 国际化和本地化:

    • 支持多语言消息资源文件,用于实现应用程序的国际化。
  11. 消息转换:

    • 定义了如何将请求和响应数据转换为不同的数据格式,如JSON、XML等。

Spring mvc 配置详细案例

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

    <!-- 启用Spring MVC的注解驱动 -->
    <mvc:annotation-driven validator="validator">
        <!-- 配置消息解析器,用于解析@RequestBody和@ResponseBody -->
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
        </mvc:message-converters>
    </mvc:annotation-driven>

    <!-- 启用CORS支持 -->
    <mvc:cors>
        <mvc:mapping path="/**" allowed-origins="*" allowed-methods="GET, POST, PUT, DELETE, OPTIONS"/>
    </mvc:cors>

    <!-- 默认Servlet处理器 -->
    <mvc:default-servlet-handler/>

    <!-- 静态资源处理器 -->
    <mvc:resources mapping="/resources/**" location="/resources/"/>

    <!-- 视图控制器 -->
    <mvc:view-controller path="/" view-name="index"/>

    <!-- 拦截器配置 -->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean class="com.example.MyInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>

    <!-- 组件扫描,自动检测@Controller等注解 -->
    <context:component-scan base-package="com.example"/>

    <!-- 配置FreeMarker模板引擎 -->
    <bean id="freeMarkerConfigurer" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <property name="templateLoaderPath" value="/WEB-INF/freemarker/"/>
        <property name="defaultEncoding" value="UTF-8"/>
    </bean>
    <mvc:view-resolvers>
        <bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
            <property name="suffix" value=".ftl"/>
        </bean>
    </mvc:view-resolvers>

    <!-- 配置Groovy Markup模板引擎 -->
    <bean id="groovyMarkupConfigurer" class="org.springframework.web.servlet.view.groovy.GroovyMarkupConfigurer">
        <property name="prefix" value="/WEB-INF/groovyMarkup/"/>
        <property name="suffix" value=".tpl"/>
        <property name="cacheLimit" value="10"/>
    </bean>

    <!-- 配置Thymeleaf模板引擎 -->
    <bean id="templateResolver" class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
        <property name="prefix" value="/WEB-INF/thymeleaf/"/>
        <property name="suffix" value=".html"/>
        <property name="templateMode" value="HTML5"/>
        <property name="cacheable" value="false"/>
    </bean>
    <bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine">
        <property name="templateResolver" ref="templateResolver"/>
    </bean>
    <mvc:view-resolvers>
        <bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
            <property name="templateEngine" ref="templateEngine"/>
            <property name="characterEncoding" value="UTF-8"/>
        </bean>
    </mvc:view-resolvers>

    <!-- JSR-303 Validator -->
    <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
        <property name="validationMessageSource" ref="messageSource"/>
    </bean>
    <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basename" value="classpath:messages"/>
        <property name="defaultEncoding" value="UTF-8"/>
    </bean>

    <!-- 其他自定义Bean定义 -->
    <!-- <bean id="..." class="..."/> -->

</beans>

节点解析对象说明

  1. AnnotationDrivenBeanDefinitionParser: 这个解析器是用于处理<mvc:annotation-driven>元素的。它通常用于启用Spring MVC的注解驱动能力,允许你使用@RequestMapping等注解来处理HTTP请求。
  2. CorsBeanDefinitionParser: 解析<mvc:cors>元素,用于配置跨源资源共享(CORS)策略。这允许你指定哪些域名可以访问你的资源,以及允许的HTTP方法等。
  3. DefaultServletHandlerBeanDefinitionParser: 解析<mvc:default-servlet-handler>元素,用于定义对静态资源的默认处理方式。如果Spring MVC找不到对应的Controller处理请求,它会将请求转发到默认的Servlet。
  4. ResourcesBeanDefinitionParser: 解析<mvc:resources>元素,用于定义静态资源的映射和位置。这允许你指定一个URL模式映射到类路径或文件系统上的某个位置。
  5. ViewControllerBeanDefinitionParser: 解析<mvc:view-controller>元素,用于定义简单的视图控制器。这些控制器可以返回一个视图名称,通常用于页面跳转。
  6. InterceptorsBeanDefinitionParser: 解析<mvc:interceptors>元素,用于配置拦截器。拦截器可以在请求处理前后执行一些操作,例如日志记录、安全性检查等。
  7. FreeMarkerConfigurerBeanDefinitionParser: 解析<bean>元素,用于配置FreeMarker模板引擎。FreeMarker是一个基于文本的模板引擎,可以用来生成HTML页面。
  8. ScriptTemplateConfigurerBeanDefinitionParser: 解析<bean>元素,用于配置Script模板引擎。Script模板是一种用于渲染页面的技术,Spring支持多种Script模板引擎,如Nashorn(JavaScript)。
  9. GroovyMarkupConfigurerBeanDefinitionParser: 解析<bean>元素,用于配置Groovy Markup模板引擎。Groovy Markup是一种使用Groovy语言的模板技术,可以用来创建复杂的页面布局。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Solomon_肖哥弹架构

你的欣赏就是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值