|
image.jsp用于天生数字图片
<%@ page contentType="image/jpeg;charset=gb2312" import="java.awt.*,
java.awt.image.*,java.util.*,javax.imageio.*" %>
<%!
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);
}
%>
<%
//设置页面不缓存
response.setHeader("ragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
// 在内存中创建图象
int width=60, height=20;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// 获取图形上下文
Graphics g = image.getGraphics();
//天生随机类
Random random = new Random();
// 设定背景色
g.setColor(getRandColor(200,250));
g.fillRect(0, 0, width, height);
//设定字体
g.setFont(new Font("Times New Roman",Font.PLAIN,18));
//画边框
//g.setColor(new Color());
//g.drawRect(0,0,width-1,height-1);
// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
g.setColor(getRandColor(160,200));
for (int i=0;i<155;i++)
{
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
g.drawLine(x,y,x+xl,y+yl);
}
// 取随机产生的认证码(4位数字)
String sRand="";
String rand="";
for (int i=0;i<4;i++){
rand=String.valueOf(random.nextInt(10));
sRand+=rand;
// 将认证码显示到图象中
g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
//调用函数出来的颜色相同,可能是由于种子太接近,所以只能直接天生
g.drawString(rand,13*i+6,16);
}
// 图象生效
g.dispose();
// 将认证码存入SESSION
session.setAttribute("random",sRand);
// 输出图象到页面
ImageIO.write(image, "JPEG", response.getOutputStream());
%>
login.jsp用于进入登陆界面:
<%@ page contentType="text/HTML; charset=gb2312" language="java" errorPage="" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
String Username=request.getParameter("Username");
String Password=request.getParameter("Password");
String input= request.getParameter("rand");
if (Username!=null && Password!=null)
{
//把用户名和密码保留在session中
session.setAttribute("user_name",Username);
session.setAttribute("pass_word",Password);
session.setAttribute("input",input);
//验证用户输入的验证码是否准确
if(input.equals(session.getAttribute("random")))
{
//假如准确就跳转到check.jsp验证用户名密码
response.sendRedirect("check.jsp");
}
else
{
//验证码不准确
out.print("错误");
// JOptionPane.showMessageDialog(null,"请选择文件!","提示",JOptionPane.ERROR_MESSAGE);
}
}
%>
<script type="text/javascript">
function check()
{
if (form.Username.value=="")
{
alert("请输入用户名!!!");
form.Username.focus();
return false;
}
if (form.Password.value=="")
{
alert("请输入密码!!!");
form.Username.focus();
return false;
}
}
</SCRIPT>
<html>
<HEAD>
<title>用户登陆</title>
</HEAD>
<BODY>
<form name="form" action="login.jsp" method="post">
<TABLE width=265 align=center border=0>
<TBODY>
<TR align=center valign="middle">
<TD colspan="2">
<STRONG>登录</STRONG>
</TD>
</TR>
<tr>
<td height="54" align="center">用户名:</td>
<td width="181" height=54>
<input id=Username name=Username>
</TD>
</TR>
<tr>
<td height="54" align="center">密码:</td>
<td width="181" height=54>
<input id=Password type=Password name=Password>
</TD>
</TR>
<tr>
<td height="54" align="center">认证码:</td>
<td width="181" height=54>
<input type=text name=rand maxlength=4 value="" size=6>
<img border=1 src="image.jsp">
</td>
</tr>
<TR>
<TD colspan="2" align=center>
<INPUT type=submit value=登陆>
<INPUT type=reset value=重置>
</TD>
</TR>
</TBODY>
</TABLE>
</FORM>
</BODY>
</HTML>
check.jsp用于测试是否成功:
<%@ page contentType="text/html; charset=gb2312" language="java" errorPage=""%>
<%@ page import="java.sql.*" %>
<jsp:useBean id="sqltest" class="database.sqlbean" scope="page">
</jsp:useBean>
<html>
<head>
<title>认证码验证页面</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">
</head>
<body>
<%
String rand =(String)session.getAttribute("random");
String input =(String)session.getAttribute("input");
String user_name= (String)session.getAttribute("user_name");
String pass_word= (String)session.getAttribute("pass_word");
%>
系统产生的认证码为:
<%= rand %><br>
您输入的认证码为:
<%= input %><br>
<font color=green>验证码输入相同,认证成功!</font><br>
<br>
您输入的用户名为:
<%= session.getAttribute("user_name") %><br>
密码为:
<%= session.getAttribute("pass_word") %><br>
<%
String permit;
ResultSet rs=null;
String SqlString="select * from UserInfo where username='"+user_name+"'and password='"+pass_word+"'";
try
{
//设置连接
sqltest.setConnection("com.microsoft.jdbc.sqlserver.SQLServerDriver",
"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=university",
"admin","123456");
//设置SQL语句
sqltest.setQuerystatement(SqlString);
//得到查询结果
rs=sqltest.getResult();
if (rs.next())
{
out.print("登陆成功");
//获得用户的权限
permit=rs.getString("permit");
if (permit.equals("1"))
{
out.println(":你的权限是治理员组");
}
else
{
out.println(":你的权限是用户组");
}
}
else
{
out.print("登陆失败,用户名或密码错");
}
}
catch(SQLException e1)
{
out.print("SQL异常!");
}
%>
</body>
</html>
连接数据库的Javabean: sqlbean.java
package database;
import java.sql.*;
public class sqlbean {
public String query_statement;
public ResultSet result=null;
public Connection conn;
public void setQuerystatement(String query_statement)
{
this.query_statement=query_statement;
}
public void setConnection(String driverName ,String jdbcURL,
String username,String passwd) throws Exception
{
Connection conn1;
Class.forName(driverName);
conn1=DriverManager.getConnection(jdbcURL, username, passwd);
conn1.setAutoCommit(false);
this.conn = conn1;
}
public ResultSet getResult()
{
try
{
PreparedStatement select_stm=conn.prepareStatement(query_statement,
java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
result=select_stm.executeQuery();
}
catch(Exception e)
{
System.out.println(e);
}
return result;
}
} |
|