哪位给点思路啊。,小弟无从下手
解决方案 »
- 大家帮我看下这段程序为什么会出现死锁,谢谢
- 怎样在Eclipse下配置Tomcat,步骤写详细一点
- 如何提取html中的文本?
- java连接SQLSERVER时出错需要帮助!
- 关于java动态代理Connection的问题
- jdk有无提供现成方法,从生日(Date)获得年龄(精确周岁)?
- 新手,求助,SQL数据库中表输出问题
- 如何用RMI传回ResultSet,提示说没有系列化,有什么解决方法?
- 全新的B/S结构开发方式,用纯JS+HTML实现了类似C/S的强大浏览器交互,查询及分页浏览速度提高几倍,可以成批录入数据,有完整的数据库表访问和纯web打印
- 致谦信
- 如何比较两个百分数的大小
- 一个简单的问题? 嘿嘿
看看这个 也许你能用上
private static final long serialVersionUID=569987744556632111l;
//设置图形验证码中字符串的字体和大小
private Font mFont=new Font("Arial Black",Font.PLAIN,16);
public void init() throws ServletException{
super.init();
}
//生成随机颜色
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);
}
//生成服务器响应的service方法
public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
//阻止生成的页面内容被缓存,保证每次重新生成随机验证码
response.setHeader("Pragna", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
response.setContentType("image/jpeg");
//指定图形验证码图片的大小
int width=70,height=18;
//生成一张新图片
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(1, 1, width-1, height-1);
g.setColor(new Color(102,102,102));
g.drawRect(0, 0, width-1, height-1);
g.setFont(mFont);
//随机生成线条,让图片看起来更加杂乱
g.setColor(getRandColor(160, 200));
for(int i=0;i<155;i++){
int x=random.nextInt(width-1);
int y=random.nextInt(height-1);
int xl=random.nextInt(6)+1;
int yl=random.nextInt(12)+1;
g.drawLine(x,y,x+xl,y+yl);
}
//该变量用户保存系统生成的随机字符串
String sRand="";
for(int i=0;i<4;i++){
//取得一个随机字符
String tmp=getRandomChar();
sRand+=tmp;
//将系统生成的随机字符添加到图形验证码图片上
g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
g.drawString(tmp, 15*i+10, 15);
}
//取得用户Session
HttpSession session=request.getSession();
//将系统生成的图形验证码添加到用户Session中
session.setAttribute("rand", sRand);
g.dispose();
//输出图形验证码图片
ImageIO.write(image, "JPEG", response.getOutputStream());
}
public String getRandomChar()
{
// int rand=(int)Math.round(Math.random()*2);
long itmp=0;
// char ctmp='\u0000';
// //根据rand的值来决定是生成一个大写字母、小写字母和数字
// switch(rand)
// {
// //生成大些字母的情形
// case 1:
// itmp=Math.round(Math.random()*25+65);
// ctmp=(char)itmp;
// return String.valueOf(ctmp);
// //生成小写字母的情形
// case 2:
// itmp=Math.round(Math.random()*25+97);
// ctmp=(char)itmp;
// return String.valueOf(ctmp);
// //生成数字的情形
// default:
itmp=Math.round(Math.random()*9);
return String.valueOf(itmp);
// }
}}
我这边有一段生成随机英文和数字的代码。
你可以参考下,你可以将需要生成的中文先存入数组中。然后随机从数组中获取
int c = Math。Random()* 汉字的个数;
stt[i]=str.get(c);
}
试试吧 我也是写着玩的