现在的位置: 首页 > 综合 > 正文

jsp登录验证代码

2018年04月09日 ⁄ 综合 ⁄ 共 8313字 ⁄ 字号 评论关闭

 

  1. image.jsp用于生成数字图片  
  2.  
  3.   <%@ page contentType="image/jpeg;charset=gb2312" import="java.awt.*,  
  4.  
  5.   java.awt.image.*,java.util.*,javax.imageio.*" %> 
  6.  
  7.   <%!  
  8.  
  9.   Color getRandColor(int fc,int bc){//给定范围获得随机颜色  
  10.       
  11.       Random random = new Random();  
  12.       
  13.       if(fc>255) fc=255;  
  14.       
  15.       if(bc>255) bc=255;  
  16.       
  17.       int r=fc+random.nextInt(bc-fc);  
  18.       
  19.       int g=fc+random.nextInt(bc-fc);  
  20.       
  21.       int b=fc+random.nextInt(bc-fc);  
  22.       
  23.       return new Color(r,g,b);  
  24.       
  25.       }  
  26.  
  27.   %> 
  28.  
  29.   <%  
  30.  
  31.   //设置页面不缓存  
  32.  
  33.   response.setHeader("Pragma","No-cache");  
  34.  
  35.   response.setHeader("Cache-Control","no-cache");  
  36.  
  37.   response.setDateHeader("Expires", 0);  
  38.  
  39.   // 在内存中创建图象  
  40.  
  41.   int width=60height=20;  
  42.  
  43.   BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);  
  44.  
  45.   // 获取图形上下文  
  46.  
  47.   Graphics g = image.getGraphics();  
  48.  
  49.   //生成随机类  
  50.  
  51.   Random random = new Random();  
  52.  
  53.   // 设定背景色  
  54.  
  55.   g.setColor(getRandColor(200,250));  
  56.  
  57.   g.fillRect(0, 0, width, height);  
  58.  
  59.   //设定字体  
  60.  
  61.   g.setFont(new Font("Times New Roman",Font.PLAIN,18));  
  62.  
  63.   //画边框  
  64.  
  65.   //g.setColor(new Color());  
  66.  
  67.   //g.drawRect(0,0,width-1,height-1);  
  68.  
  69.   // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到  
  70.  
  71.   g.setColor(getRandColor(160,200));  
  72.  
  73.   for (int i=0;i<155;i++)  
  74.  
  75.   {  
  76.       
  77.       int x = random.nextInt(width);  
  78.       
  79.       int y = random.nextInt(height);  
  80.       
  81.       int xl = random.nextInt(12);  
  82.       
  83.       int yl = random.nextInt(12);  
  84.       
  85.       g.drawLine(x,y,x+xl,y+yl);  
  86.       
  87.       }  
  88.  
  89.   // 取随机产生的认证码(4位数字)  
  90.  
  91.   String sRand="";  
  92.  
  93.   String rand="";  
  94.  
  95.   for (int i=0;i<4;i++){  
  96.       
  97.       rand=String.valueOf(random.nextInt(10));  
  98.       
  99.       sRand+=rand;  
  100.       
  101.       // 将认证码显示到图象中  
  102.           
  103.           g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));  
  104.       
  105.       //调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成  
  106.           
  107.           g.drawString(rand,13*i+6,16);  
  108.       
  109.       }  
  110.  
  111.   // 图象生效  
  112.  
  113.   g.dispose();  
  114.  
  115.   // 将认证码存入SESSION  
  116.  
  117.   session.setAttribute("random",sRand);  
  118.  
  119.   // 输出图象到页面  
  120.  
  121.   ImageIO.write(image, "JPEG", response.getOutputStream());  
  122.  
  123.   %> 
  124.  
  125.  
  126.  
  127.  login.jsp用于进入登陆界面:  
  128.  
  129.   <%@ page contentType="text/html; charset=gb2312" language="java" errorPage="" %> 
  130.  
  131.   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
  132.  
  133.   <%  
  134.  
  135.   String Username=request.getParameter("Username");  
  136.  
  137.   String Password=request.getParameter("Password");  
  138.  
  139.   String inputrequest.getParameter("rand");  
  140.  
  141.   if (Username!=null && Password!=null)  
  142.  
  143.   {  
  144.       
  145.       //把用户名和密码保存在session中  
  146.           
  147.           session.setAttribute("user_name",Username);  
  148.       
  149.       session.setAttribute("pass_word",Password);  
  150.       
  151.       session.setAttribute("input",input);  
  152.       
  153.       //验证用户输入的验证码是否正确  
  154.           
  155.           if(input.equals(session.getAttribute("random")))  
  156.           
  157.           {  
  158.           
  159.           //如果正确就跳转到check.jsp验证用户名密码  
  160.               
  161.               response.sendRedirect("check.jsp");  
  162.           
  163.           }  
  164.       
  165.       else  
  166.           
  167.           {  
  168.           
  169.           //验证码不正确  
  170.               
  171.               out.print("错误");  
  172.           
  173.           // JOptionPane.showMessageDialog(null,"请选择文件!","提示",JOptionPane.ERROR_MESSAGE);  
  174.               
  175.               }  
  176.       
  177.       }  
  178.  
  179.   %> 
  180.  
  181.   <script type="text/javascript"> 
  182.  
  183.   function check()  
  184.  
  185.   {  
  186.       
  187.       if (form.Username.value=="")  
  188.           
  189.           {  
  190.           
  191.           alert("请输入用户名!!!");  
  192.           
  193.           form.Username.focus();  
  194.           
  195.           return false;  
  196.           
  197.           }  
  198.       
  199.       if (form.Password.value=="")  
  200.           
  201.           {  
  202.           
  203.           alert("请输入密码!!!");  
  204.           
  205.           form.Username.focus();  
  206.           
  207.           return false;  
  208.           
  209.           }  
  210.       
  211.       }  
  212.  
  213. </SCRIPT> 
  214.  
  215.   <html> 
  216.  
  217.   <HEAD> 
  218.  
  219.   <title>用户登陆</title> 
  220.  
  221.   </HEAD> 
  222.  
  223.   <BODY> 
  224.  
  225.   <form name="form" onsubmit="return check()" action="login.jsp" method="post"> 
  226.  
  227.   <TABLE width=265 align=center border=0> 
  228.  
  229.   <TBODY> 
  230.  
  231.   <TR align=center valign="middle"> 
  232.  
  233.   <TD colspan="2"> 
  234.  
  235.   <STRONG>登录</STRONG> 
  236.  
  237.   </TD> 
  238.  
  239.   </TR> 
  240.  
  241.   <tr> 
  242.  
  243.   <td height="54" align="center">用户名:</td> 
  244.  
  245.   <td width="181" height=54> 
  246.  
  247.   <input id=Username name=Username> 
  248.  
  249.   </TD> 
  250.  
  251.   </TR> 
  252.  
  253.   <tr> 
  254.  
  255.   <td height="54" align="center">密码:</td> 
  256.  
  257.   <td width="181" height=54> 
  258.  
  259.   <input id=Password type=Password name=Password> 
  260.  
  261.   </TD> 
  262.  
  263.   </TR> 
  264.  
  265.   <tr> 
  266.  
  267.   <td height="54" align="center">认证码:</td> 
  268.  
  269.   <td width="181" height=54> 
  270.  
  271.   <input type=text name=rand maxlength=4 value="" size=6> 
  272.  
  273.   &nbsp;&nbsp;  
  274.  
  275.   <img border=1 src="image.jsp"> 
  276.  
  277.   </td> 
  278.  
  279.   </tr> 
  280.  
  281.   <TR> 
  282.  
  283.   <TD colspan="2" align=center> 
  284.  
  285.   <INPUT type=submit value=登陆> 
  286.  
  287.   <INPUT type=reset value=重置> 
  288.  
  289.   </TD> 
  290.  
  291.   </TR> 
  292.  
  293.   </TBODY> 
  294.  
  295.   </TABLE> 
  296.  
  297.   </FORM> 
  298.  
  299.   </BODY> 
  300.  
  301.   </HTML> 
  302.  
  303.   check.jsp用于测试是否成功:  
  304.  
  305.   <%@ page contentType="text/html; charset=gb2312" language="java" errorPage=""%> 
  306.  
  307.   <%@ page import="java.sql.*" %> 
  308.  
  309.   <jsp:useBean id="sqltest" class="database.sqlbean" scope="page"> 
  310.  
  311.   </jsp:useBean> 
  312.  
  313.   <html> 
  314.  
  315.   <head> 
  316.  
  317.   <title>认证码验证页面</title> 
  318.  
  319.   <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
  320.  
  321.   <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
  322.  
  323.   <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache"> 
  324.  
  325.   <META HTTP-EQUIV="Expires" CONTENT="0"> 
  326.  
  327.   </head> 
  328.  
  329.   <body> 
  330.  
  331.   <%  
  332.  
  333.   String rand =(String)session.getAttribute("random");  
  334.  
  335.   String input =(String)session.getAttribute("input");  
  336.  
  337.   String user_name= (String)session.getAttribute("user_name");  
  338.  
  339.   String pass_word= (String)session.getAttribute("pass_word");  
  340.  
  341.   %> 
  342.  
  343.   系统产生的认证码为:  
  344.  
  345.   <%= rand %><br> 
  346.  
  347.   您输入的认证码为:  
  348.  
  349.   <%= input %><br> 
  350.  
  351.   <font color=green>验证码输入相同,认证成功!</font><br> 
  352.  
  353.   <br> 
  354.  
  355.   您输入的用户名为:  
  356.  
  357.   <%= session.getAttribute("user_name") %><br> 
  358.  
  359.   密码为:  
  360.  
  361.   <%= session.getAttribute("pass_word") %><br> 
  362.  
  363. <%  
  364.  
  365.   String permit;  
  366.  
  367.   ResultSet rs=null;  
  368.  
  369.   String SqlString="select * from UserInfo where username='"+user_name+"'and password='"+pass_word+"'";  
  370.  
  371.   try  
  372.  
  373.   {  
  374.       
  375.       //设置连接  
  376.           
  377.           sqltest.setConnection("com.microsoft.jdbc.sqlserver.SQLServerDriver",  
  378.           
  379.           "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=university",  
  380.           
  381.           "admin","123456");  
  382.       
  383.       //设置SQL语句  
  384.           
  385.           sqltest.setQuerystatement(SqlString);  
  386.       
  387.       //得到查询结果  
  388.           
  389.           rs=sqltest.getResult();  
  390.       
  391.       if (rs.next())  
  392.           
  393.           {  
  394.           
  395.           out.print("登陆成功");  
  396.           
  397.           //获得用户的权限  
  398.               
  399.               permit=rs.getString("permit");  
  400.           
  401.           if (permit.equals("1"))  
  402.               
  403.               {  
  404.               
  405.               out.println(":你的权限是管理员组");  
  406.               
  407.               }  
  408.           
  409.           else  
  410.               
  411.               {  
  412.               
  413.               out.println(":你的权限是用户组");  
  414.               
  415.               }  
  416.           
  417.           }  
  418.       
  419.       else  
  420.           
  421.           {  
  422.           
  423.           out.print("登陆失败,用户名或密码错");  
  424.           
  425.           }  
  426.       
  427.       }  
  428.  
  429.   catch(SQLException e1)  
  430.  
  431.   {  
  432.       
  433.       out.print("SQL异常!");  
  434.       
  435.       }  
  436.  
  437.   %> 
  438.  
  439.   </body> 
  440.  
  441.   </html> 
  442.  
  443.   连接数据库的Javabean: sqlbean.java  
  444.  
  445.   package database;  
  446.  
  447.   import java.sql.*;  
  448.  
  449.   public class sqlbean {  
  450.       
  451.       public String query_statement;  
  452.       
  453.       public ResultSet result=null;  
  454.       
  455.       public Connection conn;  
  456.       
  457.       public void setQuerystatement(String query_statement)  
  458.           
  459.           {  
  460.           
  461.           this.query_statement=query_statement;  
  462.           
  463.           }  
  464.       
  465.       public void setConnection(String driverName ,String jdbcURL,  
  466.           
  467.           String username,String passwd) throws Exception  
  468.           
  469.           {  
  470.           
  471.           Connection conn1;  
  472.           
  473.           Class.forName(driverName);  
  474.           
  475.           conn1=DriverManager.getConnection(jdbcURL, username, passwd);  
  476.           
  477.           conn1.setAutoCommit(false);  
  478.           
  479.           this.conn = conn1;  
  480.           
  481.           }  
  482.       
  483.       public ResultSet getResult()  
  484.           
  485.           {  
  486.           
  487.           try  
  488.               
  489.               {  
  490.               
  491.               PreparedStatement select_stm=conn.prepareStatement(query_statement,  
  492.                   
  493.                   java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);  
  494.               
  495.               result=select_stm.executeQuery();  
  496.               
  497.               }  
  498.           
  499.           catch(Exception e)  
  500.               
  501.               {  
  502.               
  503.               System.out.println(e);  
  504.               
  505.               }  
  506.           
  507.           return result;  
  508.           
  509.           }  
  510.       
  511.       }  
  512.  
  513.  
  514.  
  515.  

 

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

抱歉!评论已关闭.