本文章复制自博客园大佬
https://www.cnblogs.com/chinaifae/articles/10153700.html
在一个web网站中,我们常常需要设置一个图片验证码,以防止有意之人而已攻击我们的服务器,消耗服务器资源,导致服务器崩溃。
以此通常加一些验证,以保护我们网站的安全,下面就是利用Javaweb抄的一个图片验证。
代码如下
package main.com.burrow_platform.servlet.tools;
import main.com.burrow_platform.tools.Constants;
import main.com.burrow_platform.tools.ImageVerificationCode;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.IOException;
public class getVerifiCode extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
/*
1.生成验证码
2.把验证码上的文本存在session中
3.把验证码图片发送给客户端
*/
ImageVerificationCode ivc = new ImageVerificationCode(); //用我们的验证码类,生成验证码类对象
BufferedImage image = ivc.getImage(); //获取验证码
req.getSession().setAttribute(Constants.IMAGECAPTCHA, ivc.getText()); //将验证码的文本存在session中
//存在session中,后面验证是读取session值即可
//Constants.IMAGECAPTCHA 这个是类静态常量,读者可根据自己喜好设置名称即可。
ivc.output(image, resp.getOutputStream());//将验证码图片响应给客户端
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
<div class="form-group">
<label for="inputPassword4" class="col-sm-3 control-label">
<span class="glyphicon glyphicon-asterisk"></span>
验证码
</label>
<div class="col-md-9">
<div class="col-md-7">
<input type="text" class="form-control" id="inputPassword4" />
</div>
<div class="col-md-2">
<%--下面这块是验证码的--%>
<a href="javascript:getVerifiCode()">
<img id="yzm_img" style="cursor:pointer;width: 100px;height: 36px;margin: 5px 0 0 5px;border-radius: 3px;" title="点击刷新验证码" src="Mcake/getVerifiCode"/>
</a>
<script>
function getVerifiCode() {
$("#yzm_img").prop('src','getVerifiCode?a='+new Date().getTime());
}
</script>
<%--上面这块是验证码的--%>
</div>
<%--<div class="col-md-9">--%>
<%--<input type="button" class="form-control" class="btn btn-block btn-default" value="看不清?刷新" />--%>
<%--</div>--%>
</div>
</div>
<!--这是图片验证码的servlet 头部-->
<servlet>
<servlet-name>getVerifiCode</servlet-name>
<servlet-class>main.com.burrow_platform.servlet.tools.getVerifiCode</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>getVerifiCode</servlet-name>
<url-pattern>/getVerifiCode</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>getVerifiCode</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--这里设置了多个mapping-->
<!--这是图片验证码的servlet 尾部-->