`
guiqing85
  • 浏览: 162929 次
  • 性别: 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学习笔记

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

    JSP分页技术 假分页技术

    内含学习笔记,源代码,本来还有视频的,太大,没传上了,不过没关系,内容很详细了,大家参考!

    javaWeb学习笔记基础知识

    Servlet,请求和响应机制,jsp动态网页技术,会话跟踪 javaBean,JSP常用标签和自定义标签,AJAX实例,以及监听器,过滤器和BaseServlet和分页

    SSH学习基础笔记 .zip

    1-JSP+JDBC_假分页笔记.pdf 2-JSP+JDBC_真分页(基于Oracle数据库分页)笔记.pdf 3-JSP+DAO和MVC+DAO(基于MySQL数据库分页)-v笔记.pdf 4-Struts入门笔记.pdf 005_Struts+DAO登陆.pdf 9-Struts高级部分(1)(解决重复提交...

    老杜Servlet笔记.zip

    哔哩哔哩上老杜的Servlet笔记。 2020-5-05 Servlet学习 Tomcat 服务器配置 2020-5-08 UML 2020-5-08 Servlet学习 2020-5-09 Servlet学习 2020-5-10 Servlet学习 2020-5-11 Servlet学习---...2020-5-24 数据分页展示

    我的java学习笔记

    这是我在学习java是做的笔记!发在网上和大家分享和学习;文档里包含Spring / Hibernate / Struts /DWR/Oracle/MySql/JSP就打内置对象和两个分页的类等等;

    水木清华站∶Java版精华区 含jsp及js等集合.chm

    [目录]Java学习笔记(推荐) 6. [目录]JDBC文档 7. [目录]RMI 文档 2. [目录]Java资源(文档-书籍-下载-注册码) 1. [目录]License 和注册码 2. [目录]好书推荐 3. [目录]关于Java的...

    Java学习笔记-个人整理的

    {5.2.1}将浮点数四舍五入到指定精度}{98}{subsection.5.2.1} {6}Exception}{99}{chapter.6} {6.1}\ttfamily try-catch}{99}{section.6.1} {6.2}\ttfamily finally}{100}{section.6.2} {6.3}\ttfamily throws}{...

    免费下载:自己整理的java学习资料

    JAVA配置文件编写说明文档.pdf jboss.pdf log4j使用教程.txt struts_action.txt struts标签.chm swing02.doc Tomcat.chm webAndXml.pdf 正则表达式.chm 网页常用的jsp 脚本.doc JSF入门简体中文版 struts标签中文 ...

    jive.chm

    2 jcs学习笔记 3 关于Hibernate的Cache问题 4 用缓冲技术提高JSP应用的性能和稳定性 5 SwarmCache入门 &lt;br&gt; 源代码研究 1 Jive中的全局配置 2 Jive源代码情景分析-index....

    Jive资料集

    系统设计 1 jive设计思路 2 jive的工作内幕 3 Jive源代码研究 4 Jive中的设计模式 5 jive学习笔记 &lt;br&gt; &lt;br&gt; 数据库设计 1 Jive Forums数据库说明(英文) 2 Jive KB...

Global site tag (gtag.js) - Google Analytics