当前位置: 首页 > news >正文

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

相关文章:

Spring MVC配置文件

1. DispatcherServlet配置 作用&#xff1a;DispatcherServlet是Spring MVC的核心前端控制器&#xff0c;用于接收所有HTTP请求&#xff0c;并将请求分发给对应的处理器&#xff08;Controller&#xff09;。 配置方式&#xff1a; 在web.xml中配置DispatcherServlet&#xff…...

计算机视觉:主流数据集整理

第一章&#xff1a;计算机视觉中图像的基础认知 第二章&#xff1a;计算机视觉&#xff1a;卷积神经网络(CNN)基本概念(一) 第三章&#xff1a;计算机视觉&#xff1a;卷积神经网络(CNN)基本概念(二) 第四章&#xff1a;搭建一个经典的LeNet5神经网络(附代码) 第五章&#xff1…...

基于AT89C52单片机的出租车计价器

点击链接获取Keil源码与Project Backups仿真图&#xff1a; https://download.csdn.net/download/qq_64505944/90419909?spm1001.2014.3001.5501 C17 部分参考设计如下&#xff1a; 摘要 随着城市交通行业的迅速发展&#xff0c;出租车作为最主要的城市公共交通工具之一…...

C++入门基础课程讲解

C编程入门课程 | 码学堂 竞赛名师授课&#xff0c;不仅涵盖了从零开始学习C的所有必要知识点&#xff0c;还深入探讨了基础算法及其应用&#xff0c;课程内容包括&#xff1a; &#xff08;1&#xff09;编程及上机平台介绍&#xff1a;包括推荐使用的IDE和在线编译器&#xf…...

Graspness Discovery in Clutters for Fast and Accurate Grasp Detection 解读

研究背景 研究问题 &#xff1a;这篇文章要解决的问题是如何在杂乱的环境中快速且准确地检测抓取姿态。传统的 6自由度抓取方法将场景中的所有点视为平等&#xff0c;并采用均匀采样来选择抓取候选点&#xff0c;但忽略了抓取位置的重要性&#xff0c;这极大地影响了抓取姿态检…...

MyBatis的CRUD

1. what MyBatis是一款优秀的持久层框架&#xff0c;它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射实体类型、接口、Java POJO(Plain Old Java Objects&#xff0c;普…...

leetcode 题目解析 第3题 无重复字符的最长子串

给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长 子串的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”&#xff0c;所以其长度为 3。 示例 2: 输入: s “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”…...

深度学习入门--神经网络

初学&#xff0c;若有错误&#xff0c;恳请指正。 目录 初学&#xff0c;若有错误&#xff0c;恳请指正。 3.1 从感知机到神经网络 3.1.1 神经网络的例子 3.1.2 复习感知机 3.1.3 激活函数登场 3.2 激活函数 3.2.1 sigmoid 函数 3.2.2 阶跃函数的实现 3.2.3 阶跃函数…...

pycharm 调试 debug 进入 remote_sources

解决办法1&#xff1a; pycharm函数跳转到remote_sources中的文件中_pycharm修改remotesource包存放地址-CSDN博客 file->settings->project structure将项目文件夹设为"Sources"&#xff08;此时文件夹会变为蓝色&#xff09;。 解决方法2 Debug:使用Pychar…...

【复习】计算机网络

网络模型 OSI 应用层&#xff1a;给应用程序提供统一的接口表示层&#xff1a;把数据转换成兼容另一个系统能识别的格式会话层&#xff1a;负责建立、管理、终止表示层实体之间的通信会话传输层&#xff1a;负责端到端的数据传输网络层&#xff1a;负责数据的路由、转发、分片…...

CentOS停服后的替代选择:openEuler、Rocky Linux及其他系统的未来展望

CentOS停服后的替代选择&#xff1a;openEuler、Rocky Linux及其他系统的未来展望 引言CentOS停服的背景华为openEuler&#xff1a;面向未来的开源操作系统1. 简介2. 特点3. 发展趋势 Rocky Linux&#xff1a;CentOS的精神继承者1. 简介2. 特点3. 发展趋势 其他可选的替代系统1…...

ollama+open-webui,本地部署自己的大模型

目录 一、效果预览 二、部署ollama 1.ollama说明 2.安装流程 2.1 windows系统 2.1.1下载安装包 2.1.2验证安装结果 2.1.3设置模型文件保存地址 2.1.4拉取大模型镜像 2.2linux系统 2.2.1下载并安装ollama 2.2.2设置环境变量 2.2.3拉取模型文件 三、部署open-webui…...

Oracle EBS 12.1和APEX 集成时 Apache的配置代理

在有些场景下&#xff0c;apex的前端服务不是和oracle EBS 应用部署在同一个服务器上或者要求apex和访问地址和EBS公用同一个域名同一个端口&#xff0c;那么怎么才能做到用EBS 的域名和端口来实现对apex的访问呢 通过配置代理规则解决&#xff0c;以Oracle EBS 12.1.3 为例&am…...

hive开窗函数边界值ROWS BETWEEN 和 RANGE BETWEEN区别

目录 一、概念 1.rows between ... and ... 2.range between ... and ... 二、语法 1.关键词含义 一、概念 1.rows between ... and ... rows&#xff1a;指以行号来决定frame的范围&#xff0c;是物理意义上的行。 2.range between ... and ... range&#xff1a;指以当…...

HTML第一节

一.HTML标签 注意&#xff1a;1.双标签是要包裹内容的 &#xff08;单标签单独记&#xff09; 二.HTML骨架 1.骨架规则 注意&#xff1a;1.title为网页的名字 2.VS code自动生成骨架 注意&#xff1a;1.先输入感叹号&#xff08;必须为英文&#xff09; 再按回车 三.标签间的…...

Google第三方库详解------ProtoBuf详解 + 样例(5万字详解!)

目录 前言&#xff1a; 提示&#xff1a; 插件 入门&#xff1a; ProtoBuf普通字段类型&#xff1a; 编译命令&#xff1a; 序列化与反序列化&#xff1a; Proto3语法&#xff1a; 字段规则&#xff1a;数组类型 应用 将通讯录数据序列化后写入文件 工具介绍&#x…...

机器学习数学通关指南——泰勒公式

前言 本文隶属于专栏《机器学习数学通关指南》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和参考文献请见《机器学习数学通关指南》 正文 一句话总结 泰勒公式是用多…...

如果后台的Long类型的数据返回是null,那么Android客户端的数据bean的kotlin的Long类型的字段接受到数据后是null空指针吗?

如果后台的Long类型的数据返回是null&#xff0c;那么Android客户端的数据bean的kotlin的Long类型的字段接受到数据后是null空指针吗&#xff1f; DeepSeek R1 思考 35 秒 思考过程 好的&#xff0c;用户的问题是关于在Android客户端使用Kotlin处理后台返回的Long类型数据为n…...

ai-financial-agent - 为金融投资打造的AI代理

探索人工智能在投资研究中的应用。本项目仅用于**教育**目的&#xff0c;不用于真实交易或投资。 作者声明&#xff1a; 本项目仅用于教育和研究目的。 不用于真实交易或投资不提供任何保证或担保过去的表现并不代表未来的结果Creator 对经济损失不承担任何责任咨询财务顾问…...

学习路程三 数据加载及向量化

前序 之前简单粗暴将LangChain分了几块&#xff0c;现在就挨着了解学习每块内容。今天主要从文档这条路来看。 本地文档这一条链路&#xff0c;通过加载&#xff0c;分割&#xff0c;向量化&#xff0c;再存储数据库 ps&#xff1a;看到这里还想继续实操下去&#xff0c;可以…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...