在跟著視頻學習的時候,視頻中的struts2的版本為2.0.11,在搭建環境的時候需要5個jar包,為:commons-logging-1.0.4.jar , freemarker-2.3.8.jar , ognl-2.6.8.jar , struts2-core-2.0.11.jar和xwork-2.0.4.jar。本人下載的struts2的版本為2.1.8.1 ,在搭建環境的時候有6個jar包,為:commons-logging-1.0.4.jar , freemarker-2.3.15.jar , ognl-2.7.3.jar , struts2-core-2.1.8.1.jar , xwork-2.1.6.jar和commons-fileupload-1.2.1.jar。這些也不用記,但是對於新手來說非常困難,不知道要匯入哪個jar包,其實很簡單,在官網下載下來的壓縮檔解壓后里面都有例子(apps目錄中),其中有一個struts2-blank-2.1.8.1.war檔案,用rar開啟,把裡面的jar檔案(WEB-INF/lib/ )匯入即可。
使用eclipse寫struts2時遇到一個問題,如下:
com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn<br />警告: Could not find action or result<br />There is no Action mapped for namespace / and action name login. - [unknown location]<br />at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:178)<br />at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)<br />at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)<br />at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:47)<br />at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:478)<br />at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)<br />at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)<br />at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)<br />at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)<br />at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)<br />at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)<br />at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)<br />at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)<br />at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)<br />at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)<br />at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)<br />at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)<br />at java.lang.Thread.run(Thread.java:619)
相信大家都知道struts.xml檔案找不到了,排除拼字錯誤之外,這個檔案必須放到WEB-INF目錄下的classes目錄中(寫.java檔案時會自動編譯到classes目錄中),然而使用eclipse建項目時,有個預設輸出的是build/clasaes中,所以在編譯部署後classes目錄沒有在WEB-INF目錄下,就是這個原因產生了上述問題,既然知道了原因,自己就可以解決了吧,在此就不必多說了。