1:登陆界面如下
2:登陆结果
3:代码如下
login.jsp
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page language="java" contentType="text/html; charset=utf-8" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<html:html xhtml="true" locale="true">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Shark Test</title>
<html:base/>
<link rel="stylesheet" type="text/css" href="css/example.css" />
</head>
<body>
<!--hr noshade="noshade"/-->
<html:form action="/processLogin">
<table class=tableborder1 cellSpacing=1 cellPadding=3 align=center >
<tbody>
<tr>
<td colspan="2"><div align="center"><html:errors/></div></td>
</tr>
<tr>
<th vAlign=center align=middle colSpan=3 height=25><div align="center"><bean:message key="info.inputUsernamePwd"/></th>
</tr>
<tr>
<td class=tablebody1 vAlign=center><bean:message key="login.username"/>:</td>
<td class=tablebody1 vAlign=center>
<html:text property="username" size="20" maxlength="50"/>
</td>
<td>
<html:link action=""><bean:message key="info.noRegister"/>?</html:link>
</td>
</tr>
<tr>
<td class=tablebody1 vAlign=center><bean:message key="login.password"/>:</td>
<td class=tablebody1 vAlign=center>
<html:password property="passwd" size="20" maxlength="50"/>
</td>
<td>
<html:link action=""><bean:message key="info.forgetPassword"/>?</html:link>
</td>
</tr>
<tr>
<td class=tablebody1 vAlign=center><bean:message key="login.authcode"/>:</td>
<td class=tablebody1 vAlign=center>
<html:text property="authcode" size="6" maxlength="6" ></html:text>
</td>
<td>
<img border=0 src="AuthorizationCodeImg">
</td>
</tr>
<tr>
<td class=tablebody1 vAlign=center align=right><html:submit><bean:message key="button.submit" /></html:submit></td>
<td></td>
<td class=tablebody1 vAlign=center align=left><html:cancel/></td>
</tr>
</tbody>
</table>
</html:form>
</body>
</html:html>
AuthorizationCodeImg.java
/*
* 创建日期 2004-12-29
*
*/
package hk.com.csl.comm.util;
/**
* <p>Title: Shark Test</p>
* <p>Description: Shark Test System</p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: Completesolution Solution(GD) Company</p>
* @author Jason
* @version 1.0
*/
import hk.com.csl.comm.util.CreateImage;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import com.sun.image.codec.jpeg.*;
import java.awt.image.*;
public class AuthorizationCodeImg
extends HttpServlet {
//Initialize global variables
public void init() throws ServletException {
}
//Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
response.setContentType("image/jpeg");
CreateImage createImg = new CreateImage();
ServletOutputStream out = response.getOutputStream();
BufferedImage image = createImg.createImg(6);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();
HttpSession session = request.getSession();
session.setAttribute("rand",createImg.sRand);
}
//Process the HTTP Post request
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
doGet(request, response);
}
//Clean up resources
public void destroy() {
}
}
CreateImage.java(此段代码从网上所得,稍作修改)
/*
* 创建日期 2004-12-29
*
*/
package hk.com.csl.comm.util;
/**
* <p>Title: Shark Test</p>
* <p>Description: Shark Test System</p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: Completesolution Solution(GD) Company</p>
* @author Jason
* @version 1.0
*/
import java.awt.*;
import java.awt.image.*;
import java.util.*;
import hk.com.csl.comm.util.CreateRandomString;
public class CreateImage {
public String sRand="";
/**
* Get Random Color
* @param fc
* @param bc
* @return Color
*/
public 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);
}
/**
* Create a image
* @param size
* @return image
*/
public BufferedImage createImg(int size){
// 在内存中创建图象
//int width=60, height=20;
int width=12*size, 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);
// 随机产生100条干扰线,使图象中的认证码不易被其它程序探测到
g.setColor(getRandColor(160,200));
for (int i=0;i<100;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);
}
// 取随机产生的认证码(size位字符串)
String rand = new CreateRandomString().getRandomString(size);
sRand = rand;
// 将认证码显示到图象中
g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
g.drawString(rand,6,16);
// 图象生效
g.dispose();
return image;
}
}
CreateRandomString.java
/*
* 创建日期 2004-12-29
*
*/
package hk.com.csl.comm.util;
/**
* <p>Title: 产生随机字符串</p>
* <p>Description: Shark Test System</p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: Completesolution Solution(GD) Company</p>
* @author Jason
* @version 1.0
*/
import java.util.*;
public class CreateRandomString{
public CreateRandomString() {
}
//Main method
//public static String getRandomString(int size){
/**
* Get String Created by Random Function
* @param size
* @return String
*/
public String getRandomString(int size){
//char[] c={'!','@','#','$','%','*','&','^','(',')','<','>','{','}','[',']','?','/','1','2','3','4','5','6','7','8','9','0','q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m'};
char[] c={'1','2','3','4','5','6','7','8','9','0','q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m'};
Random random = new Random(); //初始化随机数产生器
StringBuffer sb =new StringBuffer();
for(int i=0;i<size;i++){
sb.append(c[Math.abs(random.nextInt()) %c.length]);
}
return sb.toString();
}
/*
public static void main(String[] args) {
try {
String needString=getRandomString(20);
System.out.println(needString);
}
catch(Exception e) {
e.printStackTrace();
}
new CreateRandomString();
}*/
}