第九章 常用开发组件

图形验证码、二维码、加密

1.图形验证码

主要通过对用户密码进行验证来识别用户,引入验证码防止不法分子暴力破解。
它通常由服务器端程序Servlet产生并保存的,保存在session范围内,登陆或注册时将用户输入的验证码和服务器点保存的验证码进行比对。

2.二维码

比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型
生成二维码的方法有很多,可使用Google的ZXing组件、 Denso公司的QRCode组件 或Jquery插件等

// 设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小
        testQrcode.setQrcodeErrorCorrect('M');
        
// 设置编码模式:Numeric 数字, Alphanumeric 英文字母,Binary 二进制,Kanji 汉字(第一个大写字母表示)
        testQrcode.setQrcodeEncodeMode('B');
        
// 设置设置二维码尺寸,取值范围1-40,值越大尺寸越大,可存储的信息越大。
        testQrcode.setQrcodeVersion(7);

3.MD5加密

采用加密技术对用户密码加密后再存储到数据库中,现在比较流行的加密算法是MD5

不能根据加密后的信息(密文)得到加密前的信息(明文)。
对于不同的明文,加密后的密文也是不同的。

在Java 类库中,java.security . MessageDigestsun.misc.BASE64Encoder类提供了对MD5算法实现的支持

1.把要加密的字符串转换成字节数组。
2.获取MessageDigest对象,利用该对象的digest方法完成加密,返回字节数组。
3.将字节数组利用base64算法转成等长字符串。

在线编辑器

1.UEditor是由百度web前端研发部开发的所见即所得的开源富文本编辑器,具有轻量、可定制、用户体验优秀等特点。
2.基于MIT开源协议,所有源代码在协议允许范围内可自由修改和使用。

文件的上传和下载

文件的上传与下载是Web应用常见模块:
1.通过文件上传可将本地资源上传到服务器
2.通过文件下载将服务器资源下载到本地

常见的上传下载组件:有FileUpload、JspSmartUpload,Cos等
1.文件上传
1.表单的method属性的值必须为post
2.enctype属性值必须设置为multipart/form-data
3.upload为执行上传操作的Servlet的地址。

<body>
    <form method="post" action="upload" enctype="multipart/form-data">
    	<input type="file" name="file1"/>  
    	<input type="submit" value="上传"/>
    form>
  body>

4.只需指定上传路径及上传大小限制,若不要覆盖原文件,会为新文件重新命名,加序号1,2……

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        String saveDirectory ="d:/upload";  
        //创建目录 
        File savedir=new File(saveDirectory);
        if(!savedir.exists()){
            savedir.mkdirs();
        }
        //设置上传大小限制:5M
        int maxPostSize = 5 * 1024 * 1024 ;  
        //不覆盖源文件
        FileRenamePolicy policy =(FileRenamePolicy)new DefaultFileRenamePolicy(); 
        //创建新文件
        MultipartRequest multi = new MultipartRequest(request, saveDirectory, maxPostSize,"UTF-8",policy); 
        //设置编码
        response.setContentType("text/html;charset=UTF-8");
        //打印提示标签
        PrintWriter out=response.getWriter();
        out.print("上传成功!文件名为:"+multi.getFilesystemName("fil`在这里插入代码片`e1"));//file1为文件域的名字
    }

5.获取表单信息,需要接触MultipartRequest类型的对象multi,而不能再用原始的request对象。

		PrintWriter out=response.getWriter();
        out.print(multi.getParameter("t1"));

2.文件下载

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获得文件路径不带文件名
    	String filepath="d:/";
    	//获得单个文件名
        String filename="汉字.txt";
        String guessCharset="gbk";
 
        try {
	          //使用iso8559_1编码方式
	          String isofilename = new String(filename.getBytes(guessCharset),
	                                          "iso-8859-1");
	          //内容类型及编码
	          response.setContentType("application/octet-stream");
	          //设置请求头
	          response.setHeader("Content-Disposition",
	                             "attachment; filename=" + isofilename);
	                             
	          ServletOutputStream out = null;
	          out = response.getOutputStream();
	          
	          ServletUtils.returnFile(filepath+filename,out);//下载文件
        }
        catch (UnsupportedEncodingException ex) {//iso8559_1编码异常
         	  ex.printStackTrace();
        }catch(IOException e){//getOutputStream()异常。
              e.printStackTrace();
        }
    }

数据库的导入导出

操作Excel文档的Java组件主要有Jxl和POI等。Jxl的实现数据库的导入导出。
导入功能实现:用户选择本地Excel文件上传到服务器,然后从服务器导入;
导出功能实现:先将数据库数据导出到服务器,再下载到客户端。

利用Java Mail实现邮件的发送。Java Mail API是Sun公司发布的用来处理Email的API,它提供了一个平台独立和协议独立的框架,可以方便地执行一些常用的邮件传输,支持POP3,IMAP,SMTP,既可以作为Java SE平台的可选包,也可以在Java EE平台中使用。

简介:
1.直接使用Java Mail实现邮件发送比较复杂,这里我们采用Commons-Email实现。
2.Commons-Email是Apache提供的一个开源的API,是对Java Mail的封装
主要用到的类:
1.SimpleEmail:发送简单的Email,不能添加附件。
2.MultiPartEmail:发送文本邮件,可以添加多个附件。
3.HtmlEmail:发送HTML格式邮件,同时具有MultiPartEmail类的所有功能。
4.EmailAttchment:附件类,可以添加本地资源,也可以指定网络上资源,在发送时自动将网络上资源下载发送。

Echarts简介

1.ECharts是一款由百度前端技术部开发的,基于Javascript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。
2.现在是由 Apache 孵化器赞助的 Apache 开源基金会孵化的项目。

Dtree使用

Dtree 是一个由 JavaScript 编写成的免费开源的树形菜单组件,可以实现菜单项无限分级,支持动态从数据库引入数据,可用于框架或非框架页面。

•id : int每个节点都有唯一ID,增加节点时需要手工定义一个ID。
•pid : int父节点ID,根节点的父节点是-1。
•name : String节点名称(显示名字)
•url : String节点URL(鼠标点击跳转地址)
•title : String鼠标移动到节点上显示的文字
•target : String页面跳转所在的frame

你可能感兴趣的:(JavaWeb,servlet,前端,服务器)