JSP基础与案例开发详解:第9章 实用技术浅析_第1页
JSP基础与案例开发详解:第9章 实用技术浅析_第2页
JSP基础与案例开发详解:第9章 实用技术浅析_第3页
JSP基础与案例开发详解:第9章 实用技术浅析_第4页
JSP基础与案例开发详解:第9章 实用技术浅析_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1第9章 实用技术浅析学前提示虽然对于不同的用户可能需求不一样,但根据作者多年工作经验的积累,发现刚入门的读者通常需要解决中文乱码、文件的上传下载、验证码效果的实现、水印图片效果的实现、DAO设计模式的实现等问题。本章将围绕这些内容展开叙述。知识要点彻底解决中文乱码问题文件上传功能的实现验证码功能的实现水印图片效果的实现DAO设计模式的理解29.1彻底解决中文乱码问题1.熟悉编码格式(1) ISO8859-1(2) GB2312/GBK(3) Unicode(4) UTF-82.熟悉Web应用程序中与编码相关的部分(1) JSP编译(2) JSP输出(3) META设置(4) form设置39.1彻底解决中文乱码问题3.熟悉Web应用程序乱码产生的原因(1) JSP页面被编译为class时,如果未指定字符集,默认使用ISO8859-1的编码格式,这样中文会出现乱码。(2) 使用表单时如果设定提交方式为POST而没有设置提交的编码格式,则会以ISO8859-1方式进行提交,而接受的JSP却以UTF-8的方式接受,这样也会导致乱码。(3) 表单使用时如果设定提交方式为GET而没有设置提交的编码格式,Tomcat会以GET的默认编码方式ISO8859-1对汉字进行编码,编码后追加到URL,导致接收页面得到的参数为乱码。49.1彻底解决中文乱码问题4.解决乱码(1) 设置文件本身的编码格式。这可以在Eclipse或MyEclipse中设置。执行Window→Preferences菜单命令,在弹出的对话框中按照图9.1进行设置即可。(2) 在JSP页面上指定字符集。通常页面字符集的设置如下所示:参见教材P308(3) 数据库连接时指定的字符集。(4) 在程序获取页面数据时使用如下代码:response.setContentType("text/html;charset=gb2312");request.setCharacterEncoding("gb2312");59.2文件上传功能的实现 在许多Web站点应用中都需要为用户提供通过浏览器上传文档资料的功能,例如,上传邮件附件、个人相片、共享资料等。对文件上传功能,在浏览器端提供了较好的支持,只要将FORM表单的enctype属性设置为“multipart/form-data”即可;但在Web服务器端如何获取浏览器上传的文件,需要进行复杂的编程处理。为了简化和帮助Web开发人员接收浏览器上传的文件,一些公司和组织专门开发了文件上传组件,例如JspSmart公司的JspSmartUpload组件、O’Reilly公司的Cos组件。本章将详细介绍Apache组织的文件上传组件CommonsFileUpload的使用。69.2.1下载CommonsFileUploadCommonsFileUpload是Apache组织下一个开源的文件上传组件,可以直接在Apache官方网站下载,下载地址是/fileupload/download_fileupload.cgi,如图9.2所示。CommonsFileUpload组件实现文件的上传它还需要依赖于CommonsIO组件,Commons就是一个处理I/O流的工具类包,能让我们很方便地实现文件的读写操作。CommonsIO组件也属于Apache组织下的开源组件,可以通过地址/io/直接下载,如图9.3所示。79.2.2CommonsFileUploadAPI介绍1.DiskFileUpload类(1) setSizeMax方法(2) setSizeThreshold方法(3) setRepositoryPath方法(4) parseRequest方法(5) isMultipartContent方法2.FileItem类(1) booleanisFormField()方法(2) StringgetName()方法(3) StringgetFieldName()方法(4) voidwrite(Filefile)方法(5) StringgetString()方法(6) StringgetContentType()方法(7) booleanisInMemory()方法(8) voiddelete()方法(9) InputStreamgetInputStream()方法(10) longgetSize()方法89.2.3CommonsFileUpload上传示例在index.jsp页面添加代码,该页面如图9.5所示。index.jsp页面的代码清单如下所示:参见教材P31399.2.3CommonsFileUpload上传示例在项目中添加commons-fileupload所需的JAR包,新创建Servlet名为FileUploadServlet,代码清单如下所示:参见教材P314在项目的WebRoot目录下新创建一个用来保存上传文件的目录,叫作files,然后把项目加载到Tomcat容器下并启动,文件上传成功,如图9.6所示。109.2.3CommonsFileUpload上传示例在MyEclipse的Servers视图中展开Tomcat,选中项目,右击,从弹出的快捷菜单中选择Browsedeploymentlocation命令,如图9.7所示。在打开的目录中打开files文件夹,便可看到已经上传文件的存在,如图9.8所示。119.3验证码功能的实现验证码就是每次访问页面时随机生成的一张图片,图片的内容一般是数字、字母或汉字的随机组合,需要访问者把图中的内容识别出来并填写到表单中提交,如果填写的内容与图片中的内容不一致,就拒绝提交表单,这样就有效地防止了垃圾数据的产生。所以在论坛或留言板中可以看到验证码的存在,它能防止恶意灌水、广告帖等。Java也提供了绘制图片的功能类,在了解数字验证码、数字与英文混合验证码、中文验证码之前,先学习在Java中图片的生成原理。129.3.1图片生成原理1.Graphics类或BufferedImage类的介绍(1) Graphics类(2) BufferedImage类2.在Java环境下绘制图片(1) 设置页面类型(2) 绘制动态图像(3) 设置返回图片编码类型139.3.2JSP版数字验证码在生成验证码图片的时候,就会同时生成一个Session,其值就是验证码图片中的数字值。同时,提供输入框让用户输入,提交输入值后,与已有的Session值进行比较,根据比较结果做相应的判断。数字验证码的效果如图9.11所示。149.3.2JSP版数字验证码1.编写放置验证码的页面2.编写产生验证码的页面159.3.3JSP版英文与数字混合验证码数字与英文混合生成验证码的方式是较适用的方式之一。数字与英文混合生成验证码的效果如图9.12所示。页面实现的主要代码如下:参见教材P323生成数字与英文混合验证码的代码如下:参见教材P323169.3.4JSP版中文验证码现在一些网站上也出现了中文样式的验证码,页面效果如图9.13所示。因为中文的识别效果最佳,所以深受客户欢迎,下面就来探讨一下中文验证码的产生过程。页面主要代码如下:参见教材P325生成中文验证码的代码如下:参见教材P325179.3.5JSP版表达式验证码用户需要识别出图片上的表达式,并计算出结果,填写在相应的输入框中,输入结果与运算结果相符时方可提交数据。页面效果如图9.14所示。Login.jsp页面的代码清单如下:参见教材P327numimg.jsp页面的代码清单如下:参见教材P327189.4水印图片效果的实现实现水印的效果需要用到ImageIO类,其静态方法可以执行许多常见的图像I/O操作。imageio包含一些基本类和接口,有的用来描述图像文件内容(包括元数据和缩略图)(IIOImage);有的用来控制图像的读取过程(ImageReader、ImageReadParam和ImageType-Specifier)和控制图像写入过程(ImageWriter和ImageWriteParam);还有的用来执行格式之间的代码转换(ImageTranscoder)和报告错误(IIOException)。199.4水印图片效果的实现在实现水印效果之前,先看看源图片,如图9.15所示。在图片上添加水印效果的功能代码如下:参见教材P329209.4水印图片效果的实现如果无法找到所要求样式的外观,则字体系统可以应用样式设计算法来获得所需的样式。例如,如果要求ITALIC,但是没有可用的斜体外观,则可以通过算法使普通外观倾斜。举例:Fontf=newFont("宋体",Font.BOLD,20);Fontf=newFont("隶书",Font.BOLD+Font.ITALIC,20); 运行以上代码,产生的水印文字与水印图片如图9.16所示。219.5DAO设计模式的理解数据库是比较稳定的,其中DAO组件依赖于数据库系统,提供数据库访问的接口。这样可以使业务逻辑与数据库的访问操作各尽其职。一般的DAO的封装有以下两个原则:一个表对应一个表,相应地封装一个DAO类。对于DAO接口,必须有具体的类型定义。这样可以避免被错误地调用。DAO模式很好地将业务逻辑与数据库访问操作相分离,使业务逻辑层无须关注底层数据库的操作。DAO模式通过对底层数据的封装,为业务层提供一个面向对象的接口,使得业务逻辑开发员可以面向业务中的实体进行编码。229.5DAO设计模式的理解在增、删、改、查的实例代码中,原本是使用Manage类将数据持久化到数据层,根据DAO模式的理解,现在将该类进行修改,修改后的代码清单如下所示:参见教材P334现在需要做的是,创建一个包,用于保存DAO接口,再创建一个包,用于保存DAO接口的实现类,如图

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论