当前位置: 代码迷 >> J2EE >> 简单的 jsp验证码 代码!该如何解决
  详细解决方案

简单的 jsp验证码 代码!该如何解决

热度:154   发布时间:2016-04-22 02:51:43.0
简单的 jsp验证码 代码!
第一个网页 ----------------------------------------a.html----------------------------------------------

<html> 
<body>  

<form method=post action="c.jsp">  
<input type=text name=input maxlength=4>  
<img border=0 src="b.jsp">  
<input type="submit" value="submit">  
</form> 

</body> 
</html>




第二个网页 --------------------- b.jsp -----------------------------------------------------

<%@ page contentType="image/JPEG" 
import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" 
pageEncoding="GBK"%> 
<%!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("Pragma", "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(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); 


// 取随机产生的认证码(4位数字)  
String sRand = ""; 
for (int i = 0; i < 4; i++) { 
String 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); 


session.setAttribute("code", sRand); 

g.dispose(); 

ImageIO.write(image, "JPEG", response.getOutputStream()); 
%>




第三个网页 -----------------------------c.jsp----------------------------------------------

<%@ page 
import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"%> 
<%@ page import="java.io.OutputStream"%> 
<%!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); 
}%> 
<% 
try { 
response.setHeader("Pragma", "No-cache"); 
response.setHeader("Cache-Control", "no-cache"); 
response.setDateHeader("Expires", 0); 
int width = 60, height = 16; 
BufferedImage image = new BufferedImage(width, height, 
BufferedImage.TYPE_INT_RGB); 
OutputStream os = response.getOutputStream(); 
Graphics g = image.getGraphics(); 
Random random = new Random(); 
g.setColor(getRandColor(200, 250)); 
  相关解决方案