马光军--------BLOG

BlogJava 联系 聚合 管理
  1 Posts :: 25 Stories :: 5 Comments :: 0 Trackbacks
MakePicture.java产生图片的类:
package com.strongit.zwjc.util;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.awt.*;
import java.awt.image.*;
import java.util.*;
import javax.imageio.*;


public class MakePicture extends HttpServlet { 

    
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    
throws ServletException, IOException {
        response.setContentType(
"image/jpeg");
        response.setHeader(
"Pragma","No-cache");
        response.setHeader(
"Cache-Control","no-cache");
        response.setDateHeader(
"Expires"0);       
        HttpSession session
=request.getSession();
        
// 在内存中创建图象
        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(
00, 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="";
        
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
        session.setAttribute("rand",sRand);
        
// 图象生效
        g.dispose();
        ServletOutputStream responseOutputStream 
=response.getOutputStream();
        
// 输出图象到页面
        ImageIO.write(image, "JPEG", responseOutputStream);

        
//以下关闭输入流!
        responseOutputStream.flush();
        responseOutputStream.close();
    }
    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);
    }
   
    
protected void doGet(HttpServletRequest request, HttpServletResponse response)
    
throws ServletException, IOException {
        processRequest(request, response);
    }
    
    
protected void doPost(HttpServletRequest request, HttpServletResponse response)
    
throws ServletException, IOException {
        processRequest(request, response);
    }

    
public String getServletInfo() {
        
return "Short description";
    }

}
页面代码:
<%@ page language="java" pageEncoding="UTF-8"%>
<html>
    
<head>
        
<meta http-equiv="pragma" content="no-cache">
        
<meta http-equiv="cache-control" content="no-cache">
        
<meta http-equiv="expires" content="0">
        
<link href="css/datagather_login.css" rel="stylesheet" type="text/css">
        
<title>个性化门户登陆页面</title>
        
<script type="text/javascript">
            
var request = false;
            
function refresh(){
                  document.getElementById(
"makePicture").src="makePicture?now="+ new Date();
              }
        
</script>
    
</head>
    
<body>
        
<form action="" method="post" id="form1" name="form1">
            
<table width="100%" height="100%" border="0" cellspacing="0"
                cellpadding
="0">
                
<tr>
                    
<td align="center">
                        
<table width="607" align="center" border="0" cellspacing="0"
                            cellpadding
="0">
                            
<tr>
                                
<td valign="bottom">
                                    
<img src="images/portlettools/login/titleportal.jpg"
                                        width
="682" height="103" />
                                
</td>
                            
</tr>
                            
<tr>
                                
<td valign="top" align="right"
                                    background
="images/portlettools/login/bg.jpg" width="607"
                                    height
="288">
                                    
<table width="38%" border="0" cellspacing="0" cellpadding="0">
                                        
<tr>
                                            
<td height="30">
                                                
&nbsp;
                                            
</td>
                                        
</tr>
                                        
<tr>
                                            
<td height="100">
                                                
<table width="100%" height="100" border="0" cellspacing="0"
                                                    cellpadding
="0">
                                                    
<tr>
                                                        
<td width="52" class="tt">
                                                            用户名:
                                                        
</td>
                                                        
<td colspan="2" class="lo_input">
                                                            
<input name="username" height="40" type="text"
                                                                style
="width:132" onfocus="true" class="lo_input"
                                                                size
="18" />
                                                        
</td>
                                                    
</tr>
                                                    
<tr>
                                                        
<td width="52" class="tt">
                                                            密 码:
                                                        
</td>
                                                        
<td colspan="2" class="lo_input">
                                                            
<input id="password" name="password" type="password"
                                                                style
="width:132"
                                                                onkeydown
="if(event.keyCode==13) gotoSubmit();"
                                                                size
="18" />
                                                        
</td>
                                                    
</tr>
                                                    
<tr>
                                                        
<td width="52" class="tt">
                                                            验证码:
                                                        
</td>
                                                        
<td width="70">
                                                            
<input type="text" name="checkCode" size="4"
                                                                maxlength
="4"
                                                                onkeydown
="if(event.keyCode==13) gotoSubmit();">
                                                        
</td>
                                                        
<td>
                                                            
<img src="makePicture" id="makePicture">
                                                        
</td>
                                                    
</tr>
                                                    
<tr>
                                                        
<td width="52"></td>
                                                        
<td>
                                                        
<td>
                                                            
<font color="blue"><href="#" onclick="refresh()">看不清</a>
                                                            
</font>
                                                        
</td>
                                                    
</tr>
                                                
</table>
                                            
</td>
                                        
</tr>
                                        
<tr>
                                            
<td>
                                                
<table width="210" align="left" border="0" cellspacing="0"
                                                    cellpadding
="0" height="80">
                                                    
<tr>
                                                        
<td align="left">
                                                            
<img src="images/portlettools/login/login.jpg" width="76"
                                                                height
="35" onclick="gotoSubmit();" style="cursor:hand;" />
                                                        
</td>
                                                        
<td>
                                                            
<img src="images/portlettools/login/cancle.jpg"
                                                                width
="76" height="35" style="cursor:hand;"
                                                                onclick
="gotoReset()" />
                                                        
</td>
                                                    
</tr>
                                                
</table>
                                            
</td>
                                        
</tr>
                                    
</table>
                                
</td>
                            
</tr>
                        
</table>
                    
</td>
                
</tr>
            
</table>
        
</form>
    
</body>
</html>
WEB.XML中设置:
<servlet>
        
<servlet-name>makePicture</servlet-name>
        
<servlet-class>
            com.strongit.zwjc.util.MakePicture
        
</servlet-class>
    
</servlet>
    
<servlet-mapping>
        
<servlet-name>makePicture</servlet-name>
        
<url-pattern>/makePicture</url-pattern>
    
</servlet-mapping>
posted on 2008-12-02 20:56 马光军 阅读(75) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: