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:当前页在数据库中的起始行号 导出属性
分享到:
相关推荐
5. **Java笔记**:这份笔记可能包含了对这些技术的深入理解和实践案例,包括但不限于:Servlet的配置与部署、JSP的EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)、分页实现的各种策略...
JSP文件会被Web容器(如Tomcat)转换为Servlet,然后执行。 2. **MySQL数据库介绍** MySQL是一个关系型数据库管理系统,广泛应用于Web应用程序中,以其高效、稳定和开源特性而受到青睐。 3. **JDBC连接MySQL** ...
在JavaWeb开发中,分页显示数据是一项常见的需求,它能有效地提高用户界面的可读性和性能。本教程将深入探讨如何使用JSP...学习者可以通过这些资源,结合实际项目,掌握使用JSP、Servlet和JDBC实现分页显示数据的技术。
**JSP分页技术**是Web开发中常用的一种技术,用于在网页上展示大量数据时进行数据的分块显示,提高用户体验。它允许用户按需加载数据,避免一次性加载所有数据导致页面响应慢或者内存压力过大。在此,我们将探讨JSP...
### JSP学习笔记详解 #### 一、JSP基础语法概览 JSP(Java Server Pages)是一种在服务器端执行的脚本语言,用于生成动态网页。它将HTML标记、JavaScript脚本和Java代码结合在一起,使开发者能够创建功能丰富的Web...
本资源是关于JSP(Java Server Pages)的小型项目集合,包含了相关的代码实现和学习笔记,旨在帮助开发者深化对JSP的理解并提升实际操作能力。JSP是一种动态网页技术,它允许我们将Java代码嵌入到HTML或XML文档中,...
Java学习笔记 1、连接数据库步骤 2、不同数据库的驱动程序和连接字符串 3、连接数据库常见问题 4、B/S结构和C/S结构的区别 5、如何处理中文乱码问题 ...8、用Session保存登录信息 ...14、JSP实现多数据分页
- **项目四:文件上传下载**:展示了如何在JSP中处理文件上传和下载,可能涉及到文件流的读写和临时文件的管理。 - **项目五:分页显示**:讲解了如何在大量数据中实现分页展示,涉及数据库查询优化和前端分页...
本资源包集合了七个不同的JSP项目代码和相关的学习笔记,是深入理解JSP技术及其应用的良好资料。 1. **用户登录与注册系统** 这个项目通常涉及到HTML表单提交、Servlet处理请求、JSP显示结果。通过这个项目,你...
【JSP+DAO留言管理程序】是一个典型的Web应用程序开发实例,它主要利用JavaServer Pages(JSP)技术和Data Access Object(DAO)模式来实现对用户留言的管理。在这个程序中,用户可以查看、添加、编辑和删除留言,而...
每个项目的学习笔记PDF文件将详细解析项目的实现思路、关键代码及可能遇到的问题,提供了一步一步的学习指导。通过这些笔记,你可以深入理解JSP语法、Servlet机制、数据库连接、MVC架构以及前后端交互原理。 总的来...
【JSP+JDBC留言管理程序】是一种基于Java Web技术的简单应用,它结合了JavaServer Pages(JSP)和Java Database Connectivity(JDBC)来实现对用户留言的数据存储和展示功能。在这个程序中,用户可以查看已有的留言...
学习者将了解如何使用JSP表单收集用户输入,处理验证,以及将用户信息存储到数据库。 3. **图书管理系统** 这个项目可能涉及到数据库查询、CRUD操作(创建、读取、更新和删除)、会话管理以及分页显示。通过这个...
在"分页"这个压缩包文件中,可能包含了相关的源代码示例,如Action、Service、DAO、JSP页面和配置文件等,你可以通过学习这些示例来深入理解Struts1的分页实现方式。记住,实践是检验理论的最好方法,动手尝试并调试...
### 自定义标签学习笔记 #### 一、什么是自定义标签? 自定义标签是JSP(Java Server Pages)中的一种功能,允许开发者创建可重用的组件。这些组件封装了特定的功能,可以在不同的JSP页面中复用,从而提高开发效率...
以下是对JSP学习中一些关键知识点的总结: 1. **变量未解析错误**:在编写JSP时,若遇到“变量can't be resovled”的错误,意味着在当前上下文中没有定义该变量,确保在使用变量之前已正确声明和初始化。 2. **...
论譠页面、数据分页可以使用GET,便于使用者设定为书签。 2. 何者应该使用POST请求来发送? 答案:A、B、D 提示:敏感性数据、大量数据不应使用GET来发送。搜寻引擎结果画面可以使用GET,便于使用者设定为书签。 3...
本笔记将深入探讨Struts2的核心概念、发展历程、使用方法以及与OGNL(Object-Graph Navigation Language)的结合应用。 **一、Struts2概述** 1.1 为什么要用Struts 在Java Web开发中,Struts2作为MVC框架,能够...
本学习笔记将详细阐述Struts2的核心概念、发展历程、使用步骤以及OGNL技术。 一、Struts2概述 1.1 为什么要用Struts 在传统的JSP开发中,模型与视图、控制器的耦合度较高,导致代码维护困难。Struts2引入了MVC...