Java Web实用开发技术
图形验证码
在Web登陆功能中,主要对用户密码进行验证来识别用户,但单一的验证可通过暴力破解,破解用户密码。增加了图形验证码后,除了输入密码外,还需要输入验证码,对于破解程序,识别这种验证码比较困难。在注册页面也可以有效防止注册大量用户。
图形验证码的实现
图形验证码的生成
图形验证码的实现用Java去画,具体怎么画呢,下面介绍怎么画。
- 首先,放置一个< img>标签,src是通过Servlet请求的来的。而验证码就是在Servlet里画出来,然后返回给< img>标签。
- 创建一个Servlet,web.xml访问路径配置为checkcode。接下来,验证码的实现。
案例——带图形验证码的登陆模块
实现一个带有图形验证码的登陆模块,并且添加换一张验证码的功能。
注意:当无法解析EL表达式时,添加如下语句
<% page isElIgnored="false" %>
登陆页面:Login.jsp
换一张验证码Servlet:ChangeCheckCode.java
只需重新转发。
验证用户名、密码及验证码:LoginCheck.java
MD5加密
在线编辑器
这里使用CKEditor 4.16.1。可以在线对文字进行一些编辑。
CKEditor下载及配置
- 访问CKEditor官网下载压缩包
http://www.ckeditor.com - 配置CKEditor
- 解压下载的文件
- 将解压的文件夹ckeditor复制到web项目的WebRoot路径下
CKEditor的使用
CKEditor就是更改< textArea>标签的class属性。
在表单中提交CKEditor的内容,用request获取< textArea>name属性。
使用CKEditor有如下两个步骤
- 导入ckeditor.js文件
- 更改< textArea>标签的class属性
文件的上传与下载
Java技术实现文件上传下载,需要借助输入输出流类,实现起来比较麻烦。
但使用一些上传下载组件实现则非常简单,而且效率比较高。常见的上传下载组件有,FileUpload、jspSmartUpload、Cos等。
下载Cos组件
http://www.servlets.com/cos/
文件上传的实现
文件上传的实现,需要借助Cos.jsr中的MultipartRequest类、和防止重命名的DefaultFileRenamePolicy类
- 设置表单method、enctype属性
- 设置上传路径
- 设置最大文件大小
- 创建MulitpartRequest对象
上传页面:upload.jsp
Servlet业务处理页面:UpLoad.java
上传文件的信息
借助MultipartRequest对象,可以获取文件的一些基本信息
Enumeration<String> files = multi.getFileNames();
while(files.hasMoreElements()){
String name = files.nextElement();
File f = multi.getFile(name);
if(f!=null){
String fileName = multi.getFilesystemName(name);
String lastFileName = saveDirectory+"\\"+fileName;
out.println("上传的文件:”+lastFileName);
out.println("<hr>");
}
}
文件下载的实现
文件下载的实现设置返回头类型,及iso编码、ServletOutputStream对象。只知道如何实现,具体什么原理不清楚。
- 设置下载路径
- 将文件名转为字节gbk
- 设置响应类型、响应头
- Get或Post方式均可
- 无法转发
下载页面upload.jsp:
Servlet业务处理:DownLoad.java
案例——使用Cos组件实现作业上传
文件重命名为:客户端IP地址+学号+题号
Java Mail
直接使用Java Mail实现邮件发送比较复杂。但采用Commons-Email实现则简单。Commons-Email是Apache提供的一个开源的API,是对Java Mail的封装。它有以下几个jar:
- mail.jar
SipmleEmail:发送简单邮件。
- activation.jar
MultiPartEmail:发送文本邮件,可添加多个附件。
- additionnal.jar
HtmlEmail:发送HTML格式邮件,同时也具有MultiPartEmail类的所有功能
- commons-email-1.2.jar
EmailAttchment:附件类,可以添加本地资源,也可指定网络上的资源,发送时自动将网络上的资源下载发送
案例——实现简单的邮件发送
设计一个简单的邮件发送网页,需要用到如下内容:
- 下载commons-email-x.x.jar和javax.mail.jar
- 获取网页上的内容
- SimpleEmail对象
- 设置邮箱服务器地址
- 设置邮箱端口
- 启用SSL验证
- 设置邮箱用户名和校验码
- 收件人地址
- 邮箱主题
- 邮箱内容
- 发件人
- send();
邮件发送页面:mail.jsp
Servlet处理请求:SendMail.java
页面分页技术
分页技术的实现需要依靠SQL语句:limit子句
- 创建UserDao用来计算总页数和查询指定页数据
//计算共有多少条记录
public int pageCount(){
************
************
String sql="select count(*) from stu_info;
************
************
}
//返回数据
public List<User> listUser(int pageNo)(){
**********
**********
String sql = "Select * from stu_info order by id limit ?,?";
//limit两个参数指定从第几条记录开始的几个记录。
}
//将获取的数据封装成User类,并添加至List数组
-
控制层调用Dao对象,指定页面数据。
-
输出页面
逻辑层:UserDao.java
控制层:ListUser.java
视图层:userList.jsp
@syl 2021/07/04 21:36 雨 24° 吃粽子
上述代码好多BUG,有能力了再优化以下