置頂隨筆

          [置頂]Email驗證的正則表達式

                這個Email驗證的正則表達式基本符合RFC3521規范,缺少ipv6部分的驗證。

                  Mail=("([\\x20-\\x21\\x23-\\x5B\\x5D-\\x7E]|(\\\\[\\x20-\\x7E]))*"|^[-!#$%&\'*+/0-9=?A-Z\\^_`a-z{|}~]+(.[-!#$%&\'*+/0-9=?A-Z\\^_`a-z{|}~]+)*)@([a-zA-Z0-9]+([\\-\\da-zA-Z]*[a-zA-Z0-9]+)*(\\.[a-zA-Z\\d]+([\\-\\da-zA-Z]*[a-zA-Z0-9]+)*)*|[\\[]((1[0-9][0-9]|25[0-5]|2[0-4][0-9]|0[0-9][0-9]|00[0-9]|[0-9][0-9]|[0-9])\\.(1[0-9][0-9]|25[0-5]|2[0-4][0-9]|0[0-9][0-9]|00[0-9]|[0-9][0-9]|[0-9])\\.(1[0-9][0-9]|25[0-5]|2[0-4][0-9]|0[0-9][0-9]|00[0-9]|[0-9][0-9]|[0-9])\\.(1[0-9][0-9]|25[0-5]|2[0-4][0-9]|0[0-9][0-9]|00[0-9]|[0-9][0-9]|[0-9]))[\\]]|((1[0-9][0-9]|25[0-5]|2[0-4][0-9]|0[0-9][0-9]|00[0-9]|[0-9][0-9]|[0-9])\\.(1[0-9][0-9]|25[0-5]|2[0-4][0-9]|0[0-9][0-9]|00[0-9]|[0-9][0-9]|[0-9])\\.(1[0-9][0-9]|25[0-5]|2[0-4][0-9]|0[0-9][0-9]|00[0-9]|[0-9][0-9]|[0-9])\\.(1[0-9][0-9]|25[0-5]|2[0-4][0-9]|0[0-9][0-9]|00[0-9]|[0-9][0-9]|[0-9])))
                RFC3521中的相關定義:
                        Domain         = sub-domain *("." sub-domain)
                        sub-domain     = Let-dig [Ldh-str]

             Let-dig        = ALPHA / DIGIT

             Ldh-str        = *( ALPHA / DIGIT / "-" ) Let-dig

             address-literal  = "[" ( IPv4-address-literal /
                              IPv6-address-literal /
                              General-address-literal ) "]"
                              ; See Section 4.1.3

             Mailbox        = Local-part "@" ( Domain / address-literal )

             Local-part     = Dot-string / Quoted-string
                            ; MAY be case-sensitive


             Dot-string     = Atom *("."  Atom)

             Atom           = 1*atext

             Quoted-string  = DQUOTE *QcontentSMTP DQUOTE

             QcontentSMTP   = qtextSMTP / quoted-pairSMTP

             quoted-pairSMTP  = %d92 %d32-126
                              ; i.e., backslash followed by any ASCII
                              ; graphic (including itself) or SPace

             qtextSMTP      = %d32-33 / %d35-91 / %d93-126
                            ; i.e., within a quoted string, any
                            ; ASCII graphic or space is permitted
                            ; without blackslash-quoting except
                            ; double-quote and the backslash itself.

          posted @ 2008-12-19 13:21 范永強 閱讀(6777) | 評論 (4)編輯 收藏

          2008年12月19日

          Email驗證的正則表達式

                這個Email驗證的正則表達式基本符合RFC3521規范,缺少ipv6部分的驗證。

                  Mail=("([\\x20-\\x21\\x23-\\x5B\\x5D-\\x7E]|(\\\\[\\x20-\\x7E]))*"|^[-!#$%&\'*+/0-9=?A-Z\\^_`a-z{|}~]+(.[-!#$%&\'*+/0-9=?A-Z\\^_`a-z{|}~]+)*)@([a-zA-Z0-9]+([\\-\\da-zA-Z]*[a-zA-Z0-9]+)*(\\.[a-zA-Z\\d]+([\\-\\da-zA-Z]*[a-zA-Z0-9]+)*)*|[\\[]((1[0-9][0-9]|25[0-5]|2[0-4][0-9]|0[0-9][0-9]|00[0-9]|[0-9][0-9]|[0-9])\\.(1[0-9][0-9]|25[0-5]|2[0-4][0-9]|0[0-9][0-9]|00[0-9]|[0-9][0-9]|[0-9])\\.(1[0-9][0-9]|25[0-5]|2[0-4][0-9]|0[0-9][0-9]|00[0-9]|[0-9][0-9]|[0-9])\\.(1[0-9][0-9]|25[0-5]|2[0-4][0-9]|0[0-9][0-9]|00[0-9]|[0-9][0-9]|[0-9]))[\\]]|((1[0-9][0-9]|25[0-5]|2[0-4][0-9]|0[0-9][0-9]|00[0-9]|[0-9][0-9]|[0-9])\\.(1[0-9][0-9]|25[0-5]|2[0-4][0-9]|0[0-9][0-9]|00[0-9]|[0-9][0-9]|[0-9])\\.(1[0-9][0-9]|25[0-5]|2[0-4][0-9]|0[0-9][0-9]|00[0-9]|[0-9][0-9]|[0-9])\\.(1[0-9][0-9]|25[0-5]|2[0-4][0-9]|0[0-9][0-9]|00[0-9]|[0-9][0-9]|[0-9])))
                RFC3521中的相關定義:
                        Domain         = sub-domain *("." sub-domain)
                        sub-domain     = Let-dig [Ldh-str]

             Let-dig        = ALPHA / DIGIT

             Ldh-str        = *( ALPHA / DIGIT / "-" ) Let-dig

             address-literal  = "[" ( IPv4-address-literal /
                              IPv6-address-literal /
                              General-address-literal ) "]"
                              ; See Section 4.1.3

             Mailbox        = Local-part "@" ( Domain / address-literal )

             Local-part     = Dot-string / Quoted-string
                            ; MAY be case-sensitive


             Dot-string     = Atom *("."  Atom)

             Atom           = 1*atext

             Quoted-string  = DQUOTE *QcontentSMTP DQUOTE

             QcontentSMTP   = qtextSMTP / quoted-pairSMTP

             quoted-pairSMTP  = %d92 %d32-126
                              ; i.e., backslash followed by any ASCII
                              ; graphic (including itself) or SPace

             qtextSMTP      = %d32-33 / %d35-91 / %d93-126
                            ; i.e., within a quoted string, any
                            ; ASCII graphic or space is permitted
                            ; without blackslash-quoting except
                            ; double-quote and the backslash itself.

          posted @ 2008-12-19 13:21 范永強 閱讀(6777) | 評論 (4)編輯 收藏

          2008年8月15日

          Apache HTTP Server 與Tomcat的整合

               既然 Tomcat 本身已可以提供這樣的服,我們為么還要引入 Apache 或者其他的一些專門 HTTP 器呢?原因有下面幾個:

          1. 提升文件的理性能
          2. 利用 Web 器來做負載均衡以及容
          3. 的升級應用程

          原理:

             tomcat 為一個servelet容器,apache為一個web server,兩者之間通信通過mod_jk的模塊(由web服務器像apache、iis等使用)和Web Server通信Tomcat AJP Connector 的端口是 8009.整個過程其實就是讓apache的httpd.conf文件調用mod_jk.conf,mod_jk.conf調用workers.properties,最后配置虛擬主機。

          文件說明

          mod_jk.conf

          主要定義mod_jk模塊的位置以及mod_jk模塊的連接日志設置,還有定義worker.properties文件的位置。
          worker.properties
          定義worker的參數,主要是連接tomcat主機的地址和端口信息。如果Tomcat與apache不在同一臺機器上,或者需要做多臺機器上tomcat的負載均衡只需要更改workers.properties文件中的相應定義即可。

          APACHE_HOME為你的安裝目錄 

          整合

          1、準備下載下列文件

          Jdk1.5
          下載地址: http://java.sun.com
          tomcat 5.5.9
          下載地址:http://jakarta.apache.org
          apache_2.2.4-win32-x86-no_ssl.msi
          下載地址: http://httpd.apache.org/download.cgi
          mod_jkapache-2.2.3.so

          下載地址:http://archive.apache.org/dist/jakarta/tomcat-connectors/

          2安裝Jdktomcatapache,加入mod_jk連接模塊,就是把mod_jkapache-2.2.3.so文件重名mod_jk.so文件并拷到%APACHE_HOME"modules

          3、修改apache的配置文件:

          為了保持httpd.conf文件的簡潔,把jk模塊的配置放到單獨的文件中來,就在httpd.conf中增加一行調用
          代碼
           include APACHE_HOMEApache2"conf"mod_jk.conf

          4:配置mod_jk.conf
          請注意使用絕對路徑
          其實最關鍵的就是 第一條 第二條 和最后一條,如果要精簡,就保留這三條內容就可以了。
          代碼
          # Load mod_jk module

          LoadModule jk_module "E:"Program Files"Apache Software Foundation"Apache2.2"modules"mod_jk.so"

          # Where to find workers.properties

          JkWorkersFile "E:"Program Files"Apache Software Foundation"Apache2.2"conf"workers.properties"

          # Where to put jk logs

          JkLogFile "E:"Program Files"Apache Software Foundation"Apache2.2"logs"mod_jk.log"

          # Set the jk log level [debug/error/info]

          JkLogLevel info

          # Select the log format

          JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

          # JkOptions indicate to send SSL KEY SIZE

          JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

          # JkRequestLogFormat set the request format

          JkRequestLogFormat "%w %V %T"

          # Send servlet for context /examples to worker named ajp13

          #JkMount /servlet/* ajp13

          # Send JSPs for context /examples to worker named ajp13

          JkMount /*.jsp ajp13

          JkMount /*.do ajp13

          上面這一行我們設置了了 /*.jsp ajp13 就是說把所有.jsp結尾的文件都由ajp13這個worker交給tomcat處理了,如果應用被映射為一個.do的URL,這樣就會出錯.解決方法是再添加如下一行:
          代碼
          JkMount /*.do ajp13

          5:配置apache2"conf"workers.properties
          代碼

          workers.tomcat_home=E:"Program Files"Apache Software Foundation"Tomcat 5.5

          workers.java_home=E:"Program Files"Java"jdk1.5.0_08

          worker.list=ajp13

          worker.ajp13.port=8009

          worker.ajp13.host=localhost #

          worker.ajp13.type=ajp13 #

          worker.ajp13.lbfactor=1 #
          worker.list=ajp13
          worker.ajp13.port=8009
          worker.ajp13.host=localhost #
          本機,若上面Tomcat主機不為localhost,作相應修改
          worker.ajp13.type=ajp13 #類型
          worker.ajp13.lbfactor=1 #代理數,不用修改

          第二部分:虛擬主機的配置
          舉例配置2個vhost網站 一個是 localhost ,另一個是 www.ok.com
          當然www.ok.com 是虛擬的,本地測試時,應該修改系統中的hosts文件,添加一行 127.0.0.1 www.ok.com
          1:Apache 虛擬主機配置:
          Httpd.conf文件最后添加
          代碼
          include D:"server"Apache2"conf"vhost.conf

          而vhost.conf內容寫
          代碼
          NameVirtualHost *:80
          <VirtualHost *:80>
          ServerAdmin webmaster at localhost
          DocumentRoot "D:/server/Tomcat/webapps/ROOT"
          ServerName localhost
          ErrorLog logs/localhost-error_log
          CustomLog logs/localhost-access_log common
          </VirtualHost>

          <VirtualHost *:80>
          ServerAdmin webmaster@dummy-host dot example.com
          DocumentRoot D:/server/www/
          ServerName www.ok.com
          ErrorLog logs/ok.com-error_log
          CustomLog logs/ok.com-access_log common
          <Location /server-status> #
          這樣我可以看到apache服務器狀態
          SetHandler server-status
          Order deny,allow
          Deny from all
          Allow from localhost
          Allow from www.ok.com
          </Location>
          </VirtualHost>

          2:Tomcat虛擬主機配置
          添加新的www.ok.com 虛擬主機,在tomcat安裝路徑"conf"server.xml的最后,找到<Engine>段,改為
          代碼
          <Engine>
          <Host name=”localhost” ……>
          </Host>

          <Host name="www.ok.com" debug="0" appBase="D:/server/www/" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
          <Context path="" docBase="." />
          <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="ok.com_log." suffix=".txt" timestamp="true" />
          </Host>
          </Engine>

          3:測試虛擬主機效果
          訪問http://localhost/ 應該可以看到原來的tomcat默認頁面。
          寫一個 index.jsp
          代碼
          <html>
          <title>
          test jsp
          </title>
          <%
          String showMessage="Oh My God!";
          out.print(showMessage);
          %>
          </html>

          放在d:/server/www下面,訪問 http://www.ok.com
          頁面顯示Oh My God! 就成功了

          posted @ 2008-08-15 14:03 范永強 閱讀(839) | 評論 (0)編輯 收藏

          2008年3月5日

          validate客戶端驗證不起作用

                  要啟動客戶端驗證,必須將HTML標記庫的javascript標記放入在jsp頁面文件中,例如:
                  <html:javascript formName="selectForm"/>.
                  而且要在form標簽中這樣寫<html:form action = "/selectAction.do"method = "post" focus="userId" onsubmit="return validateSelectForm(this);">
                  注意DynaValidatorForm(ValidatorForm)和DynaValidatorActionForm(ValidatorActionForm)的區別。前者主要的視角是formbean,而后者的視角是action。
                  當formbean被不同的action使用時,對于不同的action而言,使用的formbean的屬性集合有大有小。此時如果仍然以formbean為主體,會造成其他action的不正常使用。因此,struts中提出了DynaValidatorActionForm(ValidatorActionForm)。此時在validation.xml中的form標簽的name屬性改為action的path屬性,又由于action中有attribute和name屬性,validation框架就可根據這個action得到對應的formbean。
          同時注意頁面文件的相應控件也要改為action的path屬性。例:<html:javascript formName="/selectAction"/>

          posted @ 2008-03-05 13:01 范永強 閱讀(841) | 評論 (3)編輯 收藏

          僅列出標題  
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          常用鏈接

          留言簿(1)

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 隆安县| 中江县| 大埔县| 庆阳市| 元谋县| 林甸县| 石屏县| 舒兰市| 四会市| 保山市| 西宁市| 孙吴县| 鹤壁市| 湘乡市| 云林县| 廊坊市| 乌鲁木齐市| 勐海县| 巨野县| 广安市| 保康县| 北宁市| 额敏县| 泸定县| 郁南县| 进贤县| 武乡县| 舟曲县| 博兴县| 七台河市| 威宁| 兰溪市| 龙里县| 泊头市| 城固县| 襄垣县| 嘉定区| 湘潭县| 镇安县| 崇礼县| 崇文区|