JSP图片彩色数字验证
产生验证码图片的文件image.jsp
<%@ page contentType="image/jpeg" 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("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(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++
相关文档:
1.最直接最简单的,方式是把文件地址直接放到html页面的一个链接中。这样做的缺点是把文件在服务器上的路径暴露了,并且还无法对文件下载进行其它的控制(如权限)。这个就不写示例了。
2.在服务器端把文件转换成输出流,写入到response,以response把文件带到浏览器,由浏览器来提示用户是否愿意保存文件到本地。
3.既然 ......
JSP中出现乱码,首先检查一下pageEncoding和contentType两个属性,两个属性的默认值都是ISO-8859-1
pageEncoding设置的是编译JSP时所用的编码,如果用默认的编码编译中文,那么在JSP编译阶段已经是乱码了。
contentType设置的是服务端范围给浏览器的显示编码,和页面上设置编码是一样的效果。 ......
<%@page contentType="text/html"%>
<%@page pageEncoding="GBK"%>
<%@page import="java.sql.*;" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
&n ......
元问题来自JSP与Servlet的比较。
我们知道Servlet能够使得JAVA代码不用像Applet那样在客户浏览器中运行,它会在你控制的一个应用服务器上运行。在没有什么背景知识的前提下我默认这是一种规则,即Servlet就是这样发展起来的。在实际应用中当我们请求一个JSP页面的时候,JSP首先被转 ......
方法一:在servlet的init()方法中缓存数据
当应用服务器初始化servlet实例之后,为客户端请求提供服务之前,它会调用这个servlet的init()方法。在一个servlet
的生命周期中,init()方法只会被调用一次。通过在init()方法中缓存一些静态的数据或完成一些只需要执行一次的、耗时的操作,就可大大地提高系
统性能。
......