公司网站开发人员的的工资多少钱,美工培训班费用一般多少,耐看舒适的网页设计欣赏,国外教做蛋糕的网站今天在调试项目的时候发现#xff0c;在提交表单的时候的验证码有问题#xff0c;问题是这样的#xff1a;就是通过debug模式查看得知#xff1a;jsp页面生成的验证码和表单输入的页面输入的一样#xff0c;但是到后台执行的时候#xff0c;你会发现他们是不一样的#…今天在调试项目的时候发现在提交表单的时候的验证码有问题问题是这样的就是通过debug模式查看得知jsp页面生成的验证码和表单输入的页面输入的一样但是到后台执行的时候你会发现他们是不一样的现在上图看看
1.这是表单提交的时候: 2.这是后台得到的生成的验证码 3.这是后台得到输入的验证码 这样的问题还是头一次出现以前没遇到过经过googlebaidu最后得知是这样的因为加载jsp页面比加载session快一些 那怎么办才能解决这个办法呢 又经过多次搜索思考实践终于想出了个好办法 1.在jsp页面用js生成验证码并保存在变量中验证码作为参数传到java(继承了HttpServlet)类 2.根据jsp页面中传过来的验证码画出一个有干扰线或干扰点的图片 3.在WEB-INF/web.xml中配置 servlet 4.在jsp页面调用配置好的servlet一般是通过img srcservlet名 idcode/调用 5.提交数据之前验证 form οnsubmitreturn validate();……/ 局部刷新验证码a href# οnclickjavascript:show();return false;看不清,换一张/a-----return false;很重要啊
下面直接附上我的例子
截图如下 代码如下
1.JAVA类CodeServlet.java: package cn.gov.csrc.servlet;import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;public class CodeServlet extends HttpServlet {/*** 产生验证码图片*/public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType(image/jpeg);response.setHeader(Cache-Control, no-cache);response.setHeader(Pragma, No-cache);response.setDateHeader(Expires, 0L);int width 80;int height 30;BufferedImage image new BufferedImage(width, height, 1);Graphics g image.getGraphics();Random random new Random();g.setColor(getRandColor(200, 250));g.fillRect(0, 0, width, height);g.setFont(new Font(Arial, 0, 25));g.setColor(getRandColor(160, 200));for (int i 0; i 155; i) {int x random.nextInt(width 100);int y random.nextInt(height 100);int xl random.nextInt(10);int yl random.nextInt(12);g.drawOval(x, y, x xl, y yl);}String code request.getParameter(code);String sRand code;for (int i 0; i sRand.length(); i) {String rand sRand.substring(i, i 1);g.setColor(new Color(20 random.nextInt(110), 20 random.nextInt(110), 20 random.nextInt(110)));g.drawString(rand, 14 * i 5, 25);}g.dispose();javax.servlet.ServletOutputStream imageOut response.getOutputStream();JPEGImageEncoder encoder JPEGCodec.createJPEGEncoder(imageOut);encoder.encode(image);}private Color getRandColor(int fc, int bc) {Random random new Random();if (fc 255)fc 255;if (bc 255)bc 255;int r fc random.nextInt(bc - fc);int g fc random.nextInt(bc - fc);int b fc random.nextInt(bc - fc);return new Color(r, g, b);}}2.Web.xml文件 ?xml version1.0 encodingUTF-8?
web-app version2.5 xmlnshttp://java.sun.com/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsddisplay-name/display-namewelcome-file-listwelcome-fileindex.jsp/welcome-file/welcome-file-listservletservlet-nameCodeServlet/servlet-nameservlet-classcn.gov.csrc.servlet.CodeServlet/servlet-class/servletservlet-mappingservlet-nameCodeServlet/servlet-nameurl-pattern/CodeServlet/url-pattern/servlet-mapping
/web-app3.index.jsp % page languagejava importjava.util.* pageEncodingUTF-8%
%String path request.getContextPath();String basePath request.getScheme() :// request.getServerName() : request.getServerPort() path /;
%
!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN
html
head
base href%basePath%
title验证码测试/title
meta http-equivpragma contentno-cache
meta http-equivcache-control contentno-cache
meta http-equivexpires content0
meta http-equivkeywords contentkeyword1,keyword2,keyword3
meta http-equivdescription contentThis is my page
script languagejavascript typetext/javascript
var code ; //在全局 定义验证码
function createCode(){ code ; var codeLength 5;//验证码的长度 //所有候选组成验证码的字符可以用中文 var selectChar new Array(0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z); for(var i0;icodeLength;i){ var charIndex Math.floor(Math.random()*60); code selectChar[charIndex]; } return code;
}
function validate (){ var inputCode document.getElementById(vcode).value.toLowerCase(); if(inputCode.length 0){ alert(请输入验证码); return false; } else if(inputCode ! code.toLowerCase()){ alert(验证码输入错误); show();//刷新验证码 return false; }else{ alert(^-^ OK); return true; }
}
function show(){ //显示验证码 document.getElementById(code).srcCodeServlet?codecreateCode();
}
window.onload function() {//document.οnlοadshow(); show();//页面加载时加载验证码 //这时无论在ie还是在firefox中js没有加载完页面的东西是不会被执行的 }
/script
/headbodyform οnsubmitreturn validate(); action methodposth3jspjsservlet实现验证码/h3br / 用户名input typetext name /br / 请输入验证码 inputtypetext idvcode stylewidth: 60; maxLength5 / imgsrc idcode / a href# mce_href#οnclickjavascript:show();return false;看不清,换一张!/abr / inputtypesubmit //form
/body
/html下载代码请访问http://www.zuidaima.com/share/1720368578202624.htm