jsp登录验证代码

 
  1. image.jsp用于生成数字图片
  2.   <%@pagecontentType="image/jpeg;charset=gb2312"import="java.awt.*,
  3.   java.awt.image.*,java.util.*,javax.imageio.*"%>
  4.   <%!
  5.   ColorgetRandColor(intfc,intbc){//给定范围获得随机颜色
  6.   Randomrandom=newRandom();
  7.   if(fc>255)fc=255;
  8.   if(bc>255)bc=255;
  9.   intr=fc+random.nextInt(bc-fc);
  10.   intg=fc+random.nextInt(bc-fc);
  11.   intb=fc+random.nextInt(bc-fc);
  12.   returnnewColor(r,g,b);
  13.   }
  14.   %>
  15.   <%
  16.   //设置页面不缓存
  17.   response.setHeader("Pragma","No-cache");
  18.   response.setHeader("Cache-Control","no-cache");
  19.   response.setDateHeader("Expires",0);
  20.   //在内存中创建图象
  21.   intwidth=60,height=20;
  22.   BufferedImageimage=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
  23.   //获取图形上下文
  24.   Graphicsg=image.getGraphics();
  25.   //生成随机类
  26.   Randomrandom=newRandom();
  27.   //设定背景色
  28.   g.setColor(getRandColor(200,250));
  29.   g.fillRect(0,0,width,height);
  30.   //设定字体
  31.   g.setFont(newFont("TimesNewRoman",Font.PLAIN,18));
  32.   //画边框
  33.   //g.setColor(newColor());
  34.   //g.drawRect(0,0,width-1,height-1);
  35.   //随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
  36.   g.setColor(getRandColor(160,200));
  37.   for(inti=0;i<155;i++)
  38.   {
  39.   intx=random.nextInt(width);
  40.   inty=random.nextInt(height);
  41.   intxl=random.nextInt(12);
  42.   intyl=random.nextInt(12);
  43.   g.drawLine(x,y,x+xl,y+yl);
  44.   }
  45.   //取随机产生的认证码(4位数字)
  46.   StringsRand="";
  47.   Stringrand="";
  48.   for(inti=0;i<4;i++){
  49.   rand=String.valueOf(random.nextInt(10));
  50.   sRand+=rand;
  51.   //将认证码显示到图象中
  52.   g.setColor(newColor(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
  53.   //调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
  54.   g.drawString(rand,13*i+6,16);
  55.   }
  56.   //图象生效
  57.   g.dispose();
  58.   //将认证码存入SESSION
  59.   session.setAttribute("random",sRand);
  60.   //输出图象到页面
  61.   ImageIO.write(image,"JPEG",response.getOutputStream());
  62.   %>
  63.  login.jsp用于进入登陆界面:
  64.   <%@pagecontentType="text/html;charset=gb2312"language="java"errorPage=""%>
  65.   <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
  66.   <%
  67.   StringUsername=request.getParameter("Username");
  68.   StringPassword=request.getParameter("Password");
  69.   Stringinput=request.getParameter("rand");
  70.   if(Username!=null&&Password!=null)
  71.   {
  72.   //把用户名和密码保存在session中
  73.   session.setAttribute("user_name",Username);
  74.   session.setAttribute("pass_word",Password);
  75.   session.setAttribute("input",input);
  76.   //验证用户输入的验证码是否正确
  77.   if(input.equals(session.getAttribute("random")))
  78.   {
  79.   //如果正确就跳转到check.jsp验证用户名密码
  80.   response.sendRedirect("check.jsp");
  81.   }
  82.   else
  83.   {
  84.   //验证码不正确
  85.   out.print("错误");
  86.   //JOptionPane.showMessageDialog(null,"请选择文件!","提示",JOptionPane.ERROR_MESSAGE);
  87.   }
  88.   }
  89.   %>
  90.   <scripttype="text/javascript">
  91.   functioncheck()
  92.   {
  93.   if(form.Username.value=="")
  94.   {
  95.   alert("请输入用户名!!!");
  96.   form.Username.focus();
  97.   returnfalse;
  98.   }
  99.   if(form.Password.value=="")
  100.   {
  101.   alert("请输入密码!!!");
  102.   form.Username.focus();
  103.   returnfalse;
  104.   }
  105.   }
  106. </SCRIPT>
  107.   <html>
  108.   <HEAD>
  109.   <title>用户登陆</title>
  110.   </HEAD>
  111.   <BODY>
  112.   <formname="form"onsubmit="returncheck()"action="login.jsp"method="post">
  113.   <TABLEwidth=265align=centerborder=0>
  114.   <TBODY>
  115.   <TRalign=centervalign="middle">
  116.   <TDcolspan="2">
  117.   <STRONG>登录</STRONG>
  118.   </TD>
  119.   </TR>
  120.   <tr>
  121.   <tdheight="54"align="center">用户名:</td>
  122.   <tdwidth="181"height=54>
  123.   <inputid=Usernamename=Username>
  124.   </TD>
  125.   </TR>
  126.   <tr>
  127.   <tdheight="54"align="center">密码:</td>
  128.   <tdwidth="181"height=54>
  129.   <inputid=Passwordtype=Passwordname=Password>
  130.   </TD>
  131.   </TR>
  132.   <tr>
  133.   <tdheight="54"align="center">认证码:</td>
  134.   <tdwidth="181"height=54>
  135.   <inputtype=textname=randmaxlength=4value=""size=6>
  136.   &nbsp;&nbsp;
  137.   <imgborder=1src="image.jsp">
  138.   </td>
  139.   </tr>
  140.   <TR>
  141.   <TDcolspan="2"align=center>
  142.   <INPUTtype=submitvalue=登陆>
  143.   <INPUTtype=resetvalue=重置>
  144.   </TD>
  145.   </TR>
  146.   </TBODY>
  147.   </TABLE>
  148.   </FORM>
  149.   </BODY>
  150.   </HTML>
  151.   check.jsp用于测试是否成功:
  152.   <%@pagecontentType="text/html;charset=gb2312"language="java"errorPage=""%>
  153.   <%@pageimport="java.sql.*"%>
  154.   <jsp:useBeanid="sqltest"class="database.sqlbean"scope="page">
  155.   </jsp:useBean>
  156.   <html>
  157.   <head>
  158.   <title>认证码验证页面</title>
  159.   <metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
  160.   <METAHTTP-EQUIV="Pragma"CONTENT="no-cache">
  161.   <METAHTTP-EQUIV="Cache-Control"CONTENT="no-cache">
  162.   <METAHTTP-EQUIV="Expires"CONTENT="0">
  163.   </head>
  164.   <body>
  165.   <%
  166.   Stringrand=(String)session.getAttribute("random");
  167.   Stringinput=(String)session.getAttribute("input");
  168.   Stringuser_name=(String)session.getAttribute("user_name");
  169.   Stringpass_word=(String)session.getAttribute("pass_word");
  170.   %>
  171.   系统产生的认证码为:
  172.   <%=rand%><br>
  173.   您输入的认证码为:
  174.   <%=input%><br>
  175.   <fontcolor=green>验证码输入相同,认证成功!</font><br>
  176.   <br>
  177.   您输入的用户名为:
  178.   <%=session.getAttribute("user_name")%><br>
  179.   密码为:
  180.   <%=session.getAttribute("pass_word")%><br>
  181. <%
  182.   Stringpermit;
  183.   ResultSetrs=null;
  184.   StringSqlString="select*fromUserInfowhereusername='"+user_name+"'andpassword='"+pass_word+"'";
  185.   try
  186.   {
  187.   //设置连接
  188.   sqltest.setConnection("com.microsoft.jdbc.sqlserver.SQLServerDriver",
  189.   "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=university",
  190.   "admin","123456");
  191.   //设置SQL语句
  192.   sqltest.setQuerystatement(SqlString);
  193.   //得到查询结果
  194.   rs=sqltest.getResult();
  195.   if(rs.next())
  196.   {
  197.   out.print("登陆成功");
  198.   //获得用户的权限
  199.   permit=rs.getString("permit");
  200.   if(permit.equals("1"))
  201.   {
  202.   out.println(":你的权限是管理员组");
  203.   }
  204.   else
  205.   {
  206.   out.println(":你的权限是用户组");
  207.   }
  208.   }
  209.   else
  210.   {
  211.   out.print("登陆失败,用户名或密码错");
  212.   }
  213.   }
  214.   catch(SQLExceptione1)
  215.   {
  216.   out.print("SQL异常!");
  217.   }
  218.   %>
  219.   </body>
  220.   </html>
  221.   连接数据库的Javabean:sqlbean.java
  222.   packagedatabase;
  223.   importjava.sql.*;
  224.   publicclasssqlbean{
  225.   publicStringquery_statement;
  226.   publicResultSetresult=null;
  227.   publicConnectionconn;
  228.   publicvoidsetQuerystatement(Stringquery_statement)
  229.   {
  230.   this.query_statement=query_statement;
  231.   }
  232.   publicvoidsetConnection(StringdriverName,StringjdbcURL,
  233.   Stringusername,Stringpasswd)throwsException
  234.   {
  235.   Connectionconn1;
  236.   Class.forName(driverName);
  237.   conn1=DriverManager.getConnection(jdbcURL,username,passwd);
  238.   conn1.setAutoCommit(false);
  239.   this.conn=conn1;
  240.   }
  241.   publicResultSetgetResult()
  242.   {
  243.   try
  244.   {
  245.   PreparedStatementselect_stm=conn.prepareStatement(query_statement,
  246.   java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
  247.   result=select_stm.executeQuery();
  248.   }
  249.   catch(Exceptione)
  250.   {
  251.   System.out.println(e);
  252.   }
  253.   returnresult;
  254.   }
  255.   }

本文出自 “阿凡达” 博客,请务必保留此出处http://shamrock.blog.51cto.com/2079212/702554

你可能感兴趣的:(jsp)