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请求,并组织项目中的资源和组件。

相关推荐
南宫文凯1 小时前
Hadoop-HA(高可用)机制
大数据·hadoop·分布式·hadoop-ha
yuanbenshidiaos21 小时前
【数据挖掘】数据仓库
数据仓库·笔记·数据挖掘
桃林春风一杯酒1 天前
HADOOP_HOME and hadoop.home.dir are unset.
大数据·hadoop·分布式
B站计算机毕业设计超人1 天前
计算机毕业设计Hadoop+Spark+DeepSeek-R1大模型民宿推荐系统 hive民宿可视化 民宿爬虫 大数据毕业设计(源码+LW文档+PPT+讲解)
大数据·hadoop·爬虫·机器学习·课程设计·数据可视化·推荐算法
不剪发的Tony老师1 天前
Apache Hop:开源版本的Kettle
数据仓库·etl
知初~1 天前
出行项目案例
hive·hadoop·redis·sql·mysql·spark·database
m0_748235952 天前
Python大数据可视化:基于Python的王者荣耀战队的数据分析系统设计与实现_flask+hadoop+spider
hadoop·python·flask
B站计算机毕业设计超人2 天前
计算机毕业设计hadoop+spark旅游景点推荐 旅游推荐系统 旅游可视化 旅游爬虫 景区客流量预测 旅游大数据 大数据毕业设计
大数据·hadoop·爬虫·深度学习·机器学习·数据可视化·推荐算法
专注API从业者3 天前
分布式电商系统中的API网关架构设计
大数据·数据仓库·分布式·架构