SpringMVC学习

SpringMVC框架完整学习指南 《SpringMVC框架完整学习指南》摘要 本文全面介绍了SpringMVC框架的核心内容,包含15个章节的系统知识体系: 基础概念 SpringMVC是Spring框架的Web模块,基于MVC模式 核心优势:轻量级、注解驱动、RESTful支持 核心组件 DispatcherServlet:前端控制器 五大核心组件:HandlerMapping、HandlerAdapter等 详细工作流程解析 开发实践 环境搭建:XML与Java配置 Controller开发:4种返回值类型 请求映射:@RequestM 阅读详情

初期环境配置

【1】导入所需jar包

    –commons-logging-1.1.3.jar
    –spring-aop-4.0.0.RELEASE.jar
    –spring-beans-4.0.0.RELEASE.jar
    –spring-context-4.0.0.RELEASE.jar
    –spring-core-4.0.0.RELEASE.jar
    –spring-expression-4.0.0.RELEASE.jar
    –spring-web-4.0.0.RELEASE.jar
    –spring-webmvc-4.0.0.RELEASE.jar

【2】配置项目总配置文件web.xml

配置前端控制器 DispatcherServlet 
默认加载 /WEB- INF/<servletName-servlet>.xml 的 SpringMVC 配置文件
可以通过加载初始化参数配置
<init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:springmvc.xml</param-value>
</init-param>

【3】配置SpringMVC配置文件

<!-- 配置SpingMVC容器要扫描的包! -->
        <context:component-scan base-package="XXX"></context:component-scan>

配置视图解析器(InternalResourceViewResolvers)

将逻辑视图转换成实际的物理视图,做一个转发操作
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/"></property>
    <property name="suffix" value=".jsp"></property>
</bean>

使用SpringMVC

【1】@RequestMapping 映射请求 Spring MVC

    1、使用 @RequestMapping 注解为控制器指定可以处理哪些 URL 请求
    2、在控制器的类定义及方法定义处都可标注
    >>DispatcherServlet 截获请求后,就通过控制器上@RequestMapping 提供的映射信息确定请求所对应的处理方法
    3、映射请求参数、请求方法或请求头
        >>params     params={"",""}
        ①出现在@RequestMapping中表示请求必须包含名为XXX的请求参数
        ②{"!XXX"}表示请求不能包含名为 XXX 的请求参数
        ③{"xxx!=values"}表示请求包含名为XXX的请求参数,但其值不能为 values
    4、Ant 风格资源地址支持 3 种匹配符:
        ?:匹配文件名中的一个字符
        *:匹配文件名中的任意字符
        **:** 匹配多层路径

【2】@PathVariable 映射 URL 绑定的占位符

    通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:
    URL 中的 {xxx} 占位符可以通过@PathVariable("xxx") 绑定到操作方法的入参中,需要注意的是:该注解的value属性值要与占位符保持一致

【3】REST请求风格

    GET、POST、PUT、DELETE

POST请求如何转化为put请求和delele请求

(1)在web.xml文件中配置

<filter>
        <filter-name>hiddenHttpMethodFilter</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
        <filter-name>hiddenHttpMethodFilter</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>

(2)在表单域中需要携带一个name值为_method,value值为put或者delete的参数

<form action="${pageContext.request.contextPath }/order/1" method="post">
        <input type="hidden" name="_method" value="put"/>
        <input type="submit" value="Submit"/>
</form>

【4】@RequestParam 接收请求的参数
@CookieValue处理方法入参绑定某个 Cookie 值

    相当于Servlet的getParameter()方法
    用在方法入参内
    三个默认属性:
    >>value:这个字段要与请求参数的name属性值一致
    >>required:布尔值,默认是true,当指定为false的时候,说明这个参数不是必须的,可以不带
    >>defaultValue:在我们不传值的时候,默认使用defaultValue的值,传递参数的时候,使用我们传递的参数值

【5】@RequestHeader 获取请求头信息

    用在方法入参内
    value:这个字段要与请求参数的name属性值一致!
    required:布尔值,默认是true,当指定为false的时候,说明这个参数不是必须的,可以不带!
    defaultValue:在我们不传值的时候,默认使用defaultValue的值,传递参数的时候,使用我们传递的参数值!

【6】针对POST请求乱码的处理
在web.xml文件中加上CharacterEncodingFilter

    <filter>
        <filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>   

【6】MVC 的 @Controller标注的方法可以接受哪些 ServletAPI 类型的参数

    HttpServletRequest
    HttpServletResponse
    HttpSession 

【7】POJO 对象绑定请求参数值

    Spring MVC 会按请求参数名和POJO属性名进行自动匹配,支持级联

【8】模型数据–ModelAndView

  • 返回值是String类型还是ModelAndView类型,SpringMVC框架执行目标Handler方法之后都会将返回值解析为ModelAndView
  • 我们放入到Map或者Model、ModelMap中的数据都会放入ModelAndView对象中,作为Model使用
  • 操作步骤
    • 添加模型数据addObject
    • 设置视图setViewName

【9】SpringMVC如何实现重定向和转发

  • redirect:/success.jsp 重定向
  • forward:/success.jsp 转发
  • 在spingmvc配置文件中配置
    • mvc:view-controller path=”/j1sp” view-name=”success”
      此标签用于访问静态资源
    • 请求不经过Controller,直接进入另一个目标页面
    • 但是此时原来访问正常的@RequestMapping URL现在却不能正常访问
      需要加入mvc:annotation-driven标签

【10】@SessionAttributes

  • SpringMVC将在模型中对应的属性放入到reuqest域的同时暂存到 HttpSession 中

【11】@ModelAttribute

  • 方法定义上使用 @ModelAttribute 注解
    • Spring MVC在调用目标处理方法前,会先逐个调用在方法级上标注了@ModelAttribute 的方法
  • 方法的入参前使用 @ModelAttribute 注解
    • SpringMVC会使用value属性值在implicitModel中查找对应的对象,若存在则会直接传入到目标方法的入参中
    • SpringMVC会以value为key,POJO类型的对象为value,存入到request域

【12】SpringMVC确定目标方法POJO类型入参的过程

  1. 确定一个key:

    1. 若目标方法的POJO类型的参数木有使用@ModelAttribute作为修饰,则key为POJO类名第一个字母的小写。
    2. 若使用@ModelAttribute修饰,则key为@ModelAttribute注解的value属性值.
  2. 在implicitModel中查找key对应的对象,若存在,则作为入参传入

    1. 若在@ModelAttribute标记的方法中在Map保存过,且key和1确定的key一致,则会获取到
  3. 在implicitModel中不存在key对应的对象,则检查当前的Handler是否使用@SessionAttribute注解修饰,若使用了该注解,且@SessionAttributes注解的value属性值中包含了key,则会从HttpSession中来获取key所对应的value值,若存在则直接传入到目标方法的入参中,若不存在则将抛出异常。

  4. 若Handler没有标识@SessionAttributes注解或者@SessionAttributes注解的value值中不包含key,则会通过反射来创建POJO类型的参数,传入为目标方法的参数。

    • SpringMVC会把key和POJO对象保存到implicitModel中,进而会保存到request域中!

【13】SpringMVC 的表单标签form:form

  • 需要表单回显或者使用下拉列表的时候,就使用form表单标签
  • form:radiobuttons:单选框组标签,用于构造多个单选框

  • items:可以是一个 List、String[] 或 Map

  • itemValue:指定 radio 的 value 值。可以是集合中 bean 的一个 属性值

  • itemLabel:指定 radio 的 label 值

  • delimiter:多个单选框可以通过 delimiter 指定分隔符

【14】自定义视图

  • 实现view接口或者继承AbstractView抽象类,并加入到IOC容器中
  • 在springmvc配置文件中配置BeanNameViewResolver视图解析器
  • SpringMVC 会按视图解析器顺序的优先顺序对逻辑视图名进行解析,直到解析成功并返回视图对象,否则将抛出 ServletException 异常

【15】自定义类型转换器

  • 实现Converter< S,T >接口并加入到SpringMVC的IOC容器中
  • 配置自定义转换器到FormattingConversionServiceFactoryBean工厂中
  • <!-- 将ConversionService再作为annotation-driven的一个属性存在! -->
        <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
    
        <!-- 配置ConversionService -->
        <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
            <property name="converters">
                <set>
                    <ref bean="employeeConverter"/>
                </set>
            </property>
    

【16】SpringMVC如何处理JSON数据

  • 加入json的3个jar包
    • jackson-annotations-2.1.5.jar
      jackson-core-2.1.5.jar
      jackson-databind-2.1.5.jar
  • 编写目标方法,使其返回 JSON 对应的对象或集合
  • 在方法上添加 @ResponseBody 注解

【17】自定义拦截器

  • 自定义实现类实现 HandlerInterceptor接口
    • preHandle():该方法在目标方法之前被调用
    • postHandle():调用目标方法之后,但渲染视图之前被调用
    • afterCompletion():渲染视图之后被调用
  • 在springmvc配置文件中配置相对应的拦截器

     <mvc:interceptors>
        <!--配置自定义拦截器 ,所有的路径都拦截 -->
        <bean class="com.neuedu.springmvc.filter.MyFilter"></bean>
        <!-- 关于拦截器的配置问题 ,可以通过<mvc:interceptor>来配置使用哪个拦截器来【不】拦截的路径-->
        <mvc:interceptor>
            <!-- 用<mvc:mapping>标签指定要拦截的路径 -->
            <mvc:mapping path="/employ"/>
            <!-- 指定使用哪个拦截器进行拦截 -->
            <bean class="com.neuedu.springmvc.filter.SecondFilter"></bean>
        </mvc:interceptor>
    </mvc:interceptors>
    
Pytest教程:Pytest插件原理 Pytest的插件系统是其强大功能的核心,它允许用户和开发者扩展和定制测试框架的行为。要深入理解Pytest插件的原理,我们需要从Pytest的架构和设计模式开始,然后深入到底层源码。 阅读详情

相关推荐

Linux音频调试实战:ALSA架构与tinymix工具的高级应用技巧

本文深入探讨了Linux音频调试的核心技术,重点解析了ALSA架构下音频信号的路由与混合机制。通过介绍轻量级命令行工具tinymix的高级应用技巧,指导开发者如何精准排查无声、音量异常、多路音频共存等复杂问题,并分享编写自动化测试脚本以提升嵌入式及智能设备音频开发效率的实战方法。

weixin_29210727的博客 101

【SpringMVC篇】——我们为什么学习SpringMVC?

学前思考:我们为什么要学习springMVC?他帮助我们解决了什么技术上的问题?

m0_64231944的博客 1172

等保: Postgresql配置ssl链接

等保: postgresql配置ssl链接完整方案和避坑指南

weixin_43557605的博客 4382

SpringMVC 学习总结

Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,它也是存在于 Spring 框架之中的,通俗的说,它其实就是 Spring 框架中的 Web 模块。 所以说,之前 Servlet 拥有的 " request 和 response ",我们依然能够在此框架中使用。

书生-w的博客 7171

传感器采集信息的频率(采样频率)

较高的采集频率通常能提供更详细的信息,但也会增加数据处理和存储的负担。在某些应用中,较高的采样频率可能是必要的,而在其他情况下,则可能会选择适当的低采样频率以降低功耗和数据处理压力。传感器采集信息的频率(采样频率)是指传感器在一定时间内对输入信号进行采样的次数。对于一些需要快速检测和响应的应用,如运动传感器、声音传感器等,高采样频率是至关重要的。高采样频率通常需要更多的功耗和更大的存储容量,因为产生的数据量更大。例如,对于快速运动的对象,较低的采样频率可能无法捕捉到运动的真实轨迹。

chen的博客 5345

(论文速读)PTV3: 更简单、更快速、更强大的3D点云处理新突破

该论文提出PointTransformerV3(PTv3),通过简化设计实现3D点云处理的效率突破。该研究摒弃复杂注意力机制,转而采用点云序列化和补丁注意力等高效方法,将感受野从16点扩展到1024点,在保持高精度的同时实现3倍速度提升和10倍内存优化。PTv3在超过20个室内外场景任务中取得SOTA结果,ScanNet语义分割达79.4%mIoU,Waymo检测提升3.3%APH。核心创新包括四种空间填充曲线序列化模式和xCPE位置编码,为3D感知的工业应用提供了高效解决方案。

LJ1147517021的博客 1376

springmvc学习

springmvc学习,思维导图。

戒尘 1125

LabVIEW工程密码保护机制与移除技术详解

LabVIEW作为工业自动化领域广泛使用的图形化编程工具,其密码保护机制涉及文件加密与权限控制等核心技术。从技术实现来看,现代版本采用AES-128加密结合SHA-256哈希校验,而经典版本使用XOR加密配合Base64编码。理解这些加密原理对于工程维护、灾难恢复等合法场景至关重要。在实际应用中,密码移除工具需要处理不同版本的文件结构差异,包括解析XML描述区的Protection标签、动态识别版本并应用对应解密策略。这类技术在工业设备维护、教学研究等场景具有重要价值,但必须注意遵守法律边界,确保拥有合法的

weixin_34161083的博客 390

SpringMVC学习之路

SpringMVC学习之路一、SpringMVC简介1.1 什么是MVC二、HolleWord2.1 创建Maven工程,引入依赖2.2 配置web.xml2.3 创建请求控制器 一、SpringMVC简介 1.1 什么是MVC MVC是一种软件架构的思想,将软件按照模型、视图、控制器划分 M:指的是Model层(模型层),指的是工程里的JavaBean。 JavaBean分两类: 实体类Bean:存储业务数据 业务处理Bean:Service或者Dao对象 V: 视图层, 指的是前端显示界面,与用户交

Seven597的博客 660

5G NR 双连接与载波聚合:PCell、SCell、PScell、SpCell 角色全解析

本文全面解析了5G NR中双连接与载波聚合技术的关键概念,详细介绍了PCell、SCell、PScell和SpCell的角色与功能。通过实际案例和配置示例,帮助读者理解这些小区在提升网络覆盖和速率方面的作用,以及在实际组网中的优化策略。

weixin_33220360的博客 375

免安装版Notepad++终极配置:右键菜单+图标美化+多文件批量处理(2024新版)

本文详细介绍了如何为免安装版Notepad++进行终极配置,包括右键菜单添加、图标美化以及多文件批量处理功能。通过注册表编辑和高级定制,用户可以在便携版中实现与安装版相同的功能体验,同时保持系统整洁。特别适合开发者、系统管理员和效率追求者使用。

nut55的博客 830

关于SpringMVC的学习

Spring Web MVC是基于Servlet API构建的原始Web框架,从一开始就包含在Spring Framework中。正式名称“Spring Web MVC”来自其源模块的名称( spring-webmvc ),但它通常被称为“Spring MVC”。Spring 家族原生产品,与IOC容器等基础设施无缝对接表述层各细分领域需要解决的问题全方位覆盖,提供全面解决方案代码清新简洁,大幅度提升开发效率内部组件化程度高,可插拔式组件即插即用,想要什么功能配置相应组件即可。

qq_74384876的博客 1071

Weka学习笔记01:初探Weka世界

下载、安装和启动Weka、Weka数据格式

howard2005的专栏 1471

SpringMVC学习笔记

本文是一篇SpringMVC学习笔记,主要记录了Java Web项目创建、Tomcat配置、SpringMVC核心功能及常见问题的解决方案。内容包括:1)5种Java项目创建方式;2)Tomcat项目配置流程;3)SpringMVC核心注解使用(如@RequestMapping、@RequestParam等);4)异常处理与自定义异常实现;5)拦截器配置与使用;6)常见问题排查(如文件上传报错等)。笔记重点记录了参数绑定、RESTful风格处理、JSP与HTML区别等实际开发中的关键知识点,并提供了代码示例

weixin_47257473的博客 1029

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

记SpringMvc学习的要点

ss

qq_40903237的博客 288

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

springmvc学习篇——文件下载

springmvc学习篇——文件下载 1.前端jsp页面写个超链接跳进去 <a href="${pageContext.request.contextPath}/springmvc/fileDowload">点击下载</a> 2.文件下载的返回类型要用 ResponseEntity @Controller //该注解表将当前类交给spring容器管理 @S...

qq_38314062的博客 178

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

SpringMVC学习总结

springmvc的控制器由一个pojo(普通的java类)担任,因此需要@controller注解将其标识为控制层组件,交给spring的ioc容器管理,此时springmvc才能识别控制器的存在。@requestmapping注解的method属性是一个requestmethod类型的数组,表示该请求映射能够匹配多种请求方式的请求,只要满足一个method请求方法就可以。M:model,指工程中的javabean(不是实体类),指的是所有存储数据的类,作用是处理数据。底层用的都是文件复制的过程原理。

m0_74755284的博客 830

SpringMVC的学习路线整理

SpringMVC学习路线整理 快速构建SpringMVC项目 MVC执行流程 MVC三大组件 @RequestMapping注解 SpringMVC基本类型的封装

山不见我,我自见山 672

有关SpringMVC学习过程的一些反思

通过一段时间的学习,把最近关于SpringMVC的学习过程和思考写一下,加深理解,顺便锻炼打字速度。 刚开始是同学告诉,做Java后端开发需要用到SpringMVC框架,那么SpringMVC框架到底是个什么呢? 最开始是阅读《Spring MVC学习指导》等,外加百度、各种博客的信息。总结下来,只是知道反转控制和依赖注入这两个词组是SpingMVC框架的关键点,但是看很多遍之后,具体二者什么...

gehulushang的博客 297

SpringMvc学习1之springMvc介绍

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、SpringMvc是什么?二、SpringMvc处理流程三、开发环境四、搭建springmvc工程1.创建一个javaweb工程2.引入SpringMvc的jar包3.再resource文件夹下面创建SpringMvc.xml文件总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文

qq_43332008的博客 399

学习springmvc的第四天(准备springmvc环境)

准备工作做好就可以愉快的进行springmvc学习了;

xx2wd的博客 324

学习SpringMVC的一些基础配置

2.

qq_43102749的博客 231

SpringMVC-学习笔记01【SpringMVC概述及入门案例】

SpringMVC-学习笔记01【SpringMVC概述及入门案例】

upward 1364
上一篇: 文件上传和下载
下一篇: Dynamic SQL(动态SQL)
ShadowsKing
博客等级 码龄11年 3粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值