??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品免费人成网站,国产精品一区二区三区美女,三级在线看中文字幕完整版http://www.aygfsteel.com/zuofei-bie/archive/2011/03/24/346980.html别昨?/dc:creator>别昨?/author>Thu, 24 Mar 2011 12:35:00 GMThttp://www.aygfsteel.com/zuofei-bie/archive/2011/03/24/346980.htmlhttp://www.aygfsteel.com/zuofei-bie/comments/346980.htmlhttp://www.aygfsteel.com/zuofei-bie/archive/2011/03/24/346980.html#Feedback0http://www.aygfsteel.com/zuofei-bie/comments/commentRss/346980.htmlhttp://www.aygfsteel.com/zuofei-bie/services/trackbacks/346980.html  ׃目需要部|在Linux上,而又使用到Apache James作邮件服务器Q因此ȝ了一下在Linux上部|Apache James的步骤,写得比较凌ؕ?/p>

在Linux上部|Apache James

前提工作Q?/p>

1Q由于Apache James邮g服务需要用?024以下的端口,因此Lroot用户dq行部v?/p>

2Q需要先安装JDK1.5或以上版本,部v前请保(zhn)的JDK环境变量如JAVA_HOME{已l设|好?/p>

3QJames 启动Ӟ其SMTP 服务默认?25 端口启动QPOP3 服务默认?110 端口启动Q?NNTP 服务默认?119 端口启动, L保这些端口未被占用。Linux下查q这些端口是否被占用的命令是Qlsof -i:端口P例如Q?/p>

[root@nhslj-app ~]# lsof -i:25

COMMAND   PID USER   FD   TYPE DEVICE SIZE NODE NAME

sendmail 3268 root    4u  IPv4   8650       TCP nhslj-app:smtp (LISTEN)

q表C?5端口正在被sendmail服务占用?/p>

关闭SendMail服务Q?/p>

一般RedHat的系l安装时都会默认安装了sendmail邮g服务Q因此在部vApache JamesӞ需要把sendmail关闭。可以通过以下Ҏ(gu)来关闭sendmailQ以防止pȝ重启时又自动启动sendmail服务?/p>

1Q用chkconfig --list sendmail命o查看sendmail的情况:

[root@susun177 ~]# chkconfig --list sendmail

sendmail        0:关闭  1:关闭  2:启用  3:关闭  4:启用  5:启用  6:关闭

2Q通过chkconfig sendmail off命o来关闭sendmail的启动:

[root@susun177 ~]# chkconfig sendmail off

3Q这时再用chkconfig --list sendmail命o可以查看到sendmail的所有启动别都已经关闭了:

[root@susun177 ~]# chkconfig --list sendmail

sendmail        0:关闭  1:关闭  2:关闭  3:关闭  4:关闭  5:关闭  6:关闭

q样Q即佉K新启动LinuxpȝQsendmail服务也不会自动启动了?/p>

前期工作做完了,接下来就是部|Apache  James了?/p>

1Q解压Apache James包(apache-james-2.3.2.tar.gzQ:

[root@susun177 local]# tar zxvf apache-james-2.3.2.tar.gz

解压后,会多了一个目录james-2.3.2

2Q进入james-2.3.2/bin目录Q运行run.shQ生成james的配|文件config.xmlQ?/p>

[root@susun177 bin]# sh run.sh

run.sh: line 37: /usr/local/james-2.3.2/bin/phoenix.sh: 权限不够

权限不够Q估计是解压后run.sh文g没有赋予执行权限Q,可以执行以下命oQ?/p>

[root@susun177 bin]# chmod +x run.sh phoenix.sh

然后再次q行run.sh命oQ?/p>

[root@susun177 bin]# sh run.sh

Using PHOENIX_HOME:   /usr/local/james-2.3.2

Using PHOENIX_TMPDIR: /usr/local/james-2.3.2/temp

Using JAVA_HOME:      /usr/java/jdk1.5.0

Running Phoenix:

Phoenix 4.2

James Mail Server 2.3.2

Remote Manager Service started plain:4555

POP3 Service started plain:110

SMTP Service started plain:25

NNTP Service started plain:119

FetchMail Disabled

说明James启动成功?/p>

3Q按Ctrl + C退出JamesQ编辑config.xml文g。生成的config.xml攄?./james-2.3.2/apps/james/SAR- INF目录下。关于James的config.xml的修改,|上很多资料Q请自行查阅。在q里Q只写关键的修改Q?/p>

AQ找?lt;servernames autodetect="true" autodetectIP="true"> 设成        

         autodetect="false" autodetectIP="false"

         autodetct设ؓtrue会自动侦你的主机名,设成false会用你指定的server name?/p>

         autodetectIP设ؓtrue会ؓ你的servername加上ip?/p>

BQ设|servername 默认的为localhostҎ(gu)你的server名字 如king.cnQ?

<servername>king.cn</servername>

然后修改Linux的hostsL讄文gQ?/p>

[root@susun177 SAR-INF]# vi /etc/hosts

在打开的文件添加一行,然后保存Q?/p>

192.168.1.177           king.cn   king

注意Q第一个ؓIP地址  W二个ؓL域名  W三个ؓL名称

提示Q名字后面应该要加上.com或?cnq样163{邮件服务器才不会拒l的?/p>

CQ注释掉

         <mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor>

             <processor> relay-denied </processor>

             <notice>550 - Requested action not taken: relaying denied</notice>

         </mailet>

DQ配|DNS ServerQ先通过netstat命o查看dns配置

[root@susun177 SAR-INF]# netstat -rn

Kernel IP routing table

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface

192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0

169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0

扑ֈ<dnsserver>Q在<servers>里最前面d一行: <server>192.168.1.0</server> Q?nbsp;               同时讄autodiscover为false?/p>

   <dnsserver>

      <servers>

         <!--Enter ip address of your DNS server, one IP address per server -->

         <!-- element. -->

         <!--

          <server>127.0.0.1</server>

         -->

           <server>10.168.0.10</server>         

      </servers>

      <!-- Change autodiscover to false if you would like to turn off autodiscovery -->

      <!-- and set the DNS servers manually in the <servers> section -->

      <autodiscover>false</autodiscover>

      <authoritative>false</authoritative>

      <!-- Maximum number of entries to maintain in the DNS cache -->

      <maxcachesize>50000</maxcachesize>

   </dnsserver>

EQ修改James数据库连接字W串Q?/p>

      <data-source name="maildb" class="org.apache.james.util.dbcp.JdbcDataSource">

         <driver>oracle.jdbc.driver.OracleDriver</driver>

         <dburl>jdbc:oracle:thin:@192.168.1.17:1521:hello</dburl>

         <user>hello</user>

         <password>kitty</password>

         <keep-alive>select 1 from dual</keep-alive>

         <testOnBorrow>true</testOnBorrow>

         <testOnReturn>true</testOnReturn>

         <max>50</max>

      </data-source>

以上用的是oracle数据库,如果是其他数据库Q则需要修改ؓ对应的数据库q接驱动Q以及数据库用户信息?/p>

注意Q一定要记得配置<keep-alive>Q该参数的意思是Q在使用q接池的q接之前Q是否需要验证该q接是否有效。之前,我没有设|该参数Q结果L出现收不到邮件的问题?/p>

4Q优化一下James内存Q在../james-2.3.2/bi/phoenix.sh加入Q?/p>

# Set Heap Size 2007-0818,fix OutOfMemory bug while transporting big mail

PHOENIX_JVM_OPTS="$PHOENIX_JVM_OPTS -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M"

修改../james-2.3.2/conf/wrapper.conf的jvm配置Q设|初始内?28M,最大内?12M

                   # Initial Java Heap Size (in MB)

                   #wrapper.java.initmemory=16

                   wrapper.java.initmemory=128

        

                   # Maximum Java Heap Size (in MB)

                   #wrapper.java.maxmemory=64

                   wrapper.java.maxmemory=512

5Q?复制数据库驱动到../james-2.3.2/lib目录下,我用的是oracle数据库,驱动包ؓQojdbc14.jar

6Q重启Apache James服务?/p>

7Q最后,q入邮gpȝ全局理Q将pȝ的域名改Zq的server name?/p>

8Q如无意外一切OK?/p>

]]>
最单的Map遍历的写?/title><link>http://www.aygfsteel.com/zuofei-bie/archive/2011/03/24/346922.html</link><dc:creator>别昨?/dc:creator><author>别昨?/author><pubDate>Thu, 24 Mar 2011 03:08:00 GMT</pubDate><guid>http://www.aygfsteel.com/zuofei-bie/archive/2011/03/24/346922.html</guid><wfw:comment>http://www.aygfsteel.com/zuofei-bie/comments/346922.html</wfw:comment><comments>http://www.aygfsteel.com/zuofei-bie/archive/2011/03/24/346922.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/zuofei-bie/comments/commentRss/346922.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/zuofei-bie/services/trackbacks/346922.html</trackback:ping><description><![CDATA[<ol class="dp-j" start="1"> <li><span><span>Map<String,String> map = </span><span id="wmqeeuq" class="keyword">new</span><span> HashMap<String,String>();  </span></span></li> <li><span><span id="wmqeeuq" class="keyword">for</span><span>(Map.Entry<String, String> entry : map.entrySet()){  </span></span></li> <li><span>    String value = entry.getValue();  </span></li> <li><span>    String key = entry.getKey();  </span></li> <li><span>}</span></li> </ol> <img src ="http://www.aygfsteel.com/zuofei-bie/aggbug/346922.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/zuofei-bie/" target="_blank">别昨?/a> 2011-03-24 11:08 <a href="http://www.aygfsteel.com/zuofei-bie/archive/2011/03/24/346922.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PHP数据cd转换 Q{Q?/title><link>http://www.aygfsteel.com/zuofei-bie/archive/2010/03/31/317092.html</link><dc:creator>别昨?/dc:creator><author>别昨?/author><pubDate>Wed, 31 Mar 2010 12:25:00 GMT</pubDate><guid>http://www.aygfsteel.com/zuofei-bie/archive/2010/03/31/317092.html</guid><wfw:comment>http://www.aygfsteel.com/zuofei-bie/comments/317092.html</wfw:comment><comments>http://www.aygfsteel.com/zuofei-bie/archive/2010/03/31/317092.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.aygfsteel.com/zuofei-bie/comments/commentRss/317092.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/zuofei-bie/services/trackbacks/317092.html</trackback:ping><description><![CDATA[<p>PHP数据cd转换</p> <p>PHP的数据类型{换属于强制{换,允许转换的PHP数据cd有:</p> <p>•QintQ、(integerQ:转换成整?<br /> •QfloatQ、(doubleQ、(realQ:转换成Q点型 <br /> •QstringQ:转换成字W串 <br /> •QboolQ、(booleanQ:转换成布?yu)类?<br /> •QarrayQ:转换成数l?<br /> •QobjectQ:转换成对?<br /> PHP数据cd有三U{换方式:</p> <p>•在要转换的变量之前加上用括号括v来的目标cd <br /> •使用3个具体类型的转换函数Qintval()、floatval()、strval() <br /> •使用通用cd转换函数settype(mixed var,string type) <br />  W一U{换方式: (int)  (bool)  (float)  (string)  (array) (object)</p> <p> <br /> 1.<?php    <br /> 2.$num1=3.14;    <br /> 3.$num2=(int)$num1;    <br /> 4.var_dump($num1); //输出float(3.14)    <br /> 5.var_dump($num2); //输出int(3)    <br /> 6.?>   <br /> W二U{换方式:  intval()  floatval()  strval()</p> <p> <br /> 1.<?php    <br /> 2.$str="123.9abc";    <br /> 3.$int=intval($str);     //转换后数|123    <br /> 4.$float=floatval($str); //转换后数|123.9    <br /> 5.$str=strval($float);   //转换后字W串Q?123.9"     <br /> 6.?>   <br /> W三U{换方式:  settype();</p> <p> <br /> 1.<?php    <br /> 2.$num4=12.8;    <br /> 3.$flg=settype($num4,"int");    <br /> 4.var_dump($flg);  //输出bool(true)    <br /> 5.var_dump($num4); //输出int(12)    <br /> 6.?>  </p> <img src ="http://www.aygfsteel.com/zuofei-bie/aggbug/317092.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/zuofei-bie/" target="_blank">别昨?/a> 2010-03-31 20:25 <a href="http://www.aygfsteel.com/zuofei-bie/archive/2010/03/31/317092.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Jquery validate (引用)http://www.aygfsteel.com/zuofei-bie/archive/2010/03/31/317062.html别昨?/dc:creator>别昨?/author>Wed, 31 Mar 2010 07:27:00 GMThttp://www.aygfsteel.com/zuofei-bie/archive/2010/03/31/317062.htmlhttp://www.aygfsteel.com/zuofei-bie/comments/317062.htmlhttp://www.aygfsteel.com/zuofei-bie/archive/2010/03/31/317062.html#Feedback0http://www.aygfsteel.com/zuofei-bie/comments/commentRss/317062.htmlhttp://www.aygfsteel.com/zuofei-bie/services/trackbacks/317062.html
  • $(document).ready(function(){    
  •   
  • /* 讄默认属?nbsp;*/    
  • $.validator.setDefaults({    
  •   submitHandler: function(form) { form.submit(); }    
  • });    
  • // 中文字两个字?nbsp;   
  • jQuery.validator.addMethod("byteRangeLength", function(value, element, param) {    
  •   var length = value.length;    
  •   for(var i = 0; i < value.length; i++){    
  •    if(value.charCodeAt(i) > 127){    
  •     length++;    
  •    }    
  •   }    
  •   return this.optional(element) || ( length >= param[0] && length <= param[1] );    
  • }, "L保输入的值在3-15个字节之?一个中文字?个字?");    
  •   
  • /* q加自定义验证方?nbsp;*/    
  • // w䆾证号码验?nbsp;   
  • jQuery.validator.addMethod("isIdCardNo", function(value, element) {    
  •   return this.optional(element) || isIdCardNo(value);    
  • }, "h输入?zhn)的n份证L");    
  •   
  • // 字符验证    
  • jQuery.validator.addMethod("userName", function(value, element) {    
  •   return this.optional(element) || /^[\u0391-\uFFE5\w]+$/.test(value);    
  • }, "用户名只能包括中文字、英文字母、数字和下划U?);    
  •   
  • // 手机L验证    
  • jQuery.validator.addMethod("isMobile", function(value, element) {    
  •   var length = value.length;    
  •   return this.optional(element) || (length == 11 && /^(((13[0-9]{1})|(15[0-9]{1}))+\d{8})$/.test(value));    
  • }, "h填写?zhn)的手机号?);    
  •   
  • // ?sh)话L验证    
  • jQuery.validator.addMethod("isPhone", function(value, element) {    
  •   var tel = /^(\d{3,4}-?)?\d{7,9}$/g;    
  •   return this.optional(element) || (tel.test(value));    
  • }, "h填写?zhn)的?sh)话号?);    
  •   
  • // 邮政~码验证    
  • jQuery.validator.addMethod("isZipCode", function(value, element) {    
  •   var tel = /^[0-9]{6}$/;    
  •   return this.optional(element) || (tel.test(value));    
  • }, "h填写?zhn)的邮政编?);    
  • $(regFrom).validate({    
  • /* 讄验证规则 */    
  •   rules: {    
  •    userName: {    
  •     required: true,    
  •     userName: true,    
  •     byteRangeLength: [3,15]    
  •    },    
  •    password: {    
  •     required: true,    
  •     minLength: 5    
  •    },    
  •    repassword: {    
  •     required: true,    
  •     minLength: 5,    
  •     equalTo: "#password"    
  •    },    
  •    question: {    
  •     required: true    
  •    },    
  •    answer: {    
  •     required: true    
  •    },    
  •    realName: {    
  •     required: true    
  •    },    
  •    cardNumber: {    
  •     isIdCardNo: true    
  •    },    
  •    mobilePhone: {    
  •     isMobile: true    
  •    },    
  •    phone: {    
  •     isPhone: true    
  •    },    
  •    email: {    
  •     required: true,    
  •     email: true    
  •    },    
  •    zipCode: {    
  •     isZipCode:true    
  •    }    
  •   },    
  • /* 讄错误信息 */    
  •   messages: {    
  •    userName: {    
  •     required: "请填写用户名",    
  •     byteRangeLength: "用户名必d3-15个字W之?一个中文字?个字W?"    
  •    },    
  •    password: {    
  •     required: "请填写密?,    
  •     minlength: jQuery.format("输入{0}.")    
  •    },    
  •    repassword: {    
  •     required: "请填写确认密?,    
  •     equalTo: "两次密码输入不相?    
  •    },    
  •    question: {    
  •     required: "请填写?zhn)的密码提C问?    
  •    },    
  •    answer: {    
  •     required: "请填写?zhn)的密码提C答?    
  •    },    
  •    realName: {    
  •     required: "请填写?zhn)的真实姓?    
  •    },    
  •    email: {    
  •     required: "误入一个Email地址",    
  •     email: "误入一个有效的Email地址"    
  •    }    
  •   },    
  • /* 错误信息的显CZ|?nbsp;*/    
  •   errorPlacement: function(error, element) {    
  •    error.appendTo( element.parent() );    
  •   },    
  • /* 验证通过时的处理 */    
  •   success: function(label) {    
  •    // set   as text for IE    
  •    label.html(" ").addClass("checked");    
  •   },    
  • /* 获得焦点时不验证 */    
  •   focusInvalid: false,    
  •   onkeyup: false    
  • });    
  •   
  • // 输入框获得焦Ҏ(gu)Q样式设|?nbsp;   
  • $('input').focus(function(){    
  •   if($(this).is(":text") || $(this).is(":password"))    
  •    $(this).addClass('focus');    
  •   if ($(this).hasClass('have_tooltip')) {    
  •    $(this).parent().parent().removeClass('field_normal').addClass('field_focus');    
  •   }    
  • });    
  •   
  • // 输入框失ȝҎ(gu)Q样式设|?nbsp;   
  • $('input').blur(function() {    
  •   $(this).removeClass('focus');    
  •   if ($(this).hasClass('have_tooltip')) {    
  •    $(this).parent().parent().removeClass('field_focus').addClass('field_normal');    
  •   }    
  • });    
  • });   


  • ]]>
    jquery validate demohttp://www.aygfsteel.com/zuofei-bie/archive/2010/03/31/317063.html别昨?/dc:creator>别昨?/author>Wed, 31 Mar 2010 07:27:00 GMThttp://www.aygfsteel.com/zuofei-bie/archive/2010/03/31/317063.htmlhttp://www.aygfsteel.com/zuofei-bie/comments/317063.htmlhttp://www.aygfsteel.com/zuofei-bie/archive/2010/03/31/317063.html#Feedback3http://www.aygfsteel.com/zuofei-bie/comments/commentRss/317063.htmlhttp://www.aygfsteel.com/zuofei-bie/services/trackbacks/317063.html<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <title>jQuery validation plug-in - main demo</title>

    <link rel="stylesheet" type="text/css" media="screen" href="css/screen.css" />

    <script src="../lib/jquery.js" type="text/javascript"></script>
    <script src="../jquery.validate.js" type="text/javascript"></script>

    <script type="text/javascript">
    $.validator.setDefaults({
     submitHandler: function() { alert("submitted!"); }
    });

    $().ready(function() {
     // validate the comment form when it is submitted
     $("#commentForm").validate();
     
     // validate signup form on keyup and submit
     $("#signupForm").validate({
      rules: {
       firstname: "required",
       lastname: "required",
       username: {
        required: true,
        minlength: 2
       },
       password: {
        required: true,
        minlength: 5
       },
       confirm_password: {
        required: true,
        minlength: 5,
        equalTo: "#password"
       },
       email: {
        required: true,
        email: true
       },
       topic: {
        required: "#newsletter:checked",
        minlength: 2
       },
       agree: "required"
      },
      messages: {
       firstname: "Please enter your firstname",
       lastname: "Please enter your lastname",
       username: {
        required: "Please enter a username",
        minlength: "Your username must consist of at least 2 characters"
       },
       password: {
        required: "Please provide a password",
        minlength: "Your password must be at least 5 characters long"
       },
       confirm_password: {
        required: "Please provide a password",
        minlength: "Your password must be at least 5 characters long",
        equalTo: "Please enter the same password as above"
       },
       email: "Please enter a valid email address",
       agree: "Please accept our policy"
      }
     });
     
     // propose username by combining first- and lastname
     $("#username").focus(function() {
      var firstname = $("#firstname").val();
      var lastname = $("#lastname").val();
      if(firstname && lastname && !this.value) {
       this.value = firstname + "." + lastname;
      }
     });
     
     //code to hide topic selection, disable for demo
     var newsletter = $("#newsletter");
     // newsletter topics are optional, hide at first
     var inital = newsletter.is(":checked");
     var topics = $("#newsletter_topics")[inital ? "removeClass" : "addClass"]("gray");
     var topicInputs = topics.find("input").attr("disabled", !inital);
     // show when newsletter is checked
     newsletter.click(function() {
      topics[this.checked ? "removeClass" : "addClass"]("gray");
      topicInputs.attr("disabled", !this.checked);
     });
    });
    </script>

    <style type="text/css">
    #commentForm { width: 500px; }
    #commentForm label { width: 250px; }
    #commentForm label.error, #commentForm input.submit { margin-left: 253px; }
    #signupForm { width: 670px; }
    #signupForm label.error {
     margin-left: 10px;
     width: auto;
     display: inline;
    }
    #newsletter_topics label.error {
     display: none;
     margin-left: 103px;
    }
    </style>

    </head>
    <body>

    <h1 id="banner"><a >jQuery Validation Plugin</a> Demo</h1>
    <div id="main">

    <p>Default submitHandler is set to display an alert into of submitting the form</p>

    <form class="cmxform" id="commentForm" method="get" action="">
     <fieldset>
      <legend>Please provide your name, email address (won't be published) and a comment</legend>
      <p>
       <label for="cname">Name (required, at least 2 characters)</label>
       <input id="cname" name="name" class="required" minlength="2" />
      <p>
       <label for="cemail">E-Mail (required)</label>
       <input id="cemail" name="email" class="required email" />
      </p>
      <p>
       <label for="curl">URL (optional)</label>
       <input id="curl" name="url" class="url" value="" />
      </p>
      <p>
       <label for="ccomment">Your comment (required)</label>
       <textarea id="ccomment" name="comment" class="required"></textarea>
      </p>
      <p>
       <input class="submit" type="submit" value="Submit"/>
      </p>
     </fieldset>
    </form>

    <form class="cmxform" id="signupForm" method="get" action="">
     <fieldset>
      <legend>Validating a complete form</legend>
      <p>
       <label for="firstname">Firstname</label>
       <input id="firstname" name="firstname" />
      </p>
      <p>
       <label for="lastname">Lastname</label>
       <input id="lastname" name="lastname" />
      </p>
      <p>
       <label for="username">Username</label>
       <input id="username" name="username" />
      </p>
      <p>
       <label for="password">Password</label>
       <input id="password" name="password" type="password" />
      </p>
      <p>
       <label for="confirm_password">Confirm password</label>
       <input id="confirm_password" name="confirm_password" type="password" />
      </p>
      <p>
       <label for="email">Email</label>
       <input id="email" name="email" />
      </p>
      <p>
       <label for="agree">Please agree to our policy</label>
       <input type="checkbox" class="checkbox" id="agree" name="agree" />
      </p>
      <p>
       <label for="newsletter">I'd like to receive the newsletter</label>
       <input type="checkbox" class="checkbox" id="newsletter" name="newsletter" />
      </p>
      <fieldset id="newsletter_topics">
       <legend>Topics (select at least two) - note: would be hidden when newsletter isn't selected, but is visible here for the demo</legend>
       <label for="topic_marketflash">
        <input type="checkbox" id="topic_marketflash" value="marketflash" name="topic" />
        Marketflash
       </label>
       <label for="topic_fuzz">
        <input type="checkbox" id="topic_fuzz" value="fuzz" name="topic" />
        Latest fuzz
       </label>
       <label for="topic_digester">
        <input type="checkbox" id="topic_digester" value="digester" name="topic" />
        Mailing list digester
       </label>
       <label for="topic" class="error">Please select at least two topics you'd like to receive.</label>
      </fieldset>
      <p>
       <input class="submit" type="submit" value="Submit"/>
      </p>
     </fieldset>
    </form>

    <h3>Syntetic examples</h3>
    <ul>
     <li><a href="errorcontainer-demo.html">Error message containers in action</a></li>
     <li><a href="custom-messages-metadata-demo.html">Custom Messages as Metadata</a></li>
     <li><a href="radio-checkbox-select-demo.html">Radio and checkbox buttons and selects</a></li>
     <li><a href="ajaxSubmit-intergration-demo.html">Integration with Form Plugin (AJAX submit)</a></li>
     <li><a href="custom-methods-demo.html">Custom methods and message display.</a></li>
     <li><a href="dynamic-totals.html">Dynamic forms</a></li>
     <li><a href="themerollered.html">Forms styled with jQuery UI Themeroller</a></li>
    </ul>
    <h3>Real-world examples</h3>
    <ul>
     <li><a href="milk/">Remember The Milk signup form</a></li>
     <li><a href="marketo/">Marketo signup form</a></li>
     <li><a href="multipart/">Buy and Sell a House multipart form</a></li>
     <li><a href="captcha/">Remote captcha validation</a></li>
    </ul>

    <h3>Testsuite</h3>
    <ul>
     <li><a href="../test/">Validation Testsuite</a></li>
    </ul> 

    </div>

    <script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
    </script>
    <script type="text/javascript">
    _uacct = "UA-2623402-1";
    urchinTracker();
    </script>
    </body>
    </html>



    ]]>
    [转] 常用 JPA annotation 参?http://www.aygfsteel.com/zuofei-bie/archive/2010/03/24/316474.html别昨?/dc:creator>别昨?/author>Wed, 24 Mar 2010 13:07:00 GMThttp://www.aygfsteel.com/zuofei-bie/archive/2010/03/24/316474.htmlhttp://www.aygfsteel.com/zuofei-bie/comments/316474.htmlhttp://www.aygfsteel.com/zuofei-bie/archive/2010/03/24/316474.html#Feedback0http://www.aygfsteel.com/zuofei-bie/comments/commentRss/316474.htmlhttp://www.aygfsteel.com/zuofei-bie/services/trackbacks/316474.htmlTable
    Table用来定义entity主表的nameQcatalogQschema{属性?
    元数据属性说明:
    · name: 表名
    · catalog: 对应关系数据库中的catalog
    · schemaQ对应关pL据库中的schema
    · UniqueConstraints:定义一个UniqueConstraint数组Q指定需要徏唯一U束的列
            
    @Entity
    @Table(name="CUST")
    public class Customer { ... }
      
    SecondaryTable
    一个entity class可以映射到多表,SecondaryTable用来定义单个从表的名字,主键名字{属性?
    元数据属性说明:
    · name: 表名
    · catalog: 对应关系数据库中的catalog
    · schemaQ对应关pL据库中的schema
    · pkJoin: 定义一个PrimaryKeyJoinColumn数组Q指定从表的主键?
    · UniqueConstraints:定义一个UniqueConstraint数组Q指定需要徏唯一U束的列
    下面的代码说明CustomercL到两个表,主表名是CUSTOMERQ从表名是CUST_DETAILQ从表的主键列和主表的主键列cd相同Q列名ؓCUST_ID?
            
    @Entity
    @Table(name="CUSTOMER")
    @SecondaryTable(name="CUST_DETAIL",pkJoin=@PrimaryKeyJoinColumn(name="CUST_ID"))
    public class Customer { ... }

    SecondaryTables
    当一个entity class映射C个主表和多个从表Ӟ用SecondaryTables来定义各个从表的属性?
    元数据属性说明:
    · valueQ?定义一个SecondaryTable数组Q指定每个从表的属性?
            
    @Table(name = "CUSTOMER")
    @SecondaryTables( value = {
    @SecondaryTable(name = "CUST_NAME", pkJoin = { @PrimaryKeyJoinColumn(name = "STMO_ID", referencedColumnName = "id") }),
    @SecondaryTable(name = "CUST_ADDRESS", pkJoin = { @PrimaryKeyJoinColumn(name = "STMO_ID", referencedColumnName = "id") }) })
    public class Customer {}

    UniqueConstraint
    UniqueConstraint定义在Table或SecondaryTable元数据里Q用来指定徏表时需要徏唯一U束的列?
    元数据属性说明:
    · columnNames:定义一个字W串数组Q指定要建唯一U束的列名?
            
    @Entity
    @Table(name="EMPLOYEE",
    uniqueConstraints={@UniqueConstraint(columnNames={"EMP_ID", "EMP_NAME"})}
    )
    public class Employee { ... }

    Column
    Column元数据定义了映射到数据库的列的所有属性:列名Q是否唯一Q是否允ؓI,是否允许更新{?
    元数据属性说明:
    · name:列名?
    · unique: 是否唯一
    · nullable: 是否允许为空
    · insertable: 是否允许插入
    · updatable: 是否允许更新
    · columnDefinition: 定义时创建此列的DDL
    · secondaryTable: 从表名。如果此列不建在主表上(默认建在主表Q,该属性定义该列所在从表的名字?
            
    public class Person {
    @Column(name = "PERSONNAME", unique = true, nullable = false, updatable = true)
    private String name;
    @Column(name = "PHOTO", columnDefinition = "BLOB NOT NULL", secondaryTable="PER_PHOTO")
    private byte[] picture;

    JoinColumn
    如果在entity class的field上定义了关系Qone2one或one2many{)Q我们通过JoinColumn来定义关pȝ属性。JoinColumn的大部分属性和ColumncM?
    元数据属性说明:
    · name:列名?
    · referencedColumnName:该列指向列的列名Q徏表时该列作ؓ外键列指向关pd一端的指定列)
    · unique: 是否唯一
    · nullable: 是否允许为空
    · insertable: 是否允许插入
    · updatable: 是否允许更新
    · columnDefinition: 定义时创建此列的DDL
    · secondaryTable: 从表名。如果此列不建在主表上(默认建在主表Q,该属性定义该列所在从表的名字?
    下面的代码说明Custom和Order是一对一关系。在Order对应的映表Z个名为CUST_ID的列Q该列作为外键指向Custom对应表中名ؓID的列?
            
    public class Custom {
    @OneToOne
    @JoinColumn(
    name="CUST_ID", referencedColumnName="ID", unique=true, nullable=true, updatable=true)
    public Order getOrder() {
    return order;
    }

    JoinColumns
    如果在entity class的field上定义了关系Qone2one或one2many{)Qƈ且关pd在多个JoinColumnQ用JoinColumns定义多个JoinColumn的属性?
    元数据属性说明:
    · value: 定义JoinColumn数组Q指定每个JoinColumn的属性?
    下面的代码说明Custom和Order是一对一关系。在Order对应的映表Z列,一列名为CUST_IDQ该列作为外键指向Custom对应表中名ؓID的列,另一列名为CUST_NAMEQ该列作为外键指向Custom对应表中名ؓNAME的列?
            
    public class Custom {
    @OneToOne
    @JoinColumns({
    @JoinColumn(name="CUST_ID", referencedColumnName="ID"),
    @JoinColumn(name="CUST_NAME", referencedColumnName="NAME")
    })
    public Order getOrder() {
    return order;
    }

    Id
    声明当前field为映表中的主键列。id值的获取方式有五U:TABLE, SEQUENCE, IDENTITY, AUTO, NONE。Oracle和DB2支持SEQUENCEQSQL Server和Sybase支持IDENTITY,mysql支持AUTO。所有的数据库都可以指定为AUTOQ我们会Ҏ(gu)不同数据库做转换。NONE (默认)需要用戯己指定Id的倹{元数据属性说明:
    · generate():主键值的获取cd
    · generator():TableGenerator的名字(当generate=GeneratorType.TABLE才需要指定该属性)
    下面的代码声明Task的主键列id是自动增长的?Oracle和DB2从默认的SEQUENCE取|SQL Server和Sybase该列建成IDENTITYQmysql该列建成auto increment?
            
    @Entity
    @Table(name = "OTASK")
    public class Task {
    @Id(generate = GeneratorType.AUTO)
    public Integer getId() {
    return id;
    }
    }

    IdClass
    当entity class使用复合主键Ӟ需要定义一个类作ؓid class。id class必须W合以下要求:cdd明ؓpublicQƈ提供一个声明ؓpublic的空构造函数。必d现Serializable接,覆写 equals()和hashCodeQ)Ҏ(gu)。entity class的所有id field在id class都要定义Q且cd一栗?
    元数据属性说明:
    · value: id class的类?
       public class EmployeePK implements Java.io.Serializable{
           String empName;
           Integer empAge;

           public EmployeePK(){}
           public boolean equals(Object obj){ ......}
           public int hashCode(){......}
        }

        @IdClass(value=com.acme.EmployeePK.class)
        @Entity(access=FIELD)
        public class Employee {
            @Id String empName;
            @Id Integer empAge;
        }
        
         
    MapKey
    在一对多Q多对多关系中,我们可以用Map来保存集合对象。默认用主键值做keyQ如果用复合主键,则用id class的实例做keyQ如果指定了name属性,q指定的field的值做key?
    元数据属性说明:
    · name: 用来做key的field名字
    下面的代码说明Person和Book之间是一对多关系。Person的books字段是MapcdQ用Book的isbn字段的g为Map的key?
            

    @Table(name = "PERSON")
    public class Person {
    @OneToMany(targetEntity = Book.class, cascade = CascadeType.ALL, mappedBy = "person")
    @MapKey(name = "isbn")
    private Map books = new HashMap();
    }


    OrderBy
    在一对多Q多对多关系中,有时我们希望从数据库加蝲出来的集合对象是按一定方式排序的Q这可以通过OrderBy来实玎ͼ默认是按对象的主键升序排列?
    元数据属性说明:
    · value: 字符串类型,指定排序方式。格式ؓ"fieldName1 [ASC|DESC],fieldName2 [ASC|DESC],......",排序cd可以不指定,默认是ASC?
    下面的代码说明Person和Book之间是一对多关系。集合books按照Book的isbn升序Qname降序排列?
            

    @Table(name = "MAPKEY_PERSON")
    public class Person {
    @OneToMany(targetEntity = Book.class, cascade = CascadeType.ALL, mappedBy = "person")
    @OrderBy(name = "isbn ASC, name DESC")
    private List books = new ArrayList();
    }


    PrimaryKeyJoinColumn
    在三U情况下会用到PrimaryKeyJoinColumn?
    · l承?
    · entity class映射C个或多个从表。从表根据主表的主键列(列名为referencedColumnName值的列)Q徏立一个类型一L主键列,列名由name属性定义?
    · one2one关系Q关pȝ护端的主键作为外键指向关p被l护端的主键Q不再新Z个外键列?
    元数据属性说明:
    · name:列名?
    · referencedColumnName:该列引用列的列名
    · columnDefinition: 定义时创建此列的DDL
    下面的代码说明Customer映射C个表Q主表CUSTOMER,从表CUST_DETAILQ从表需要徏立主键列CUST_IDQ该列和主表的主键列id除了列名不同Q其他定义一栗?
              @Entity
    @Table(name="CUSTOMER")
    @SecondaryTable(name="CUST_DETAIL",pkJoin=@PrimaryKeyJoinColumn(name="CUST_ID"QreferencedColumnName="id"))
    public class Customer {
    @Id(generate = GeneratorType.AUTO)
    public Integer getId() {
    return id;
    }
    }

    下面的代码说明Employee和EmployeeInfo是一对一关系QEmployee的主键列id作ؓ外键指向EmployeeInfo的主键列INFO_ID?
            
    @Table(name = "Employee")
    public class Employee {
    @OneToOne
    @PrimaryKeyJoinColumn(name = "id", referencedColumnName="INFO_ID")
    EmployeeInfo info;
    }

    PrimaryKeyJoinColumns
    如果entity class使用了复合主键,指定单个PrimaryKeyJoinColumn不能满要求Ӟ可以用PrimaryKeyJoinColumns来定义多个PrimaryKeyJoinColumn?
    元数据属性说明:
    · value: 一个PrimaryKeyJoinColumn数组Q包含所有PrimaryKeyJoinColumn?
    下面的代码说明了Employee和EmployeeInfo是一对一关系。他们都使用复合主键Q徏表时需要在Employee表徏立一个外键,从Employee的主键列id,name指向EmployeeInfo的主键列INFO_ID和INFO_NAME.
            
    @Entity
    @IdClass(EmpPK.class)
    @Table(name = "EMPLOYEE")
    public class Employee {
    private int id;
    private String name;
    private String address;
    @OneToOne(cascade = CascadeType.ALL)
    @PrimaryKeyJoinColumns({
    @PrimaryKeyJoinColumn(name="id", referencedColumnName="INFO_ID"),
    @PrimaryKeyJoinColumn(name="name" , referencedColumnName="INFO_NAME")})
    EmployeeInfo info;
    }
    @Entity
    @IdClass(EmpPK.class)
    @Table(name = "EMPLOYEE_INFO")
    public class EmployeeInfo {
    @Id
    @Column(name = "INFO_ID")
    private int id;
    @Id
    @Column(name = "INFO_NAME")
    private String name;
    }

    Transient
    Transient用来注释entity的属性,指定的这些属性不会被持久化,也不会ؓq些属性徏表?
            
    @Transient
    private String name;

    Version
    Version指定实体cd乐观事务中的version属性。在实体c重新由EntityManager理q且加入C观事务中Ӟ保证完整性。每一个类只能有一个属性被指定为versionQversion属性应该映到实体cȝ主表上?
    下面的代码说明versionNum属性作个类的versionQ映到数据库中主表的列名是OPTLOCK?
            
    @Version
    @Column("OPTLOCK")
    protected int getVersionNum() { return versionNum; }

    Lob
    Lob指定一个属性作为数据库支持的大对象cd在数据库中存储。用LobTypeq个枚D来定义Lob是二q制cdq是字符cd?
    LobType枚Dcd说明Q?
    · BLOB 二进制大对象QByte[]或者Serializable的类型可以指定ؓBLOB?
    · CLOB 字符型大对象Qchar[]、Character[]或Stringcd可以指定为CLOB?
    元数据属性说明:
    · fetchQ?定义q个字段是lazy loadedq是eagerly fetched。数据类型是FetchType枚DQ默认ؓLAZY,即lazy loaded.
    · typeQ?定义q个字段在数据库中的JDBC数据cd。数据类型是LobType枚DQ默认ؓBLOB?
    下面的代码定义了一个BLOBcd的属性和一个CLOBcd的属性?
            
    @Lob
    @Column(name="PHOTO" columnDefinition="BLOB NOT NULL")
    protected JPEGImage picture;
    @Lob(fetch=EAGER, type=CLOB)
    @Column(name="REPORT")
    protected String report;

    JoinTable
    JoinTable在many-to-many关系的所有者一边定义。如果没有定义JoinTableQ用JoinTable的默认倹{?
    元数据属性说明:
    · table:q个join table的Table定义?
    · joinColumns:定义指向所有者主表的外键列,数据cd是JoinColumn数组?
    · inverseJoinColumns:定义指向非所有者主表的外键列,数据cd是JoinColumn数组?
    下面的代码定义了一个连接表CUST和PHONE的join table。join table的表名是CUST_PHONEQ包含两个外键,一个外键是CUST_IDQ指向表CUST的主键IDQ另一个外键是PHONE_IDQ指向表PHONE的主键ID?
            
    @JoinTable(
    table=@Table(name=CUST_PHONE),
    joinColumns=@JoinColumn(name="CUST_ID", referencedColumnName="ID"),
    inverseJoinColumns=@JoinColumn(name="PHONE_ID", referencedColumnName="ID")
    )

    TableGenerator
    TableGenerator定义一个主键值生成器Q在Idq个元数据的generateQTABLEӞgenerator属性中可以使用生成器的名字。生成器可以在类、方法或者属性上定义?
    生成器是为多个实体类提供q箋的ID值的表,每一行ؓ一个类提供ID|ID值通常是整数?
    元数据属性说明:
    · name:生成器的唯一名字Q可以被Id元数据用?
    · table:生成器用来存储id值的Table定义?
    · pkColumnName:生成器表的主键名U?
    · valueColumnName:生成器表的ID值的列名U?
    · pkColumnValue:生成器表中的一行数据的主键倹{?
    · initialValue:id值的初始倹{?
    · allocationSize:id值的增量?
    下面的代码定义了两个生成器empGen和addressGenQ生成器的表是ID_GEN?
            
    @Entity public class Employee {
    ...
    @TableGenerator(name="empGen",
    table=@Table(name="ID_GEN"),
    pkColumnName="GEN_KEY",
    valueColumnName="GEN_VALUE",
    pkColumnValue="EMP_ID",
    allocationSize=1)
    @Id(generate=TABLE, generator="empGen")
    public int id;
    ...
    }
    @Entity public class Address {
    ...
    @TableGenerator(name="addressGen",
    table=@Table(name="ID_GEN"),
    pkColumnValue="ADDR_ID")
    @Id(generate=TABLE, generator="addressGen")
    public int id;
    ...
    }

    SequenceGenerator
    SequenceGenerator定义一个主键值生成器Q在Idq个元数据的generator属性中可以使用生成器的名字。生成器可以在类、方法或者属性上定义。生成器是数据库支持的sequence对象?
    元数据属性说明:
    · name:生成器的唯一名字Q可以被Id元数据用?
    · sequenceName:数据库中Qsequence对象的名U。如果不指定Q会使用提供商指定的默认名称?
    · initialValue:id值的初始倹{?
    · allocationSize:id值的增量?
    下面的代码定义了一个用提供商默认名称的sequence生成器?
            
    @SequenceGenerator(name="EMP_SEQ", allocationSize=25)

    DiscriminatorColumn
    DiscriminatorColumn定义在用SINGLE_TABLE或JOINEDl承{略的表中区别不l承层次的列?
    元数据属性说明:
    · name:column的名字。默认gؓTYPE?
    · columnDefinition:生成DDL的sql片断?
    · length:Stringcd的column的长度,其他cd使用默认?0?
    下面的代码定义了一个列名ؓDISCQ长度ؓ20的Stringcd的区别列?
            
    @Entity
    @Table(name="CUST")
    @Inheritance(strategy=SINGLE_TABLE,
    discriminatorType=STRING,
    discriminatorValue="CUSTOMER")
    @DiscriminatorColumn(name="DISC", length=20)
    public class Customer { ... }

     



    ]]>
    List and ArrayList and LinkList 区别与用?/title><link>http://www.aygfsteel.com/zuofei-bie/archive/2010/03/22/316159.html</link><dc:creator>别昨?/dc:creator><author>别昨?/author><pubDate>Mon, 22 Mar 2010 06:46:00 GMT</pubDate><guid>http://www.aygfsteel.com/zuofei-bie/archive/2010/03/22/316159.html</guid><wfw:comment>http://www.aygfsteel.com/zuofei-bie/comments/316159.html</wfw:comment><comments>http://www.aygfsteel.com/zuofei-bie/archive/2010/03/22/316159.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/zuofei-bie/comments/commentRss/316159.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/zuofei-bie/services/trackbacks/316159.html</trackback:ping><description><![CDATA[List and  ArrayList: <br /> 1、List是一个接口,ArrayList是一个实CList接口的具体类?他们是父子关p,我们常用的是ArrayList,但常用List的引用去操作ArrayList q是一个简单的面向接口~程的一U,如:List myList = new ArrayList(); <br /> 2、他们主要是用来保存对象的集合,记得是保存对象的哦,你可别传个intq去?<br /> 3、要取出它里面保存的对象可以用下标,如:Object aaa = myList.get(0); q样我们把保存在myList里的W一个对象取出来l了 aaa 啦?br /> <br />  ArrayList:<br /> <p style="margin: 0cm 0cm 0pt" class="MsoNormal">ArrayList其实是包装了一?font color="#800000"><span style="background-color: rgb(255,255,255)">数组</font></span>Object[]Q当实例化一个ArrayListӞ一个数l也被实例化Q当向ArrayList中添加对象是Q数l的大小也相应的改变。这样就带来以下有特点:</p> <p style="margin: 0cm 0cm 0pt" class="MsoNormal"><strong>快速随卌?/strong> 你可以随卌问每个元素而不用考虑性能问题Q通过调用get(i)Ҏ(gu)来访问下标ؓi的数l元素?/p> <p style="margin: 0cm 0cm 0pt" class="MsoNormal"><strong>向其中添加对象速度?/strong> 当你创徏数组是ƈ不能定其容量,所以当改变q个数组时就必须在内存中做很多事情?/p> <p style="margin: 0cm 0cm 0pt" class="MsoNormal"><strong>操作其中对象的速度?/strong> 当你要想数组中Q意两个元素中间添加对象时Q数l需要移动所有后面的对象?<br /> <br /> LinkList:<br /> </p> <p style="margin: 0cm 0cm 0pt" class="MsoNormal">LinkedList是通过<font color="#ff0000">节点直接彼此q接</font>来实现的。每一个节炚w包含前一个节点的引用Q后一个节点的引用和节点存储的倹{当一个新节点插入Ӟ只需要修改其中保持先后关pȝ节点的引用即可,当删除记录时也一栗这样就带来以下有特点:</p> <p style="margin: 0cm 0cm 0pt" class="MsoNormal"><strong>操作其中对象的速度?</strong>只需要改变连接,新的节点可以在内存中的Q何地?/p> <p style="margin: 0cm 0cm 0pt" class="MsoNormal"><strong>不能随即讉K</strong> 虽然存在get()Ҏ(gu)Q但是这个方法是通过遍历接点来定位的所以速度慢?br /> <br /> <strong><span>一些结论:</span></strong><br /> <span>当一些被定义好的数据需要放C数组对应?/span><span lang="EN-US">List</span><span>中,</span><span lang="EN-US"><span id="wmqeeuq" class="hilite1">ArrayList</span></span><span>是很好的选择Q因为它可以动态变化,但是不要在整个应用程序中频繁的用?br /> 你要很方便的操作其中的数据而不用随卌问时;<span lang="EN-US">LinkList</span><span>是很好的选择。如果你要频J随问徏议用ArrayList?/span></span></p> <br /> <img src ="http://www.aygfsteel.com/zuofei-bie/aggbug/316159.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/zuofei-bie/" target="_blank">别昨?/a> 2010-03-22 14:46 <a href="http://www.aygfsteel.com/zuofei-bie/archive/2010/03/22/316159.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Lang comparehttp://www.aygfsteel.com/zuofei-bie/archive/2010/03/22/316153.html别昨?/dc:creator>别昨?/author>Mon, 22 Mar 2010 05:56:00 GMThttp://www.aygfsteel.com/zuofei-bie/archive/2010/03/22/316153.htmlhttp://www.aygfsteel.com/zuofei-bie/comments/316153.htmlhttp://www.aygfsteel.com/zuofei-bie/archive/2010/03/22/316153.html#Feedback0http://www.aygfsteel.com/zuofei-bie/comments/commentRss/316153.htmlhttp://www.aygfsteel.com/zuofei-bie/services/trackbacks/316153.html

    ]]>
    վ֩ģ壺 | կ| | | | ű| | | ʩ| | | ű| | | ؿ˹| | | Ǹ| | н| ʯ| | | | | | | ɽ| ɽ| | Ӧ| ƽ| »| ͼľ| | | ˮ| | | | |