【JavaWeb】Servlet登录验证小结
程序员文章站
2022-05-08 16:03:40
...
流程:
在html 的from表单中 使用get方法,并在img的src属性设为自动生成图片servlet的映射,从而访问到自动生成图片的控制器GenerateServlet,在GenerateServlet的doGet方法中,引用封装好的工具类(GenerateIamge)用来随机生成验证码图片,将生成的随机数存放在会话session中,给多个程序共享,通过ImageIO和ServletOutputStream将随机数图片返回给前端页面。
简述:
1.在form表单中设置get方法
2.设置img属性src为GenerateServlet(这里一定要是servlet的注意路径映射,不需要/)
3.把自动生成随机数图片的一些方法封装成一个java工具类,以便在servlet中调用
4.在GenerateServlet的doget方法调用该工具类,并通过ImageIO返回给前端页面。
注意!!!!!!超链接只能使用doGet()方法
敲了三小时问了老师才知道是这个问题!!!印象深刻!!
以下贴几张关键地方的代码
1.html 的form中
<p>
<input type="text" id="checkCode" placeholder="验证码">
<img src="servlet/GenerateServlet" onclick="changeCode()" id="verifyCode"
TITLE="看不清,换一张" />
</p>
2.html 的表头js
<script>
function changeCode() {
var codeImg =document.getElementById("verifyCode");//得到img图片标签
codeImg.src="servlet/GenerateServlet?t="+Math.random();//给该标签下的src属性赋值,这里URL追加随机数,使程序每次
//每次访问的都是不同的资源路径,防止浏览器缓存导致的验证码数字不变,即产生不同的验证码。
}
</script>
3.GenerateServlet的doGet方法
//将生成验证码图片的过程封装在了GenerateImage类中,然后在servlet中进行调用
GenerateImage generateImage = new GenerateImage();
//得到vCode随机数
String vCode = generateImage.createCode();
//通过request请求得到啊Httpsession对象,
HttpSession session=request.getSession();
//将产生的四位随机数字符串存入到session会话中,存放在session中的数据在一个会话范围内,可以给多个程序共享访问
session.setAttribute("verifyCode",vCode);
//设置返回的内容种类
response.setContentType("img/jpeg");
//浏览器不缓存内容,点击验证码图片一次就要刷新一次,这里其实可以不再设置,因为在js操作中追加了随机数访问
// response.setHeader("Pragma","No-cache");
// response.setHeader("Cache-Control","no-cache");
//设置验证码失效时间 那么(Expires,0)是多少时间???
response.setDateHeader("Expires",0);
BufferedImage image = generateImage.createImg(vCode);
ServletOutputStream out = response.getOutputStream();
ImageIO.write(image,"JPEG",out);
out.flush();
out.close();
推荐阅读
-
java中servlet实现登录验证的方法
-
javaweb登录验证码的实现方法
-
java中servlet实现登录验证的方法
-
JSP + Servlet实现生成登录验证码示例
-
JSP + Servlet实现生成登录验证码示例
-
JavaWeb商城项目(Day05)Web层(登录页面的html+Servlet程序)
-
JavaWeb--Servlet过滤器Filter和SpringMVC的HandlerInterceptor(Session和Cookie登录认证)
-
一个java Servlet小程序,实现网页的登录验证
-
jsp+java servlet实现简单用户登录和注册页面(连接数据库,登录页面包含验证码,两周内免登陆等功能)
-
JavaWeb Servlet实现网页登录功能