问题描述
一共有3个程序1.登陆页面:packagecn.edu.zzu.authorcodes;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletContext;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;publicclassloginextendsHttpServlet{publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{ServletContextcontext=getServletContext();Stringname=request.getParameter("username");Stringpwd=request.getParameter("password");Stringauth=request.getParameter("authcodes");response.setContentType("text/html;charset=gb2312");PrintWriterout=response.getWriter();if("liying".equals(name)&&"1234".equals(pwd)&&context.getAttribute("getImg").equals(auth)){out.println("登录成功<br>");out.println("<ahref=login>点此返回登陆界面</a>");}else{if((request.getMethod()!="GET")&&(!("".equals(name))||!("".equals(pwd))||!("".equals(auth)))){out.println("所输入的内容不对!<br>");}out.println("<formmethod=postaction=login>");out.println("<table>");out.println("<tr>");out.println("<td>请输入用户名</td>");out.println("<td><inputtype=textname=username></td>");out.println("</tr>");out.println("<tr>");out.println("<td>请输入密码</td>");out.println("<td><inputtype=passwordname=password></td>");out.println("</tr>");out.println("<tr>");out.println("<td>请输入右图的验证码</td>");out.println("<td><inputtype=textname=authcodes><imgsrc=authservlet/></td>");out.println("</tr>");out.println("<tr>");out.println("<td></td>");out.println("<td><inputtype=resetvalue=重填><inputtype=submitvalue=登录></td>");out.println("</tr>");out.println("</table>");out.println("</form>");}}publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doGet(request,response);}}2.验证码程序importjava.io.*;importjava.util.*;importcom.sun.image.codec.jpeg.*;importjavax.servlet.*;importjavax.servlet.http.*;importjava.awt.*;importjava.awt.image.*;publicclassAuthServletextendsHttpServlet{privateFontmFont=newFont("TimesNewRoman",Font.PLAIN,18);//设置字体//staticStringAuthCode="";//处理postpublicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doGet(request,response);}publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{//取得一个1000-9999的随机数response.setContentType("image/gif");response.setHeader("Pragma","No-cache");response.setHeader("Cache-Control","no-cache");response.setDateHeader("Expires",0);intwidth=60;intheight=20;if(request.getParameter("width")!=null&&!request.getParameter("width").equals(""))width=Integer.parseInt(request.getParameter("width"));if(request.getParameter("height")!=null&&!request.getParameter("height").equals(""))height=Integer.parseInt(request.getParameter("height"));ServletOutputStreamout=response.getOutputStream();BufferedImageimage=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);//设置图片大小的Graphicsgra=image.getGraphics();Randomrandom=newRandom();gra.setColor(getRandColor(200,250));//设置背景色gra.fillRect(0,0,width,height);gra.setColor(Color.black);//设置字体色gra.setFont(mFont);//随机产生155条干扰线,使图象中的认证码不易被其它程序探测到gra.setColor(getRandColor(160,200));for(inti=0;i<155;i++){intx=random.nextInt(width);inty=random.nextInt(height);intxl=random.nextInt(12);intyl=random.nextInt(12);gra.drawLine(x,y,x+xl,y+yl);}//取随机产生的认证码(4位数字)StringsRand="";for(inti=0;i<4;i++){Stringrand=String.valueOf(random.nextInt(10));sRand+=rand;PrintWriterout=resp.getWriter();//将认证码显示到图象中gra.setColor(newColor(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成gra.drawString(rand,13*i+6,16);}ServletContextcontext=getServletContext();context.setAttribute("getImg",newString(sRand));BufferedImagem=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(out);encoder.encode(image);}staticColorgetRandColor(intfc,intbc){//给定范围获得随机颜色Randomrandom=newRandom();if(fc>255)fc=255;if(bc>255)bc=255;intr=fc+random.nextInt(bc-fc);intg=fc+random.nextInt(bc-fc);intb=fc+random.nextInt(bc-fc);returnnewColor(r,g,b);}}3.连接数据库程序(最无奈的错误程序)packagecn.edu.zzu.authorcodes;importjavax.servlet.ServletContext;importjavax.servlet.ServletException;importjava.io.*;importjava.sql.*;importjavax.servlet.*;importjavax.servlet.http.*;publicclassliextendsHttpServlet{ServletContextcontext=getServletContext();Connectionconn=null;Statementstmt=null;ResultSetrs;privateStringurl;privateStringuser;privateStringpassword;publicvoidinit()throwsServletException{StringdriverClass=getInitParameter("driverClass");url=getInitParameter("url");user=getInitParameter("user");password=getInitParameter("password");try{Class.forName(driverClass);}catch(ClassNotFoundExceptionce){thrownewServletException("加载数据库驱动失败!");}}publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doGet(request,response);}publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{try{Graphicsgra=image.getGraphics();Randomrandom=newRandom();StringsRand="";for(inti=0;i<4;i++){Stringrand=String.valueOf(random.nextInt(10));sRand+=rand;//将认证码显示到图象中gra.setColor(newColor(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成gra.drawString(rand,13*i+6,16);}ServletContextcontext=getServletContext();context.setAttribute("getImg",newString(sRand));conn=DriverManager.getConnection(url,user,password);stmt=conn.createStatement();stmt.executeUpdate("dropdatabaseifexistsRANDOM");stmt.executeUpdate("createdatabaseRANDOM");stmt.executeUpdate("useRANDOM");stmt.executeUpdate("createtablerand(numbervarchar(4)notnullprimarykey)");stmt.executeUpdate("insertintorandvalues('"+sRand+"')");stmt.executeBatch();}catch(SQLExceptionse){thrownewServletException(se);}finally{if(stmt!=null){try{stmt.close();}catch(SQLExceptionse){se.printStackTrace();}stmt=null;}if(conn!=null){try{conn.close();}catch(SQLExceptionse){se.printStackTrace();}conn=null;}}}}第3个程序,老是不让插入sRrand的值,有哪位懂得大虾赐教啊