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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/24995.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VMware虚拟机Mac版安装Win10系统

介绍 Windows 10是由美国微软公司开发的应用于计算机和平板电脑的操作系统&#xff0c;于2015年7月29日发布正式版。系统有生物识别技术、Cortana搜索功能、平板模式、桌面应用、多桌面、开始菜单进化、任务切换器、任务栏的微调、贴靠辅助、通知中心、命令提示符窗口升级、文…

计算机网络:ICMP协议(Internet控制消息协议)介绍

目录 一、简介 二、为什么要有ICMP协议? 三、ICMP协议报文格式 四、ICMP报文的类型 4.1 差错报文 4.2 查询报文 五、ICMP报文的实际案例 5.1 Ping命令 5.2 Traceroute命令 总结 今天和大家聊聊ICMP协议相关的知识,感兴趣的可以一起了解一下! 一、简介 ICMP(Inte…

python读取sqlite温度数据,并画出折线图

需求&#xff1a; 在Windows下请用python画出折线图&#xff0c;x轴是时间&#xff0c;y轴是温度temperature 和体感温度feels_like_temperature 。可以选择县市近1小时&#xff0c;近1天&#xff0c;近1个月的。sqlite文件weather_data.db当前目录下&#xff0c;建表结构如下…

window下kafka安装

kafka下载 下载好,直接解压即可 默认是带有zookeeper(注册中心) 需要先启动zookeeper zookeeper配置 先配置下zookeeper 这个data文件夹是自定建的 随意建在哪里 注意 这里斜杠用和linux一样 启动zookeeper 进入bin/windows目录 启动zookeeper zookeeper-server-start.ba…

开发HarmonyOS NEXT版五子棋游戏实战

大家好&#xff0c;我是 V 哥。首先要公布一个好消息&#xff0c;V 哥原创的《鸿蒙HarmonyOS NEXT 开发之路 卷1&#xff1a;ArkTS 语言篇》图书终于出版了&#xff0c;有正在学习鸿蒙的兄弟可以关注一下&#xff0c;写书真是磨人&#xff0c;耗时半年之久&#xff0c;感概一下…

2月26(信息差)

&#x1f30d;思科和英伟达新旧双王联手 目标重塑网络架构抢占下沉市场 &#x1f384;全球AI大混战升温&#xff01;超越Sora的阿里万相大模型开源 家用显卡都能跑 ✨小米15 Ultra、小米SU7 Ultra定档2月27日 雷军宣布&#xff1a;向超高端进发 1.全球首个&#xff01;人形机器…

物联网通信应用案例之《智慧农业》

案例概述 在智慧农业方面&#xff0c;一般的应用场景为可以自动检测温度湿度等一系列环境情况并且可以自动做出相应的处理措施如简单的浇水和温度控制等&#xff0c;且数据情况可远程查看&#xff0c;以及用户可以实现远程控制。 基本实现原理 传感器通过串口将数据传递到Wi…

C# Unity 唐老狮 No.1 模拟面试题

本文章不作任何商业用途 仅作学习与交流 安利唐老狮与其他老师合作的网站,内有大量免费资源和优质付费资源,我入门就是看唐老师的课程 打好坚实的基础非常非常重要: Unity课程 - 游习堂 - 唐老狮创立的游戏开发在线学习平台 - Powered By EduSoho 目录 C# 1.其他类型转object类…

网络安全扫描--基础篇

前言 1、了解互联网安全领域中日趋重要的扫描技术 2、了解在不同网络场景下扫描技术手段 3、熟悉linux下系统内核防护策略并能大件一个有效的系统防护体系 4、增强工作安全意识&#xff0c;并能有效的实践于工作场景中 目录 1、熟悉主机扫描工具&#xff08;fping&#xff0c;…

P8697 [蓝桥杯 2019 国 C] 最长子序列

P8697 [蓝桥杯 2019 国 C] 最长子序列 题目 分析代码 题目 分析 先分析一波xdm 题意呢就是在s中找有多少个能和t匹配的字符&#xff0c;注意&#xff1a;连续匹配&#xff0c;输出连续的次数 欧克&#xff0c;开始分析&#xff0c;首先&#xff0c;哎~字母&#xff01;还强调…

一篇docker从入门到精通

Docker Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙盒机制&#xff0c;相互之间不会有任何接口&#xff08;类似 iP…

TCP/IP 5层协议簇:物理层

目录 1. 物理层&#xff08;physical layer&#xff09; 2. 网线/双绞线 1. 物理层&#xff08;physical layer&#xff09; 工作设备&#xff1a;网线、光纤、空气 传输的东西是比特bit 基本单位如下&#xff1a;数字信号 信号&#xff1a;【模拟信号&#xff08;放大器&a…

生成对抗网络(GAN)

生成对抗网络&#xff08;GAN&#xff09;:生成对抗网络是一种深度学习模型&#xff0c;由 Ian Goodfellow 等人在 2014 年提出。GAN由生成器和判别器组成&#xff0c;生成器生成假数据&#xff0c;判别器区分真假数据。两者通过对抗训练不断提升&#xff0c;最终生成器能够生成…

FastJSON 默认行为:JSON.toJSONString 忽略 null 字段

完整的 FakeRegistrationController 代码&#xff0c;这让我可以全面分析后端逻辑&#xff0c;特别是为什么空的字段&#xff08;如 compareDate&#xff09;不返回给前端。我将详细分析代码的每个接口&#xff0c;尤其是与 list 请求和字段返回相关的部分&#xff0c;并解释原…

网络通信/IP网络划分/子网掩码的概念和使用

文章目录 概述子网的考题子网掩码的历史有/无类地址子网划分!子网掩码超网技术/CIDR子网掩码和路由IP子网掩码定义 网络规划网络规划-拆子网网络规划-组超网子网划分案例 区分于其他特殊IP地址IP地址和网络地址子网掩码和网络地址子网掩码和广播地址 子网间的通信其他 概述 本…

中国的Cursor! 字节跳动推出Trae,开放Windows版(附资源),开发自己的网站,内置 GPT-4o 强大Al模型!

Trae是什么 Trae 是字节跳动推出的免费 AI IDE&#xff0c;通过 AI 技术提升开发效率。支持中文&#xff0c;集成了 Claude 3.5 和 GPT-4 等主流 AI 模型&#xff0c;完全免费使用。Trae 的主要功能包括 Builder 模式和 Chat 模式&#xff0c;其中 Builder 模式可帮助开发者从…

SpringBatch简单处理多表批量动态更新

项目需要处理一堆表&#xff0c;这些表数据量不是很大都有经纬度信息&#xff0c;但是这些表的数据没有流域信息&#xff0c;需要按经纬度信息计算所属流域信息。比较简单的项目&#xff0c;按DeepSeek提示思索完成开发&#xff0c;AI真好用。 阿里AI个人版本IDEA安装 IDEA中使…

C++ | 高级教程 | 文件和流

&#x1f47b; 概念 文件流输出使用标准库 fstream&#xff0c;定义三个新的数据类型&#xff1a; 数据类型描述ofstream输出文件流&#xff0c;用于创建文件并向文件写入信息。ifstream输入文件流&#xff0c;用于从文件读取信息。fstream文件流&#xff0c;且同时具有 ofst…

0.MySQL安装|卸载内置环境|配置官方yum源|安装mysql|登录mysql|设置配置文件(centos8.2)

卸载内置环境 检查是否有mariadb和mysql服务 ps ajx |grep mariadb ps ajx |grep mysql停止mysql服务 systemctl stop mysqld找到mysql安装包 rpm -qa | grep mysql删除安装包 rpm -qa | grep mysql | xargs yum -y remove检查 ls /etc/my.cnfls /var/lib/mysql/配置官方…

第2章_保护您的第一个应用程序

第2章_保护您的第一个应用程序 在本章中&#xff0c;您将学习如何使用 Keycloak 保护您的第一个应用程序。为了让事情更有趣&#xff0c;您将运行的示例应用程序由两部分组成&#xff0c;前端 Web 应用程序和后端 REST API。这将向您展示用户如何向前端进行身份验证&#xff0…