Spring MVC配置文件

1. DispatcherServlet配置

  • 作用DispatcherServlet是Spring MVC的核心前端控制器,用于接收所有HTTP请求,并将请求分发给对应的处理器(Controller)。

  • 配置方式

    • web.xml中配置DispatcherServlet,并指定springmvc-servlet.xml作为其配置文件。

    • 示例:

      xml复制

      复制代码
      <servlet>
          <servlet-name>springmvc</servlet-name>
          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
          <init-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>/WEB-INF/springmvc-servlet.xml</param-value>
          </init-param>
          <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
          <servlet-name>springmvc</servlet-name>
          <url-pattern>/</url-pattern>
      </servlet-mapping>

2. 组件扫描(Component Scanning)

  • 作用 :自动扫描指定包路径下的注解(如@Controller@Service@Repository@Component等),并将这些类注册为Spring容器中的Bean。

  • 配置方式

    xml复制

    复制代码
    <context:component-scan base-package="com.example.controller" />
  • 常用属性

    • base-package:指定需要扫描的包路径。

    • use-default-filters:是否启用默认过滤器(默认为true,会扫描@Component等注解)。

    • annotation-config:是否启用注解支持。


3. 视图解析器(View Resolver)

  • 作用:将处理器返回的逻辑视图名解析为实际的视图资源(如JSP文件)。

  • 常见类型

    • InternalResourceViewResolver:用于解析JSP视图。

      xml复制

      复制代码
      <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
          <property name="prefix" value="/WEB-INF/views/"/>
          <property name="suffix" value=".jsp"/>
      </bean>
      • prefix:视图文件的前缀路径。

      • suffix:视图文件的后缀。

    • 其他视图解析器 :如FreeMarkerViewResolver(FreeMarker模板)、ThymeleafViewResolver(Thymeleaf模板)等。


4. 请求映射(Handler Mapping)

  • 作用:定义请求与处理器之间的映射关系。

  • 默认行为 :Spring MVC使用RequestMappingHandlerMapping,结合@RequestMapping注解来映射请求。

  • 示例

    java复制

    复制代码
    @Controller
    public class MyController {
        @RequestMapping("/hello")
        public String hello(Model model) {
            model.addAttribute("message", "Hello, Spring MVC!");
            return "hello";
        }
    }
    • /hello请求会被映射到MyControllerhello方法。

5. 数据绑定(Data Binding)

  • 作用:将请求参数绑定到Java对象中。

  • 常用注解

    • @RequestParam:绑定请求参数到方法参数。

      java复制

      复制代码
      public String getUser(@RequestParam("name") String name) { ... }
    • @ModelAttribute:绑定请求参数到对象属性。

      java复制

      复制代码
      public String saveUser(@ModelAttribute("user") User user) { ... }
    • @RequestBody:绑定请求体到对象(通常用于JSON或XML数据)。

      java复制

      复制代码
      public String saveUser(@RequestBody User user) { ... }

6. 数据校验(Validation)

  • 作用:对用户输入的数据进行校验。

  • 常用注解

    • @Valid:触发校验。

    • @NotNull@Size@Email等:定义校验规则。

  • 示例

    java复制

    复制代码
    public String register(@Valid @ModelAttribute("user") User user, BindingResult result) {
        if (result.hasErrors()) {
            return "register";
        }
        return "success";
    }

7. 拦截器(Interceptor)

  • 作用:在请求处理过程中进行拦截,执行一些通用逻辑(如权限检查、日志记录等)。

  • 配置方式

    xml复制

    复制代码
    <mvc:interceptors>
        <bean class="com.example.MyInterceptor" />
    </mvc:interceptors>
  • 方法

    • preHandle():在处理器执行前调用。

    • postHandle():在处理器执行后、视图解析前调用。

    • afterCompletion():在请求完成时调用。


8. 静态资源访问

  • 作用:允许访问静态资源(如CSS、JS、图片等)。

  • 配置方式

    xml复制

    复制代码
    <mvc:resources mapping="/static/**" location="/static/" />
    • mapping:请求路径。

    • location:资源存放路径。


9. 异常处理(Exception Handling)

  • 作用:统一处理异常,返回友好的错误页面或错误信息。

  • 配置方式

    • 使用@ControllerAdvice@ExceptionHandler注解。

    • 示例:

      java复制

      复制代码
      @ControllerAdvice
      public class GlobalExceptionHandler {
          @ExceptionHandler(Exception.class)
          public String handleException(Exception e, Model model) {
              model.addAttribute("errorMessage", e.getMessage());
              return "error";
          }
      }

10. 其他常用配置

  • 启用注解驱动

    xml复制

    复制代码
    <mvc:annotation-driven />
    • 启用@RequestMapping@RequestParam等注解支持。
  • 配置全局配置文件

    xml复制

    复制代码
    <context:property-placeholder location="classpath:application.properties" />

总结

springmvc-servlet.xml是Spring MVC的核心配置文件,通过它,可以定义请求处理的流程、视图解析方式、组件扫描范围、拦截器、异常处理等。这些配置使得Spring MVC能够高效地处理HTTP请求,并组织项目中的资源和组件。

相关推荐
AAA建材批发王师傅1 小时前
Hive 序列化与反序列化:数据的 “打包“ 与 “拆箱“ 艺术
数据仓库·hive·hadoop
Edingbrugh.南空6 小时前
Hive SQL执行流程深度解析:从CLI入口到执行计划生成
hive·hadoop·sql
Faith_xzc7 小时前
Apache Doris FE 问题排查与故障分析全景指南
大数据·数据仓库·apache·doris
Edingbrugh.南空7 小时前
Hive 性能优化:从表设计到查询执行的全链路优化
hive·hadoop
潘小磊7 小时前
高频面试之6Hive
大数据·hive·面试·职场和发展
Edingbrugh.南空8 小时前
Hive SQL 执行计划详解:从查看方法到优化应用
hive·hadoop·sql
Edingbrugh.南空11 小时前
Hive SQL:一小时快速入门指南
hive·hadoop·sql
liuze40811 小时前
VMware虚拟机集群上部署HDFS集群
大数据·hadoop·hdfs
陌殇殇1 天前
Hadoop 002 — HDFS常用命令及SpringBoot整合操作
hadoop·spring boot·hdfs
zh_199951 天前
Spark面试精讲(上)
java·大数据·数据仓库·python·spark·数据库开发·数据库架构