做完在經過千萬次失敗以後終於寫好了一個完整的struts的小例子來驗證一下自己對struts到底理解了多少,
對於“form”和“from”寫錯,這個白癡的錯誤讓我整整忙活了一下午,
最後還是在別人的協助下才找到這個“搗蛋鬼”,
在咒罵自己白癡的同時,不得不讓人有點討厭JAVA的IDE的智能程度,
嗚~~~你好歹報個錯啊.........
額,靈驗了,解決了“form”誤寫為“from”的錯誤以後,
程式總算開始正常運行了,因為它開始報錯了,
心裡那個高興啊(是不是很BT,但是如果你嘗試了JAVA-IDE死活不報錯,而你就逐行逐行代碼找錯誤的時候,你會發現它報告錯誤是那麼的爽........)
先提前介紹一下這個demo實現的功能,
用struts建立一個驗證使用者名稱和密碼的功能,使用者名稱和密碼只能為數字和字母的組合,而且至少6位以上。
具體的操作步驟在這次不詳細敘述了,網上這個驗證架構的文章的很多,大家參考以後就可以搞定,
我這裡只說可能出現問題的解決辦法。
在寫完代碼以後,運行,測試,出現一下異常:
java.lang.NoClassDefFoundError: org/apache/oro/text/perl/Perl5Util<br /> org.apache.commons.validator.GenericValidator.matchRegexp(GenericValidator.java:65)<br /> org.apache.struts.validator.FieldChecks.validateMask(FieldChecks.java:233)<br /> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br /> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br /> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br /> java.lang.reflect.Method.invoke(Method.java:597)<br /> org.apache.commons.validator.ValidatorAction.executeValidationMethod(ValidatorAction.java:544)<br /> org.apache.commons.validator.Field.validateForRule(Field.java:796)<br /> org.apache.commons.validator.Field.validate(Field.java:876)<br /> org.apache.commons.validator.Form.validate(Form.java:288)<br /> org.apache.commons.validator.Validator.validate(Validator.java:351)<br /> org.apache.struts.validator.ValidatorForm.validate(ValidatorForm.java:116)<br /> org.apache.struts.chain.commands.servlet.ValidateActionForm.validate(ValidateActionForm.java:58)<br /> org.apache.struts.chain.commands.AbstractValidateActionForm.execute(AbstractValidateActionForm.java:120)<br /> org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)<br /> org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)<br /> org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)<br /> org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)<br /> org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)<br /> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)<br /> org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)<br /> javax.servlet.http.HttpServlet.service(HttpServlet.java:710)<br /> javax.servlet.http.HttpServlet.service(HttpServlet.java:803)<br />
這裡異常提示缺少類的定義:org/apache/oro/text/perl/Perl5Util
而這個類存在與jakarta-oro.jar包,這個包一般內建的IDE是沒有整合,
大家下載後copy到自己項目的lib中重新編譯運行即可,
附上jakarta-oro.jar的:
點擊轉到
我將執行個體工程代碼發布了出來,喜歡自己看下:
點擊轉到
有問題大家可以一起討論。