day--03springmvc

2023-11-14

回顾

1,响应

  • 页面跳转

    • controller方法的字符串返回值

      使用Model对象进行数据共享,默认是存储在request域对象中。

    • 使用ModelAndView对象

  • 直接响应数据

    • controller方法返回的是普通字符串
    • controller方法响应的是json数据
      • 方法直接返回对象或者集合即可,底层默认使用的是Jackson工具
    • 注意:
      • @ResponseBody
      • 引入jackson的jar包
      • 注解驱动

2,发送异步请求

如果post请求的数据是json格式的字符串,需要使用@RequestBody

3,拦截器

  • 定义拦截器类

    • 实现HandlerInterceptor接口
      • preHandler的返回值是true,放行,是false,直接结束
  • 配置

    <mvc:interceptors>
            <!--开启具体的拦截器的使用,可以配置多个-->
            <mvc:interceptor>
                <mvc:mapping path="/**"/>
                <!--指定具体的拦截器类-->
                <bean class="MyInterceptor"/>
            </mvc:interceptor>
    </mvc:interceptors>
    

作用: 登陆状态校验 权限的校验

4,异常处理器

注解开发:

@ControllerAdvice

@ExceptionHandler

@ResponseBody

今日内容

  1. 文件上传
  2. restful
  3. postman
  4. 校验框架
  5. ssm整合

1,文件上传

1.1 页面

<form action="/fileupload" method="post" enctype="multipart/form-data">
    <%--文件上传表单的name属性值一定要与controller处理器中方法的参数对应,否则无法实现文件上传--%>
    上传LOGO:<input type="file" name="file"/><br/>
    <input type="submit" value="上传"/>
</form>

注意:

  1. enctype属性的值必须是multipart/form-data
  2. 提交方式必须是post请求
  3. 必须有文件上传项

1.2 后台

springmvc是对apache提供的文件上传工具(fileupload)进行了封装。

  • 引入jar包

    <!--文件上传下载-->
        <dependency>
          <groupId>commons-fileupload</groupId>
          <artifactId>commons-fileupload</artifactId>
          <version>1.4</version>
        </dependency>
    
  • 配置文件上传处理器

    在springmvc的配置文件中

     <!--配置文件上传处理器-->
        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <property name="maxUploadSize" value="1024000000"/>
        </bean>
    
  • 在controller方法声明形式参数 MultipartFile file

    @RequestMapping(value = "/fileupload")
        //参数中定义MultipartFile参数,用于接收页面提交的type=file类型的表单,要求表单名称与参数名相同
        public String fileupload(MultipartFile file) throws IOException {
    		//将文件存储到硬盘上
            file.transferTo(new File(""));
            //获取文件名称
            String fileName = file.getOriginalFilename();
            return ";page.jsp";
        }
    

2,restful

概述:

是url书写的一种风格。

传统的书写方式:
	http://localhost/user/getData?id=1
restful书写方式:
	http://localhost/user/1

springmvc支持restful风格的url。

在这里插入图片描述

如何确定增删改查的那种操作?

使用提交方式:
	post请求 : 添加
	put请求  : 修改
	get请求  : 查询
	delete请求 : 删除

springmvc如何接受其他的请求方式:

配置一个过滤器:

<filter>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <servlet-name>DispatcherServlet</servlet-name>
</filter-mapping>

开发中的写法:

@RestController
@RequestMapping("/user/")
public class UserController {
    
    //http://localhost/user/
    @PostMapping
    public String save(User user) {
        
        return "添加成功"
    }
    
    //http://localhost/user/
    @PutMapping
    public String update(User user) {
        
        return "修改成功"
    }
    
    @GetMapping("{id}")
    public String findById(@PathVariable Integer id) {
        
        return "修改成功"
    }
    
    @GetMapping
    public String findAll() {
        
        return "修改成功"
    }
    
    @DeleteMapping("{id}")
    public String delete(@PathVariable Integer id) {
        
        return "修改成功"
    }
}

3,校验框架(了解)

hibernate-validator

3.1 入门案例

  • 引入jar包

    <!--导入校验的jsr303规范-->
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>2.0.1.Final</version>
    </dependency>
    <!--导入校验框架实现技术-->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>6.1.0.Final</version>
    </dependency>
    
  • 在controller方法上标记要校验的bean

在这里插入图片描述

  • 定义校验的规则。在实体类的成员变量上定义

在这里插入图片描述

图解:
在这里插入图片描述

4,ssm整合

4.1 spring整合mybatis

配置mybatis的分页插件:

在这里插入图片描述

4.2 spring整合springmvc

问题: spring的核心容器在什么时候创建,由谁创建?

spring的核心容器在整个项目中只需要有一个即可,希望在服务器启动的时候直接创建好。

web中学习的ServletContext对象只有一个,而且是在服务器启动的时候创建。

之前学习了ServletContext的监听器,监听ServletContext对象的创建和销毁。

这个监听器不需要我们创建,在整合包中已经提供好了 ContextLoaderListener

我们需要做的就是配置监听器即可:

<!--指定spring的配置文件,用来创建spring的容器对象-->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
</context-param>

<!--启动服务器时,通过监听器加载spring运行环境-->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

注意: spring有自己的核心容器对象,springmvc也有自己的容器对象。

spring容器是父容器,而springmvc是子容器。

json数据转换的转换器:

<mvc:annotation-driven>
        <mvc:message-converters>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="objectMapper">
                    <bean class="com.fasterxml.jackson.databind.ObjectMapper">
                        <property name="dateFormat">
                            <bean class="java.text.SimpleDateFormat">
                                <!--new SimpleDateFormat("yyyy-MM-dd")-->
                                <constructor-arg value="yyyy/MM/dd"></constructor-arg>
                            </bean>
                        </property>
                    </bean>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

day--03springmvc 的相关文章

随机推荐

  • 基于SRS的视频直播服务器搭建

    srs提供的一个demo实例 包括实时流的rtmp播放 hls播放 视频会议 ffmpeg视频变换 jwplayer播放 OSMF播放 vlc播放等等功能 下面是在Centos 6 x环境下的编译搭建流程 1 下载或更新源码或者使用git更
  • MVC项目案例

    MVC项目 1 需求 访问链接 http localhost 8080 car get 得到JSON数据 name 保时捷 color 红色 price 641000 0 2 项目结构 cn tedu 放启动类 存子包 cn tedu se
  • [nodejs] 运行的nodejs代码走代理连接外网

    1 背景 nodejs后端调用三方服务sdk 运行主机在公司内外有网址过滤 无法连接到三方服务地址 设置代码走代理后服务调用正常 2 方法 修改node modules rest facade src Client js代码 让网络连接能够
  • Xorm 使用手册,增删改查之查

    Xorm 使用手册 增删改查之查 Xorm轻松学习 个人博客站点 简书 猫轻王 https www jianshu com u 6cce817646be 掘金 猫轻王 https juejin cn user 164091868034745
  • R 实践深度学习

    特点 将帮助您了解流行的深度学习架构及其在 R 中的变体 并为它们提供现实生活中的示例 涵盖了用于预测和分类的基本深度学习技术和概念 将了解神经网络 深度学习架构以及使用 R 实现深度学习的基础知识 将引导您使用重要的深度学习库 如 Ker
  • 4.28黄金双线收官会跌吗?今日如何稳健布局?

    近期有哪些消息面影响黄金走势 双线收官黄金多空该如何研判 黄金消息面解析 现货黄金价格周五 4月28日 小幅收跌 在美国公布第一季GDP增速低于预期后 金价在过去五个交易日内第四次收于2000美元下方 在今年初高通胀 利率继续上行和银行业危
  • 数字通信实验1 调制解调的matlab实现_实验要求

    实验1 调制解调的matlab实现 一 实验目的 掌握2ASK 2FSK 2PSK 2DPSK的调制解调实现流程 二 实验内容 完成2ASK相干解调的收发端完整程序 并画出已调制信号波形 功率谱密度波形 接收端各关键点波形 分别完成2FSK
  • 经验分享:如何运用R的MICE包对数据集中不同变量采用不同方法及跳过部分变量进行多重插补

    运用R的MICE包对数据集进行多重插补 multiple imputation 遇到两个具体需求 1 只需针对缺失值较高的部分变量而不是全部变量进行填充 但仍想将全部变量纳入数据集中 2 对于不同的具体变量 采用不同的多重插补具体方法 如处
  • 微信小程序——如何获取到输入框的值

    在微信小程序中 可以通过以下几种方式来获取输入框的值 使用 bindinput 绑定输入事件 通过 event detail value 获取输入框的值 具体操作如下
  • 拔叉零件的加工工艺,设计18铣槽的铣床夹具

    目 录 一 序言 1 二 零件的分析 3 1 零件的作用 3 2 零件的工艺分析 3 三 确定毛坯 4 四 工艺规程设计 5 五 夹具设计 14 六 总结 17 七 参考文献 18 一 序 言 机械制造工艺学课程设计使我们学完了大学的全部基
  • mock拦截axios请求,以及axios请求拦截设置token

    直接上源码
  • 投中网发布!持安科技荣登中国企业服务产业最佳投资案例TOP10

    近日 2022年度投中榜发布 持安科技凭借业内领先的零信任产品创新力 出众的方案落地实力及广阔的市场发展潜力 成功入选 投中2022年度中国企业服务产业最佳投资案例TOP10 投中榜 是投中信息秉承专业 严谨 客观 公正的原则 对中国私募股
  • 算法通过村第八关-树(深度优先)白银笔记

    文章目录 前言 1 最大深度问题 2 判断平衡树 3 最小深度 4 N叉树的最大深度 总结 前言 提示 我的整个生命 只是一场为了提升社会地位的低俗斗争 埃莱娜 费兰特 失踪的孩子 这一关我们看一些比较特别的题目 关于二叉树的深度和高度问题
  • 笔记-Flutter 之点击空白处取消TextField焦点

    本人是做iOS开发的 点击空白处取消TextField焦点这个需求是非常简单的 在学习Flutter过程中 面对这个需求走了不少弯路 现在得到了一个感觉不错的解决方案 这里和大家分享一下 也希望对小伙伴们有所帮助 GestureDetect
  • 程序设计语言-软件设计(二十一)

    数据结构与算法 二十 快速排序 堆排序 四 https blog csdn net ke1ying article details 129269655 这篇主要讲的是 编译与解释 文法 正规式 有限自动机 表达式 传值与传址 多种程序语言特
  • Taylor公式和插值多项式

    Taylor公式和插值多项式 笔记总结自 复旦大学 陈纪修 数学分析 课程 第5章第3节 Taylor公式和插值多项式 文章目录 Taylor公式和插值多项式 一 Taylor公式 带Peano余项的Taylor公式 带Lagrange余项
  • java代码实现分页_Java分页实现(示例代码)

    首先我们要清楚java分页的思路 第一我们要明白前端页面需要向java后台传递当前页码数以及每页显示多少条数据 第二java后台代码需要向前端页面传递每页显示的数据 以及总条数以及总页数 代码如下 首先我们要创建一个分页类用来存储数据 pu
  • 汇编——寄存器的分类和功能

    在汇编中 个人感觉最重要的部分其实就是寄存器了 这次我们了解一下寄存器的分类和功能 先说一下寄存器是什么吧 其实就是一部分的空间 我们可以使用这些空间来存储内容 寄存器的空间都是16位的 80x86中 后来有增长 也就是1个字的空间 堆栈则
  • Google Earth Engine(GEE) 03-矢量数据类型

    Google Earth Engine GEE 03 矢量数据类型 GEE基本语法 Geometry Dictionary Feature和FeatureCollection之间的关系 Dictionary Feature 常用函数 Fea
  • day--03springmvc

    回顾 1 响应 页面跳转 controller方法的字符串返回值 使用Model对象进行数据共享 默认是存储在request域对象中 使用ModelAndView对象 直接响应数据 controller方法返回的是普通字符串 control