Spring MVC零散知识点记录

【SpringBoot 4.x 第1节】夯爆了,为什么现在要学 Spring Boot 4.x?从零开始理解版本体系、核心变化与真实项目开发路线(超详解)! 🏆 本文收录于 《滚雪球学 Spring Boot 4.x》 专栏。 本专栏面向 有一点 Java 基础,但没有系统学过 Spring Boot 的读者,采用“滚雪球式学习法”:先跑通、再理解、再重构、再上线,最终带你从第一个 Hello API 一路完成一个可部署、可监控、可扩展的后端项目。 阅读详情

一、参数接收-中文乱码处理

在Spring MVC中处理请求参数的中文乱码,需根据请求方法分别处理。

  1. POST请求乱码

    通过配置Spring提供的字符编码过滤器(CharacterEncodingFilter)统一处理,这是最常用和推荐的方式。

    <!-- 在web.xml中配置 -->
    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <!-- 拦截所有请求 -->
        <url-pattern>/*</url-pattern>
    </filter-mapping>
  2. GET请求乱码

    对于GET请求,上述过滤器在Tomcat 8及以上版本可能失效。通常需要在代码层面手动进行转码。

    // 在Controller的方法中,对接收到的String参数进行转换
    String param = request.getParameter("paramName");
    String correctParam = new String(param.getBytes("ISO-8859-1"), "UTF-8");

    注意:更一劳永逸的方式是修改Tomcat服务器配置文件(server.xml)中Connector的URIEncoding为UTF-8。

二、日期转换器

Spring MVC可以接收基本数据类型和字符串,但默认无法将字符串自动转换为java.util.Date类型,需要自定义转换器。

  1. 创建日期转换器

    实现Converter<String, Date>接口,定义字符串到日期的转换逻辑。

    public class DateConverter implements Converter<String, Date> {
        @Override
        public Date convert(String source) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            try {
                return sdf.parse(source);
            } catch (ParseException e) {
                e.printStackTrace();
                return null;
            }
        }
    }
  2. 配置与注册转换器工厂

    在Spring的配置文件中,将自定义转换器注入到转换服务中,并注册该服务。

    <!-- 1. 配置转换器工厂 -->
    <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <bean class="com.yourpackage.converter.DateConverter"/>
            </set>
        </property>
    </bean>
    
    <!-- 2. 注册转换器工厂到SpringMVC核心驱动 -->
    <mvc:annotation-driven conversion-service="conversionService"/>
三、拦截器

拦截器(Interceptor)用于在处理器执行前后进行预处理和后处理,基于AOP实现,常用于登录校验、权限检查、日志记录等。

  1. 拦截器 vs 过滤器(Filter)

    特性

    过滤器 (Filter)

    拦截器 (Interceptor)

    原理​

    基于函数回调

    基于AOP(动态代理)

    依赖​

    Servlet规范,不依赖任何框架

    依赖SpringMVC框架

    使用场景

    过滤所有内容(静态资源、JSP、Servlet),如解决乱码

    拦截进入Controller的请求,如登录校验

  2. 使用步骤

    • ① 创建拦截器:实现HandlerInterceptor接口,重写preHandle、postHandle、afterCompletion方法。

      public class MyInterceptor implements HandlerInterceptor {
          @Override
          public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
              // 在Controller方法执行前调用,返回true则放行
              System.out.println("preHandle...");
              return true;
          }
          // ... postHandle, afterCompletion 方法
      }
    • ② 配置拦截器:在SpringMVC配置文件中声明。

      <mvc:interceptors>
          <mvc:interceptor>
              <!-- 拦截的路径 -->
              <mvc:mapping path="/**"/>
              <!-- 排除的路径 -->
              <mvc:exclude-mapping path="/user/login"/>
              <bean class="com.yourpackage.interceptor.MyInterceptor"/>
          </mvc:interceptor>
      </mvc:interceptors>
四、文件上传

Spring MVC使用Apache Commons FileUpload组件实现文件上传,需进行相应配置。

  1. 添加依赖​ (pom.xml)

    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.3.1</version>
    </dependency>
  2. Spring配置文件​ (springmvc.xml)

    <!-- 1. 配置文件上传解析器,id必须为multipartResolver -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 最大上传大小(字节),5MB -->
        <property name="maxUploadSize" value="5242880"/>
        <property name="defaultEncoding" value="UTF-8"/>
    </bean>
    
    <!-- 2. 静态资源映射(可选,用于直接访问已上传文件) -->
    <mvc:resources mapping="/upload/**" location="/upload/"/>
  3. 前端表单​ (JSP)

    表单的enctype必须设置为multipart/form-data。

    <form action="/file/upload" method="post" enctype="multipart/form-data">
        选择文件:<input type="file" name="myFile"><br>
        <input type="submit" value="上传">
    </form>
  4. 后端Controller

    使用MultipartFile类型接收上传的文件。

    @PostMapping("/upload")
    public String handleFileUpload(@RequestParam("myFile") MultipartFile file) {
        if (!file.isEmpty()) {
            String fileName = file.getOriginalFilename();
            // 保存文件到服务器指定路径
            File dest = new File("/upload/path/" + fileName);
            file.transferTo(dest);
            return "上传成功";
        }
        return "上传失败,文件为空";
    }
置顶必读(1) |《滚雪球学 Spring Boot 4.x》专栏目录导航篇(持续更新中)! 🏆 本文收录于 《滚雪球学 Spring Boot 4.x》 专栏。 本专栏面向 有一点 Java 基础,但没有系统学过 Spring Boot 的读者,采用“滚雪球式学习法”:先跑通、再理解、再重构、再上线,最终带你从第一个 Hello API 一路完成一个可部署、可监控、可扩展的后端项目。 阅读详情

相关推荐

【SpringBoot 4.x 第145节】Spring Boot 4.x 全局异常处理高级实践:业务异常、系统异常、参数异常一套打通(超详解)!

🏆 本文收录于 《滚雪球学 Spring Boot 4.x》 专栏。本专栏面向 有一定 Java 基础,但尚未系统学习 Spring Boot 的读者,采用“滚雪球式学习法”:先跑通、再理解、再重构、再上线,带你从第一个 Hello API 开始,逐步完成一个可部署、可监控、可扩展的后端项目。

**My Coding Family** 69

http报文的content-type参数和spring mvc传参问题

从根源上弄清楚http的传参以及spring mvc的传参问题

BugMan的博客 1579

PSI5协议技术文档与驱动开发指南

• 供电与数据复用:ECU通过双绞线为传感器提供稳压(典型值5V-11V),同时检测线路电流变化实现数据传输。• 同步信号:ECU发送3.5V电压脉冲(上升沿触发传感器响应),用于时序同步。• 安全气囊:PSI5-P模式实现多碰撞传感器同步采样(响应时间<10ms)• CRC-3(3位):ASIL-B以上功能安全要求(如动力总成传感器)• 奇偶校验(1位):适用于低安全等级场景(如PSI5-P10P模式)• 典型应用:PSI5-P(并行总线)、PSI5-U(通用总线)

u012733413的博客 2867

从MyBatis到Spring MVC:一份面向JAVAEE体系结构核心考点的实战解析

本文面向JAVAEE体系结构核心考点,通过实战视角串联MyBatis与Spring MVC框架。文章解析了如何将选择题、填空题、判断题、简答题等零散知识点,融入SSM整合的完整“数据流水线”中,帮助开发者理解从数据持久化到Web请求处理的协作机制,从而将应试知识转化为真正的项目开发能力。

n2o3p4的博客 419

N32串口DMA接收不定长数据:空闲中断与DMA通道的协同处理

本文详细解析了在N32系列MCU中,利用串口空闲中断与DMA通道协同处理不定长数据的核心机制与实战方法。通过剖析空闲中断的触发时机、DMA的配置要点以及两者协同工作的关键时序,提供了避免数据错乱的避坑指南和完整的代码实现,旨在帮助开发者构建高效、可靠的嵌入式串口通信子系统。

weixin_29191669的博客 122

uCOS中的消息邮箱(:task与task之间传递一个数据(数据缓冲区))

程序需求,需要完成task与task之间  字符数组的数据传输 比如:在ucos中,串口2接收的字符数组是不定时的&不定长的;只有当接收到数据的时候_才将数据赋值给新数组 具体的程序示意如下: 图1:消息邮箱测试中的     向消息邮箱发送消息(OSMboxPost(Str_Box,(void*)rec);//发送消息--(向 消息邮箱_msg_key发送消息) ),实际项目需求的

faguoduifangui的博客 4540

JavaWeb整合spring知识点2

了解SpringMVC框架部分知识点

2301_81197476的博客 790

华为[ENSP]—— 实验二、三层交换和ARP的工作原理

华为[ENSP]三层交换和ARP的工作原理

weixin_62594100的博客 6409

Spring MVC 三 基础学习

当我在回顾Spring mvc 二的时候,总觉的有那么点不好,到底是那里呢?到底是那里呢?我一直反问自己。哦~~现在总算明白了,就是Bean的请求管理,如果我们一直都是用 &lt;bean name="/test.htm" class="com.lap.taobaouse.controller.SampleController" /&gt;这样管理请求的bean,是不是很不合理或者说没有...

dawuafang 80

雷达杂波的基础知识

例如工作在海上的机载雷达,航行在海上的船用雷达,它们都不想要海杂波,会影响它们对小目标的检测,从而以为“漏掉”海面飞行的巡航导弹而被击毁。海杂波的反射系数是非常复杂的,影响的因素很多,除了和雷达参数有关,显然还和海况息息相关,经验模型经常将反射系数表示成海况的函数,在不同条件和不同模型的情况下,反射系数的值不同。说到“杂波”,你可能想到的就是如何去抑制它,去减少它在雷达回波中的分量,在很多情况是这样的。云雨的反射对飞机雷达来说是不希望的,但确是气象雷达所利用的,可以用来测量降雨率,提升天气预报的准确性。

qq_43416206的博客 2133

48、量子系统中的信源编码

本文深入探讨了量子系统中的信源编码理论与应用,详细介绍了盲编码与可见编码、定长编码与变长编码四种主要信源编码方案。文章从经典信源编码出发,对比分析了量子场景下的压缩特性,并系统性地阐述了量子定长信源编码的构建方法及相关定理证明。同时,讨论了通用量子定长信源编码的设计思路及其在实际应用中的优势与挑战。通过理论分析与实验进展的结合,为量子信息存储、传输和处理提供了重要的理论基础和技术支持。

m2n3b4v5c6的博客 100

Spring MVC接收前端数组集合参数:原理、场景与避坑指南

在Web开发中,前后端数据交互是核心环节,其中参数绑定机制决定了数据如何从HTTP请求映射到后端代码。Spring MVC框架通过内置的数据绑定与类型转换系统,自动处理HTTP请求中的参数。其原理基于`ConversionService`,能够将查询字符串、表单数据或JSON请求体中的参数,智能转换为Java中的集合类型如`List`、`Set`或数组。这一技术价值在于极大提升了开发效率,保证了类型安全,并统一了参数处理逻辑。典型的应用场景包括接收批量操作的ID列表、多选过滤条件以及复杂嵌套的JSON数据。

weixin_34211761的博客 551

图像处理系列——直方图之直方图规定化(Histogram Specification)

直方图规定化也叫直方图匹配(Histogram Matching),让原图像的像素分布与规定图像的像素分布保持一致。直方图规定化比直方图均衡化更加灵活,算是直方图均衡的变种。常用于图片风格一致性的自动处理,能有效的改善图像的整体或局部的特征,广泛运用在图像增强处理中。

nanke_yh的博客 4594

基于Spark与Spring MVC的电信用户行为分析实战

本文详细介绍了如何利用Spark与Spring MVC构建一套完整的电信用户行为分析系统。通过模拟数据生成、HDFS存储、Spark大数据处理分析、MySQL数据仓库构建,以及Spring MVC可视化展示的全流程实战,帮助读者掌握从海量数据中挖掘商业价值,并实现数据驱动决策的核心方法。

w1x2y3的博客 92

IgH EtherCAT 从入门到精通:第 30 章 实战:高可用 EtherCAT 系统设计

摘要:构建高可用EtherCAT系统的关键技术 本章详细介绍了工业级EtherCAT系统的高可用性设计方法,主要包括: 冗余链路架构:采用双网卡环形拓扑设计,主备网卡同时工作,通过IgH Master的冗余配置实现线缆故障自动切换。 状态监控机制:提供专用API实时监控主备链路状态,包括从站响应数、链路状态和冗余激活标志,形成完整的故障判断矩阵。 自动恢复功能:系统内置FSM架构支持热插拔自动检测和重配置,从站断线/重连时可自动完成状态恢复,同时允许应用层实施安全措施。 这些技术共同构成了生产环境下Ethe

从事嵌入式linux android驱动开发,拥有全栈能力 241

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Spring零散记

这里记录关于Spring的一些零散的知识点,以免自己日后忘记。 =============================== 1.ModelAndView的addObject()方法.   Spring MVC里一般使用ModelAndView的addObject()方法将信息添加到Model里,可以在jsp页面通过request.getAttribute()方法获取(就是放到了req...

JeansPocket的博客 474

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Spring MVC手札

本文用于记录使用Spring MVC中的零散手札 1.在普通java类中获取HttpServletRequest对象    在web.xml的listener节点加入 &lt;listener&gt; &lt;listener-class&gt;org.springframework.web.context.request.RequestContextListener &...

weixin_34351321的博客 66

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

春招复习:零散的八股文

零散的八股文

lolitao的博客 128

Spring 学习笔记

Spring的源码学习关键学习IOC, DI ,MVC, AOP . Spring的源码非常庞大,要找到每一个模块的放口,再一级一级看源码,函数递进不用看太深不然很容易就要放弃了。 我也是初次学习,把自己的心得写一下。 1. 零散笔记记录 2019.4.10(Spring 中的IOC,控制反转的学习) 入口:SpringMVC 和入口是 DidspatcherServlet ...

417

为何spring如此优秀

Spring是java中一个非常优秀的开源框架 1、它内部最核心的功能就是IOC机制,即控制反转,使用工厂模式, 让java中类的创建不在通过new的方式,而是配置在映射文件中,再通过反射, 在程序运行时动态创建实例, 2、还使对象之间关联的方式不是通过程序代码, 而是通过配置文件去实现(DI技术),实现了关联对象之间的...

PubliclyAccessible的博客 344

4.1 模块化、轻量级框架Spring:Spring 框架详解

核心定位:Java 企业级开发的基础框架,核心是 IoC 容器(解耦)+ AOP(通用功能复用)核心优势:一站式解决 Web、数据库、安全、微服务等所有后端需求,不用自己整合零散工具学习重点:先掌握 IoC/DI 和 AOP 核心思想,再学 Spring Boot 快速开发,是后端入门的核心知识点。

weixin_41576682的博客 107

基于Java web的个人成长记录平台网页设计与实现

本文探讨了基于Java Web的个人成长记录平台的设计与实现。系统采用B/S架构,通过Spring Boot+MyBatis框架搭建后端,Vue.js+Element UI构建前端,MySQL存储数据,实现用户管理、目标跟踪、成长记录和复盘分析四大核心功能。平台解决了传统成长记录方式的分散性、检索难等问题,支持多终端操作和多形式记录,并利用数据可视化展示成长轨迹。未来可扩展AI智能复盘、社交分享等功能,进一步完善个人成长管理的数字化生态。该平台为个人成长提供系统化、可视化的管理工具,有助于用户更有效地追踪和

QQ1928499906的博客 739

Spring Boot + H5/CSS3 汽车4S店管理系统:从零到一的完整毕设实战

很多同学在准备毕业设计或课程设计时,常常为找不到一个结构清晰、技术栈主流、功能完整的实战项目而发愁。网上资料要么过于零散不成体系,要么技术老旧,要么代码不全,导致学习过程磕磕绊绊。本文将分享一个基于 Spring Boot + H5/CSS3 的汽车 4S 店管理系统完整项目,从环境搭建、数据库设计、核心功能实现到最终部署,手把手带你走完全流程。项目源码完全开源,非常适合 JavaWeb 初学者、需要项目练手的开发者以及正在寻找毕设题目的同学。学完本文,你不仅能获得一个可直接运行的完整项目,更能深入理解 S

weixin_34221775的博客 575

Spring详解

Spring简介 Spring:轻量级框架, Java EE的春天,当前主流框架。 Spring是面向Bean的编程。 Spring是一个容器框架,是一个大工厂。 Spring中包含了两个最主要的组件IOC/DI和AOP。 Spring对常用的框架做到了很好的管理支持。例如struts2、mybatis。 Spring自身也推出了MVC框架(Spring MVC) 和 ORM框架(JDBC Template)。 优点 低侵入式设计 独立于各种应用服务器 依赖注入特性将组件关系透明化,降低了耦合度 面向

woniu_li的博客 277

Java Web超市管理系统实战:从环境配置到MVC架构详解

Java Web开发是构建企业级应用的核心技术栈,其核心原理基于MVC(Model-View-Controller)分层架构模式,通过Servlet和JSP实现前后端交互。这种架构的技术价值在于清晰分离业务逻辑、数据持久化和用户界面,提升代码可维护性和可扩展性。在实际应用场景中,Java Web技术广泛应用于电商、ERP、OA等管理系统开发,如超市管理系统这类经典实战项目。项目实战中,环境配置是关键环节,需要关注JDK、Tomcat和MySQL的版本匹配,避免兼容性问题。通过理解MVC数据流转和CRUD操作

ciqiaofu0192的博客 518
上一篇: Spring MVC核心知识点快速梳理
下一篇: Spring 纯注解配置 + Spring Boot 入门核心笔记
StackNoOverflow
博客等级 码龄1年 22粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值