友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

JSP入门教程(DOC格式)-第26章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






/list。jsp 和/view。jsp 两个页面上的在线用户列表显示效果完全一样,如果有 

可能的话,我们希望将这些重复的部分从原来的页面中剥离出来,集中在一起让 

其他页面调用,这样更容易管理和维护。  



为了实现这一功能,我们需要借用另一个 jsp 指令(directive):include。  



   



这里的 file 可以使用相对路径,也可以使用绝对路径。这里的绝对路径与使用 

forward 时一致,都是以应用目录为根目录,参考这里的讨论第 3。4。1。2 节 “绝 

对路径”。  



我们顺便再看一下/include/onlineUser。jsp 的内容:  



  

  

  在线用户  

    

      

     ;{item}  

      

    

   



这就是一个单独的 jsp 页面,可以在里边使用 jsp 指令(directive),el,甚 

至是 taglib。  



不过 taglib 还是要在使用前定义的,因为每个页面都使用了相同的 taglib 定义 

和其他一些相同的 html 配置(编码,css 等),我们也把这部分提取成一个 jsp 

页面,让其他页面引用。这个页面也放在 include 目录下,meta。jsp 的内容如 

下。  



                                  101 / 148  


…………………………………………………………Page 102……………………………………………………………

                                    



  

  

  

   



meta。jsp 里定义了我们使用的 taglib,设置了默认的 contextPath,gb2312 的 

编码格式和 forum。css 样式表。在其他页面里对它进行引用就可以让其他页面内 

容也得到里边定义的功能,包括标签库定义和使用 c:set 设置的变量。  



  

      

    index  

   



include 之间的 jsp 中的定义和变量都是可以相互调用的,但是我们必须为每个 

jsp 页面都指定正确的编码格式。这依然是为了处理中文乱码,meta。jsp 中没有 

指定编码格式就是因为这也里没有中文。/include/onlineUser。jsp 里包含了中 

文,如果不设置 charset 就会显示乱码,使用 include 的时候需要注意这一点。  



10。4。 总结  



这个在线留言板包含了之前讨论过的问题:  



   1。  使用过滤器第 7。1 节  “批量设置请求编码”,处理中文乱码第 2。2 节  

       “中文乱码”。  

   2。  使用 servlet 处理转发请求第 6 章 贴近 servlet,结合数据库进行 CRUD 

      操作第 5 章 结合 javabean 实现 CRUD,并使用 foward 和 redirect 进行 

      请求转发和页面重定向第 3 章 请求的跳转与转发。  

   3。  页面显示数据的时候使用了 el 和 taglib 第 9 章 封装 taglib 组件。  

   4。  使用过滤器控制访问权限第 7。2 节  “用filter 控制用户访问权限”, 

      使用监听器操作在线用户列表第 8 章 配置 listener监听器。  



例子在 10…01 目录下,将目录复制到tomcat 的webapps 目录下即可使用。  



源代码在 10…01/WEB…INF/src 目录下,在将整个目录复制到webapps 下后,可以 

使用 pile。bat 进行编译。  



数据库脚本在 10…01/WEB…INF/sql 目录下,修改import。sql 后,执行 run。bat 

可改变数据库中的初始数据。  



                                  102 / 148  


…………………………………………………………Page 103……………………………………………………………

                                      



                       第 11 章 文件上传  



注意  



http 协议允许用户以请求形式将本地文档上传到服务器,这部分将涉及到二进 

制数据的处理,java 开源社区提供了许多处理文件上传的工具包,所以我们仅 

仅介绍上传的原理流程和工具配置,不会重新制造轮子。  



如果你不满足以下任一条件,请继续阅读,否则请跳过此后的部分,进入下一章: 

第 12 章 导出文件。  



   1。  了解http 使用 POST 和 GET 发送请求的区别。  

   2。  了解如何使用html 表单上传文件。  

   3。  了解使用 mons…fileupload 处理用户上传的文件。  



11。1。 远程网盘  



                                                                             



用户点击浏览选择需要上传的本地文件,然后点击提交上传到服务器。  



文件列表中显示已上传文件的名称,大小和上传时间,可以点击文件名浏览或下 

载文件,也可以点击删除删除文件。  



                                   103 / 148  


…………………………………………………………Page 104……………………………………………………………

                                                 



                                                                                                    



请看一下这里的 temp 和 upload 目录,mons…fileupload 会把从请求中接收 

到的文件临时保存在 temp 目录下等待处理,我们可以使用write()方法将临时 

文件移动到我们指定的目录,也可以直接用 delete()方法删除。  



upload 目录是上传文件的存放目录,上传成功的文件最后都会保存到这个目录 

下。  



                                                                                                                 



为了使用 mons…fileupload 处理上传文件,需要把两个依赖包放到 

WEB…INF/lib 目录下。  



                                                                                      



这样就能在 UploadServlet。java 中使用 mons…fileupload 了,处理上传的 

save()方法如下:  



public void save(HttpServletRequest request;HttpServletResponse  

response)  

    throws Exception {  

    String temp = getServletContext()。getRealPath(〃/temp〃); // 上传时 

存放临时文件的目录  

    String uploadDir = getServletContext()。getRealPath(〃/upload〃); //  

上传文件存放的目录  

    DiskFileUpload diskFileUpload = new DiskFileUpload();  



                                             104 / 148  


…………………………………………………………Page 105……………………………………………………………

                                         



    diskFileUpload。setSizeMax(1*1024*1024); // 设置允许用户上传文件大 

小;单位 :字节  

    diskFileUpload。setSizeThreshold(4096);  // 设置最多只允许在内存中 

存储的数据;单位 :字节  

    diskFileUpload。setRepositoryPath(temp); // 设置一旦文件大小超过 

getSizeThreshold()的值时数据存放在硬盘的目录  

  

    //开始读取上传信息  

    List fileItems = diskFileUpload。parseRequest(request);  

    Iterator iter = fileItems。iterator(); // 依次处理每个上传的文件  

  

    while  (iter。hasNext()) {  

        FileItem item = (FileItem) iter。n
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!