今天学习完java web开发的基本知识。下一步学习struts框架的使用。
首先下载struts2包http://struts.apache.org/download.cgi#struts2312。我下载的是完整包struts-2.3.14-all.zip。解压看到如下文件
取得struts后下一步就是要运行struts中的例子,来初步熟悉struts的使用方法。
首先参考http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html了解基本的maven工程的目录结构。找到rest-showcase例子的源码位置struts-2.3.14\src\apps\rest-showcase\src\main\java。复制源码到exlipse工程的src目录。导入java源码后还要导入web站点的相关文件和lib下的库文件。解压struts-2.3.14\apps\struts2-rest-showcase.war,复制解压后的文件到工程目录的WebContent下,classes文件夹的内容除外因为此文件夹中的内容是编译后自动生成的。编译工程发现出错,排错方法:查看生成的web站点的内容和rest-showcase.war解压后的内容作对比发现少了WEB-INF\classes目录下struts.xml文件,由于struts.xml和org处在同一目录故猜想需要把struts.xml放到工程目录的src目录下。重新编译工程发现的确在WEB-INF\classes目录下产生来了struct.xml。此时运行工程成功。
由此总结创建struts工程的方法,首先创建Dynamic Web Project工程,然后导入相关的struts库文件,并在src目录下创建struts.xml文件即可。其实就是普通的web工程,只是加入了struts.xml配置文件罢了。因此下一步就要了解struts.xml的写法。
struts的核心功能是Action,用户的action请求通过和struts.xml中的action name进行匹配。匹配成功则调用相关的action的execute函数,再根据execute函数的返回结果,返回struts.xml的相关result页面给客户端。参考网址:http://www.blogjava.net/max/archive/2006/10/25/77157.aspx。如果使用convention插件就可以不用struts.xml进行配置,从而实现零配置。参考:http://wenku.baidu.com/view/0124d40a52ea551810a6873a.html了解convention的约定。
Struts2 无后缀action请求。如果将Struts2的filter-mapping配置成
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
的话,struts2将可以处理无后缀的action请求,如/demo/hello.action 和/demo/hello 是同样的效果。
这样有时会出现一些问题,将有一些组件映射为无后缀的请求拦截了,如/demo/dwr 请显示对外公布的js方法列表,在struts2拦截后确显示There is no Action mapped for namespace / and action name dwr这种情况下可以在struts.properties中配置struts.action.excludePattern = /dwr.*,/xxx.*属性值是以逗号分隔的正则表达式。
配置action请求后缀的方法:http://wangquanhpu.iteye.com/blog/1462144
如果同时使用convention和rest-plug两个插件但是又想同时使用rest风格和非rest风格的url可参考https://cwiki.apache.org/WW/rest-plugin.html---