posts - 7,comments - 5,trackbacks - 0

http://www.blogjava.net/deng947/archive/2006/04/14/41139.html
HTML Basic

Image 标签 <IMG src="../images/03.gif" border="0"> 所有属性包括

Basic 属性包括

 alt

       Class

       Id

       Long

       Longdesc

       Name

       Src

       Title

       Usemap

Display 属性包括

       Align

       Border

       Dir

       Height

       Hspace

       Ismap

       Mapfile

       Style

       Vspace

       Width

Events 属性包括

       Onclick

Ondbclick

Onhelp

Onkeydown

Onkeypress

Onkeyup

Onmounsedown

Onmousemove

Onmouseout

Onmouseover

Onmouseup

二、 HTML-Form

 Image Button<INPUT type="image" src="../images/03.gif" />

Basic 属性包括

 Accept

 Accesskey

 Alt

Checked

       Class

       Disabled

       Id

       Long

       Maxlength

       Name

       readonly

       Src

       Tabindex

       Title

       Type

       Usemap

       Value

Display 属性包括

       Align

       Border

       Dir

       Height

       Ismap

Isstyle

Size

       Style

       Width

Events 属性包括

       Onblur

       Onchange

Onclick

Ondbclick

Onfocus

Onhelp

Onkeydown

Onkeypress

Onkeyup

Onmounsedown

Onmousemove

Onmouseout

Onmouseover

Onmouseup

       Onselect

三、 Struts Basic

Image <html:img page="/images/03.gif" border="0" />

Basic 属性包括

 Action

Alt

 AltKey

 Bundle

 imageName

 locale

 lowsrc

       Name

       Page

PageKey

Paramname

Paramproperty

Paramscope

       Src

       SrcKey

       Title

       titleKey

       Usemap

Display 属性包括

       Align

       Border

       Height

       Hsapce

       Ismap

       Style

       StyleClass

       StyleId

       Vsapce

       Width

Events 属性包括

Onclick

Ondbclick

Onkeydown

Onkeypress

Onkeyup

Onmounsedown

Onmousemove

Onmouseout

Onmouseover

Onmouseup

Other 属性包括

       contextRealtive

       module

       paramId

       useLocalEncoding

四、 Struts-Form

Image Button <html:image page="/images/03.gif" />

Basic 属性包括

Accesskey

 Alt

 altKey

bundle

        Disabled

       Indexed

       Locale

       Page

pageKey

property

       Src

       SrcKey

       Tabindex

       Title

       titleKey

       Value

Display 属性包括

       Align

       Border

       Style

       styleClass

       styleId

Events 属性包括

       Onblur

       Onchange

Onclick

Ondbclick

Onfocus

Onkeydown

Onkeypress

Onkeyup

Onmounsedown

Onmousemove

Onmouseout

Onmouseover

Onmouseup

  Struts 必须使用 Struts Basic 下的 Image 标签 Struts-Form 下的 Image Button 按钮。其中可以使用 servlet 随机生成的图片,或者 jsp 文件。 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++){

    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();

// 输出图象到页面

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

%>

使用页面:

<%@ page contentType="text/html;charset=gb2312" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title> 认证码输入页面 </title>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">

<META HTTP-EQUIV="Expires" CONTENT="0">

</head>

<body>

<form method=post action="check.jsp">

<table>

<tr>

<td align=left> 系统产生的认证码: </td>

<td><img border=0 src="image.jsp"></td>

</tr>

<tr>

<td align=left> 输入上面的认证码: </td>

<td><input type=text name=rand maxlength=4 value=""></td>

</tr>

<tr>

<td colspan=2 align=center><input type=submit value=" 提交检测 "></td>

</tr>
</table>

</form>

posted @ 2009-04-23 19:58 心路 阅读(830) | 评论 (0)编辑 收藏
unsupported major.minor version 解决方法

        一直以来都是用jdk1.5,这次重返电信由于其系统是在jdk1.4上编译的,编译的时候出现了unsupported major.minor version49.0的错误,上网查看了一下还是一个很普遍的错误,捣鼓了两天终于捣鼓出一些东西,现分享给大家。

     何谓 major.minor,且又居身于何处呢?先感性认识并找到 major.minor 来。顺便写一段 代码,然后用 JDK 1.5 的编译器编译成class,用UltraEdit或者其他能打开非十进制文件的软件打开此class,见下图:        

 

       从上图中我们看出来了什么是 major.minor version 了,它相当于一个软件的主次版本号,只是在这里是标识的一个 Java Class 的主版本号和次版本号,同时我们看到 minor_version 为 0x0000,major_version 为 0x0031,转换为十制数分别为0 和 49,即 major.minor 就是 49.0 了。

      现在不妨从 JDK 1.1 到 JDK 1.7 编译器编译出的 class 的默认 minor.major version 吧。(又走到 Sun 的网站上翻腾出我从来都没用过的古董来)
     

JDK 编译器版本 target 参数 十六进制 minor.major 十进制 minor.major
jdk1.1.8 不能带 target 参数 00 03 00 2D 45.3
jdk1.2.2 不带(默认为 -target 1.1) 00 03 00 2D 45.3
jdk1.2.2 -target 1.2 00 00   00 2E 46.0
jdk1.3.1_19 不带(默认为 -target 1.1) 00 03 00 2D 45.3
jdk1.3.1_19 -target 1.3 00 00   00 2F 47.0
j2sdk1.4.2_10 不带(默认为 -target 1.2) 00 00   00 2E 46.0
j2sdk1.4.2_10 -target 1.4 00 00   00 30 48.0
jdk1.5.0_11 不带(默认为 -target 1.5) 00 00   00 31 49.0
jdk1.5.0_11 -target 1.4 -source 1.4 00 00   00 30 48.0
jdk1.6.0_01 不带(默认为 -target 1.6) 00 00   00 32 50.0
jdk1.6.0_01 -target 1.5 00 00   00 31 49.0
jdk1.6.0_01 -target 1.4 -source 1.4 00 00   00 30 48.0
jdk1.7.0 不带(默认为 -target 1.6) 00 00   00 32 50.0
jdk1.7.0 -target 1.7 00 00   00 33 51.0
jdk1.7.0 -target 1.4 -source 1.4 00 00   00 30 48.0
Apache Harmony 5.0M3 不带(默认为 -target 1.2) 00 00   00 2E 46.0
Apache Harmony 5.0M3 -target 1.4 00 00   00 30 48.0

 

       当然你也可以用其他方法查看版本号,比如javap -verbose XXXX(class名)。

        那么现在如果碰到这种问题该知道如何解决了吧,还会像我所见到有些兄弟那样,去找个 1.4 的 JDK 下载安装,然后用其重新编译所有的代码吗?且不说这种方法的繁琐,而且web应用程序还不一定能成功,其实大可不必如此费神,我们一定还记得 javac 还有个 -target 参数,对啦,可以继续使用 1.5 JDK,编译时带上参数 -target 1.4 -source 1.4 就 OK 啦,不过你一定要对哪些 API 是 1.5 JDK 加入进来的了如指掌,不能你的 class 文件拿到 JVM 1.4 下就会 method not found。目标 JVM 是 1.3 的话,编译选项就用 -target 1.3 -source 1.3 了。

      相应的如果使用 ant ,它的 javac 任务也可对应的选择 target 和 source

<javac target="1.4" source="1.4" ............................/>

如果是在开发中,可以肯定的是现在真正算得上是 JAVA IDE 对于工程也都有编译选项设置目标代码的。例如 Eclipse 的项目属性中的 Java Compiler 设置,如图:

        

        其实理解 major.minor 就像是我们可以这么想像,同样是微软件的程序,32 位的应用程序不能拿到 16 位系统中执行那样。

如果我们发布前了解到目标 JVM 版本,知道怎么从 java class 文件中看出 major.minor 版本来,就不用等到服务器报出异常才着手去解决,也就能预知到可能发生的问题。

其他时候遇到这个问题应具体解决,总之问题的根由是低版本的 JVM 无法加载高版本的 class 文件造成的,找到高版本的 class 文件处理一下就行了。

posted @ 2009-04-23 11:31 心路 阅读(68553) | 评论 (5)编辑 收藏