`
guiqing85
  • 浏览: 168815 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JSP学习笔记(四) JSP实现文件上传 JSP数据验证 JSP分页实现

阅读更多
1 实现文件上传

<form action="" method="POST" enctype="multipart/form-data">
file:<input type="file" name="file"/>
<br/>
<input type="submit"/>
</form>
观测HTTP Monitor
POST /fileUpload/upload.jsp HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: http://127.0.0.1:8082/fileUpload/
Accept-Language: zh-cn
Content-Type: multipart/form-data; boundary=---------------------------7d73e2c110626
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: 127.0.0.1
Content-Length: 234
Connection: Keep-Alive
Cache-Control: no-cache

-----------------------------7d73e2c110626
Content-Disposition: form-data; name="file"; filename="C:\Documents and Settings\Administrator\桌面\test.txt"
Content-Type: text/plain

abc
-----------------------------7d73e2c110626--


1)获得文件边界标记
   if (contentType.indexOf("multipart/form-data") >= 0) {
      boundary = contentType.substring(contentType.indexOf("boundary=") + 9);
    }

2)获得content的长度
int contentLength = request.getContentLength();

3)  //以流的形式接收http数据
    InputStream is = request.getInputStream();
    byte dataBuffer[] = new byte[contentLength];
    int dataRead = 0;
    int totalDataRead = 0;
    while ( (dataRead = is.read(dataBuffer, totalDataRead, contentLength)) !=
           -1) {
      totalDataRead += dataRead;
    }
4)    //取得文件名
    String file = new String(dataBuffer);
    String saveFile = file.substring(file.indexOf("filename=\"") + 10);
    saveFile = saveFile.substring(0, saveFile.indexOf("\n"));
    saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1,
                                  saveFile.indexOf("\""));
5)    //寻找文件起始位置
    int pos = file.indexOf("filename=");
    pos = file.indexOf("\n", pos) + 1;//换行
    pos = file.indexOf("\n", pos) + 1;//换行
    pos = file.indexOf("\n", pos) + 1;//换行
   
6)   //文件的结束位置(boundary多两个--加上一个换行符合)
int boundaryEnd = file.indexOf(boundary, pos) - 4;

7)  可以处理文本文件和二进制文件(以byte为单位)
    //起始点
    int start = (file.substring(0, pos)).getBytes().length;
    //结束点
    int end = (file.substring(0, boundaryEnd)).getBytes().length;
   
8)保存文件
    FileOutputStream fos = new FileOutputStream("d:\\temp\\" + saveFile);
    fos.write(dataBuffer, start, (end - start));
    fos.close();
   
2 数据验证

如何完成Web App中的数据验证工作

1)输入格式验证: 输入域不能为空,只能是数字,数据长度大于5等等
JavaScript客户端完成(验证框架,负责客户端方面的验证)

2)业务逻辑验证: 后台数据库要求提交数据唯一性
Java服务器端完成(没有现成的框架,因为不同的项目有不同的业务规则)


3 分页实现
查询数据库时,如果满足条件的记录很多,该如何返回给页面?
查询分页
1)一次性从数据库中查出所有信息,在内存中作分页(缓存)
特点:速度非常快,消耗资源大(内存?)
2)分多次查询数据库,一次查询的数据量就是一个页面可以显示的数据量
特点:销毁资源少,相对来说速度慢
3)折衷的方案(一次只取n页,1<n<总页数)(部分缓存)
特点:中庸之道

rows:数据库表中记录总行数
totalPage:总页数           导出属性(可以由其他属性计算而得)
size:每页显示的记录数目
curPageNo:当前页
startRowNo:当前页在数据库中的起始行号  导出属性
分享到:
评论

相关推荐

    java中级笔记+severlet jsp 分页 ajax等技术的笔记

    5. **Java笔记**:这份笔记可能包含了对这些技术的深入理解和实践案例,包括但不限于:Servlet的配置与部署、JSP的EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)、分页实现的各种策略...

    Jsp链接Mysql+Jsp注册表单(学习笔记).

    JSP文件会被Web容器(如Tomcat)转换为Servlet,然后执行。 2. **MySQL数据库介绍** MySQL是一个关系型数据库管理系统,广泛应用于Web应用程序中,以其高效、稳定和开源特性而受到青睐。 3. **JDBC连接MySQL** ...

    使用jsp分页显示数据

    在JavaWeb开发中,分页显示数据是一项常见的需求,它能有效地提高用户界面的可读性和性能。本教程将深入探讨如何使用JSP...学习者可以通过这些资源,结合实际项目,掌握使用JSP、Servlet和JDBC实现分页显示数据的技术。

    JSP分页技术 假分页技术

    **JSP分页技术**是Web开发中常用的一种技术,用于在网页上展示大量数据时进行数据的分块显示,提高用户体验。它允许用户按需加载数据,避免一次性加载所有数据导致页面响应慢或者内存压力过大。在此,我们将探讨JSP...

    JSP学习笔记

    ### JSP学习笔记详解 #### 一、JSP基础语法概览 JSP(Java Server Pages)是一种在服务器端执行的脚本语言,用于生成动态网页。它将HTML标记、JavaScript脚本和Java代码结合在一起,使开发者能够创建功能丰富的Web...

    JSP小项目加笔记

    本资源是关于JSP(Java Server Pages)的小型项目集合,包含了相关的代码实现和学习笔记,旨在帮助开发者深化对JSP的理解并提升实际操作能力。JSP是一种动态网页技术,它允许我们将Java代码嵌入到HTML或XML文档中,...

    Java学习笔记

    Java学习笔记 1、连接数据库步骤 2、不同数据库的驱动程序和连接字符串 3、连接数据库常见问题 4、B/S结构和C/S结构的区别 5、如何处理中文乱码问题 ...8、用Session保存登录信息 ...14、JSP实现多数据分页

    JSP七个小项目代码和笔记汇总(java+web).rar

    - **项目四:文件上传下载**:展示了如何在JSP中处理文件上传和下载,可能涉及到文件流的读写和临时文件的管理。 - **项目五:分页显示**:讲解了如何在大量数据中实现分页展示,涉及数据库查询优化和前端分页...

    JSP七个小项目代码和笔记汇总

    本资源包集合了七个不同的JSP项目代码和相关的学习笔记,是深入理解JSP技术及其应用的良好资料。 1. **用户登录与注册系统** 这个项目通常涉及到HTML表单提交、Servlet处理请求、JSP显示结果。通过这个项目,你...

    JSP+DAO留言管理程序(代码+笔记)

    【JSP+DAO留言管理程序】是一个典型的Web应用程序开发实例,它主要利用JavaServer Pages(JSP)技术和Data Access Object(DAO)模式来实现对用户留言的管理。在这个程序中,用户可以查看、添加、编辑和删除留言,而...

    JSP七个小项目源码和笔记汇总(PDF)

    每个项目的学习笔记PDF文件将详细解析项目的实现思路、关键代码及可能遇到的问题,提供了一步一步的学习指导。通过这些笔记,你可以深入理解JSP语法、Servlet机制、数据库连接、MVC架构以及前后端交互原理。 总的来...

    JSP+JDBC留言管理程序(代码+笔记

    【JSP+JDBC留言管理程序】是一种基于Java Web技术的简单应用,它结合了JavaServer Pages(JSP)和Java Database Connectivity(JDBC)来实现对用户留言的数据存储和展示功能。在这个程序中,用户可以查看已有的留言...

    7个经典的jsp小项目

    学习者将了解如何使用JSP表单收集用户输入,处理验证,以及将用户信息存储到数据库。 3. **图书管理系统** 这个项目可能涉及到数据库查询、CRUD操作(创建、读取、更新和删除)、会话管理以及分页显示。通过这个...

    struts分页笔记

    在"分页"这个压缩包文件中,可能包含了相关的源代码示例,如Action、Service、DAO、JSP页面和配置文件等,你可以通过学习这些示例来深入理解Struts1的分页实现方式。记住,实践是检验理论的最好方法,动手尝试并调试...

    自定义标签学习笔记

    ### 自定义标签学习笔记 #### 一、什么是自定义标签? 自定义标签是JSP(Java Server Pages)中的一种功能,允许开发者创建可重用的组件。这些组件封装了特定的功能,可以在不同的JSP页面中复用,从而提高开发效率...

    JSP应用笔记总结——我的笔记

    以下是对JSP学习中一些关键知识点的总结: 1. **变量未解析错误**:在编写JSP时,若遇到“变量can't be resovled”的错误,意味着在当前上下文中没有定义该变量,确保在使用变量之前已正确声明和初始化。 2. **...

    Servlet&JSP课后习题解答

    论譠页面、数据分页可以使用GET,便于使用者设定为书签。 2. 何者应该使用POST请求来发送? 答案:A、B、D 提示:敏感性数据、大量数据不应使用GET来发送。搜寻引擎结果画面可以使用GET,便于使用者设定为书签。 3...

    Java相关课程系列笔记之十三Struts2学习笔记

    本笔记将深入探讨Struts2的核心概念、发展历程、使用方法以及与OGNL(Object-Graph Navigation Language)的结合应用。 **一、Struts2概述** 1.1 为什么要用Struts 在Java Web开发中,Struts2作为MVC框架,能够...

    struts2学习笔记

    本学习笔记将详细阐述Struts2的核心概念、发展历程、使用步骤以及OGNL技术。 一、Struts2概述 1.1 为什么要用Struts 在传统的JSP开发中,模型与视图、控制器的耦合度较高,导致代码维护困难。Struts2引入了MVC...

Global site tag (gtag.js) - Google Analytics