《javaweb——文件上传-分页查询》

1、文件上传


    1.文件上传的应用场景:提交作业    上传头像       提交简历(上传附件)    上传商品,图书图片


    2.文件上传的前台如何编写以及注意事项:
            1.肯定需要用到表单
            2.文件上传的那一栏需要提供   input的type=file的组件,同样需要加name给后台获取
            3.回顾form表单的三大属性:
                    A.action:表单的提交路径
                    B.method:表单的提交方式,2大默认值,一般都是post,很少使用get
                           get/post的区别:get不安全会把数据暴露在URL地址上,可以携带的数据非常少只有几KB,速度较快
                                          post安全不会把数据暴露在URL地址上,可以携带的数据非常多,速度较慢

                    C.enctype:表单的类型  三大默认值:
                            a.普通表单:application/x-www-form-urlencoded  默认就是
                            b.功能表单:multipart/form-data 普通表单的升级版,可以用来实现文件上传
                            c.功能表单:text/plain  普通表单的升级版,可以用来实现大文本表单提交

            4.form表单属性需要注意的是:1.method必须为post   2.enctype必须为multipart/form-data

----------------------------------------------------------------------------------------------------------

            以上暂时省略文件上传相关的数据校验

----------------------------------------------------------------------------------------------------------

        3.文件上传的后台如何编写以及注意事项:
                  1.肯定需要用到Servlet  (Servlet怎么写依然怎么写)
                  2.在类名的上面在加一个额外的注解:@MultipartConfig 表示该Servlet支持处理文件上传
                  3.需要接受文件  通过req.getPart("前台的文件的name值");
                                普通数据通过req.getParameter("前台的组件的name值")
                                文件类型数据通过req.getPart("xxx");
                  4.获取文件的相关信息
                                 通过第三步的Part part = req.getPart("xxx");
                                 来获取相关信息
                                 System.out.println(part.getContentType());//获取文件的类型
                                 System.out.println(part.getSize());//获取文件的大小 单位是字节
                                 System.out.println(part.getSubmittedFileName());//获取文件名

                  5.保存用户上传的文件
                        开始将用户上传的文件保存在本地服务器(本地的一个路径)
                        声明一个文件的保存路径
                        组装一下  需要将路径和文件名进行拼接
                        String path = "D:\\uploadTest\\" + part.getSubmittedFileName();
                        将part对象保存到path路径中 part.write(path);

课堂作业:实现文件上传,完成后将url地址发送给教师机。然后将我上传的文件,再次发送给教师机   完成+3分

----------------------------------------------------------------------------------------------
复习:数据校验的三层防线:
1.前台的JS校验
2.后台的Java校验
3.数据库的约束校验    ---   主键约束    外键约束  唯一约束  自增约束   非空约束   检查约束   默认约束

JS数据校验的事件处理:
        1.onsubmit  提交表单的时候进行统一的校验

        2.onblur和onfouce  对表单内部的每个组件都进行一一校验

        3.onchange  常用于下拉框和file组件   值发生了改变才触发

        上述3个同时组合使用

校验分成三大类:
    1.文本类型校验 例如文本框密码框等
    2.单选框复选框校验 判断是否勾选的几个
    3.文件类型校验 判断文件大小,文件类型,文件后缀名

Jquery对象不允许使用JS的相关方法,反正亦然

        jquery对象和JS对象如何进行转换。

        let a1 = document.getElementById("file");//dom/js对象
        let a2 = $("#abc");//jquery对象

        js转成jquery对象
        $(a1)表示将a1对象转成了jquery对象

        jquery对象转成js对象
        a2[0];表示OK了


            let a1 = document.getElementById("abc");
            let a2 = $("#abc");
            // console.log(a1.innerText);   //按钮123
            // console.log(a2.innerText);   //报错
            // console.log(  a1.text()  );  //报错
            // console.log(  a2.text()  );  //按钮123
            // console.log( $(a1).text()  );
            // console.log(a2[0].innerText);


     files[xxx] 就是js的专属用法

     如果说非要在Jquery里面调用js的相关方法
        方法1:多写点代码 就使用DOM技术来获取JS对象
         let file = document.getElementById("file").files[0];

        方法2:将jquery对象转成JS对象
        let file = $("#file")[0].files[0];

后台校验:和前台校验思路是一致的

        需要额外的校验:文件名校验
        张三和李四和王五的文件都叫1.jpg   会导致文件的覆盖。

        解决方式:只需要保证文件名是独一无二的即可
        利用Java自带的UUID 即可
        UUID是Java生产一个随机字符串的工具类   可以保证UUID的唯一性

2、分页查询

当一个页面数据量很大的时候 肯定不宜将所有数据放在一个页面里面。
此时就需要用到分页查询。


分页查询的基本思想:
    假设有351条数据,每页显示5条数据。
    需要得到哪些有价值的信息:
    1.一共有多少页      --->   需要知道总条数(sql查询)
        总页 ==> 总条数%每页显示的条数==0? 总条数/每页显示的条数 : 总条数/每页显示的条数+1
        总页 ==>  ceil(总条数/每页显示的条数.0)  注意强行让其进行double运行。

    2.第几页应该显示哪些数据
        分页查询的sql语法:
            select * from 表名  limit  a,b ;
            a表示从第几条开始  b表示每页显示几条,一般是固定值。

            -- 第一页
            select * from goods  limit  0,10 ;

            -- 第二页
            select * from goods  limit  10,10 ;

            -- 第三页
            select * from goods  limit  20,10 ;

            总结:a = (n-1) * b

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

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

相关文章

Vue 自定义搜索输入框SearchInput

效果如下&#xff1a; 组件代码 <template><div class"search-input flex flex-space-between flex-center-cz"><input type"text" v-model"value" :ref"inpuName" :placeholder"placeholder" keyup.enter&…

java 统计中文字符个数能用length吗

在Java中&#xff0c;统计中文字符的个数可以使用length()方法。但是&#xff0c;这只能统计中文字符串的长度&#xff0c;不能判断其中是否包含中文字符。如果你需要统计一个字符串中中文字符的个数&#xff0c;你可能需要使用正则表达式或者其它方式来判断每个字符是否为中文…

【赠书第11期】Unity 3D游戏开发

文章目录 前言 1 Unity 3D简介 2 Unity 3D基本概念 2.1 场景&#xff08;Scene&#xff09; 2.2 游戏对象&#xff08;Game Object&#xff09; 2.3 组件&#xff08;Component&#xff09; 2.4 资源&#xff08;Asset&#xff09; 3 Unity 3D重要组件 3.1 物理引擎 …

HarmonyOS4.0从零开始的开发教程18HarmonyOS应用/元服务上架

HarmonyOS&#xff08;十六&#xff09;HarmonyOS应用/元服务上架 简介 随着生活节奏的加快&#xff0c;我们有时会忘记一些重要的事情或日子&#xff0c;所以提醒功能必不可少。应用可能需要在指定的时刻&#xff0c;向用户发送一些业务提醒通知。例如购物类应用&#xff0c…

高性价比AWS Lambda无服务体验

前言 之前听到一个讲座说到AWS Lambda服务&#xff0c;基于Serverless无服务模型&#xff0c;另外官网还免费提供 100 万个请求 按月&#xff0c;包含在 AWS 免费套餐中是真的很香&#xff0c;对于一些小型的起步的网站或者用户量不大的网站&#xff0c;简直就是免费&#xff…

Flink系列之:Top-N

Flink系列之&#xff1a;Top-N 一、TOP-N二、无排名输出优化 一、TOP-N 适用于流、批Top-N 查询可以根据指定列排序后获得前 N 个最小或最大值。最小值和最大值集都被认为是Top-N查询。在需要从批表或流表中仅显示 N 个底部或 N 个顶部记录时&#xff0c;Top-N 查询是非常有用…

PyTorch官网demo解读——第一个神经网络(2)

上一篇&#xff1a;PyTorch官网demo解读——第一个神经网络&#xff08;1&#xff09; 继上一篇文章我们展示了第一个神经网络的完整代码&#xff0c;今天我们来聊聊这个神经网络的模型设计。 这个demo实际上只使用了一个简单的线性模型&#xff1a;y wx b&#xff1b; 手写…

[Spring 从模拟开始学习源码]`@Value`的底层实现

Value 注入主要有三种场景&#xff1a; 注入原始值&#xff0c;比如说注入Value("hello")注入变量&#xff0c;比如Value("${JAVA_HOME}")注入spel表达式&#xff0c;比如Value("#{1 2}") 文章目录 获取 Value内容解析 ${}内容解析 SPEL类型转换…

云计算:Vmware 安装 FreeNAS

目录 一、实验 1.Vmware 安装 FreeNAS 2.配置Web界面 二、问题 1.iSCSI如何限定名称 2.LUN和LVM的区别 一、实验 1.Vmware 安装 FreeNAS &#xff08;1&#xff09;环境准备 VMware Workstation 17 FreeNAS相关安装部署镜像: 官网地址&#xff1a; https://download…

【linux】SSH终端Putty配置:文件上传/下载、显示中文字体、自动登录

文章目录 写在前面putty上传/下载文件1. 下载2. 解压和配置3. 使用sz/rz3.1 下载文件:sz3.2 上传文件:rz 显示中文字体1. 下载合适的字体2. 解压和安装3. putty配置 putty自动登录1. putty配置2. putty快捷方式配置3. 使用putty 写在后面 写在前面 一篇博客介绍了12种SSH终端工…

力扣刷题记录(10)LeetCode:51、37

51. N 皇后 应为各个皇后之间不能同行&#xff0c;所以一行只能有一个皇后。我们可以遍历每一行的各个位置&#xff0c;判断该位置是否可以放置皇后&#xff0c;一行放置一个。当一个皇后的位置已经在这一行确定了&#xff0c;我们就可以遍历下一行来确定下一个皇后在下一行的位…

laravel8 安装swoole扩展

,1&#xff0c;确保你的开发环境满足要求&#xff0c;包括 PHP 版本和相关的扩展。Swoole 扩展要求 PHP 版本为 7.2 或更高&#xff0c;并且需要安装 Swoole 扩展本身。 ,2&#xff0c;打开终端或命令行窗口&#xff0c;并导航到你的 Laravel 项目目录。 ,3&#xff0c;使用 …

✺ch3——数学基础

目录 3D坐标系和点矩阵单位矩阵转置矩阵逆矩阵逆转置矩阵矩阵的运算矩阵加法()矩阵乘法() 常用的变换矩阵平移矩阵缩放矩阵旋转矩阵透视矩阵正射投影矩阵LookAt矩阵 向量加法和减法点积叉积 局部空间和世界空间——模型矩阵M视觉空间和合成相机——模型-视图矩阵MV用GLSL函数构…

MySQL的explain解读记录

简介 Explain是Mysql自带的sql执行的性能分析器。通过 explain 命令获取 select 语句的执行计划。模拟优化器执行SQL语句&#xff0c;从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是结构的性能瓶颈。 Explain可以分析出表的读取顺序、数据读取操作的操作类型、…

域名接入CloudFlare

接入Cloudflare分为两步 Cloudflare中注册站点域名DNS修改 整个过程如下 1.) 访问Cloudflare面板&#xff0c;添加站点 2.) 选择免费版 3.) 查看并明确DNS记录&#xff0c;其中服务的解析地址填写自己实际的服务器ip 4.) 去域名管理控制台&#xff0c;移除旧DNS服务器&#…

YOLOv5改进 | 2023 | CARAFE提高精度的上采样方法(助力细节长点)

一、本文介绍 本文给大家带来的CARAFE&#xff08;Content-Aware ReAssembly of FEatures&#xff09;是一种用于增强卷积神经网络特征图的上采样方法。其主要旨在改进传统的上采样方法&#xff08;就是我们的Upsample&#xff09;的性能。CARAFE的核心思想是&#xff1a;使用…

轻量封装WebGPU渲染系统示例<52>- Json数据描述材质、纹理等3D渲染场景信息

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/material/src/voxgpu/sample/DataDrivenScene3.ts 当前示例运行效果: ​​​​​​​ Json数据: {"renderer": {"mtplEnabled": true,"camera": {"eye&quo…

16、vue3(十六):数据大屏(一):尺寸适配,水球图,柱形图,饼状图、图例

目录 一、尺寸适配解决方案 1.vw和vh 2.scale 二、数据大屏顶部搭建 1.思路分析

lightdb mysql模式下的datediff

文章目录 背景MySQL行为LightDB MySQL兼容模式行为DATEDIFF 背景 在信创适配中&#xff0c;有从MySQL迁移过来的程序&#xff0c;其中程序涉及日期加减数字的场景和使用datediff函数的场景。因此在LightDB-X 23.4版本中&#xff0c;MySQL兼容模式下对日期加减数字做了支持&…

[原创][R语言]股票分析实战[2]:周级别涨幅趋势的相关性

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ联系: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、D…