记得初学Struts2时,花了好久才成功运行出HelloWorld程序,才意识到文档的重要性。 这学期一直在为考研做准备,有半年没有写文档了。现在考研结束,终于可以空出时间写写文档了,也许写的很粗糙,但希望能够对初学者有所帮助。
struts的版本是Struts-2.2.3,开发工具是myeclipse8.0,必须设置好myelcipse的Tomcat和jre
设置tomcat: window---->preferences---->搜索Tomcat6.X 设置Tomcat的目录
设置jre: window----->preferences---->搜索installed jres 设置jdk
1. 下载struts-2.2.3.1-all.zip 和struts-2.2.3.1-docs.zip,解压
2. 新建一个WebProject,命名为Struts2_HelloWorld
a) struts-2.2.3.1-all.zip解压后,打开apps文件夹,解压struts2-blank.war
b) 将struts-2.2.3\apps\struts2-blank\WEB-INF\classes目录下的struts.xml拷贝到新建工程的src目录下
c) 拷贝struts-2.2.3\apps\struts2-blank\WEB-INF目录下的web.xml,覆盖工程的web.xml
d) 将struts-2.2.3\apps\struts2-blank\WEB-INF\lib目录下的所有jar包拷贝到WebRoot\WEB-INF\lib
目录下
e) 新建一个jsp文件,hello.jsp
f) 将struts.xml中的内容改为
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- 将工程设为开发模式,这样不必每次更改都重新部署 -->
<constant name="struts.devMode" value="true" />
<!--
1. package的功能与java的package一样,主要是用来区分action,extends主要是继承另一个package,包含其内的 action,namespace主要是访问路径http://localhost:8080/项目名+namespace+/action的name+.action 比如访问hello.action时路径为:http://localhost:8080/Struts2_HelloWorld/hello .action (.action可省)
2. namespace默认为"",可不设,当不设时就相当于namespace="" , 此时只要路径中的action的名字与包下的action相匹配即可 http://localhost:8080/Struts2_HelloWorld/assadasda/hello.action与http://localhost:8080/Struts2_HelloWorld/hello.action 都访问的是default包下的hello.action
3.action 是控制核心,主要包括name,class属性,随后的文档中会介绍
4.result 是返回结果,随后的文档中会介绍 。此处,只要访问hello.action ,即会返回hello.jsp
-->
<package name="default" namespace="/" extends="struts-default">
<action name="hello">
<result>
/hello.jsp
</result>
</action>
</package>
</struts>
g)部署工程 选中工程,右击,run as---->myelcipse server application,选中Tomcat6.X
h)测试 http://localhost:8080/Struts2_HelloWorld/hello.action
打开web.xml,其内容如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Struts Blank</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
可见,struts2的核心就是过滤器,准确的说是一堆过滤器,可随便找本书看看原理
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
整个工程的流程如下图
流程很简单,不解释
最后说两个myeclipse的两个小功能
1. xml的自动提示功能,以struts.xml为例
解压struts2-core-2.2.3.jar
windows--->preferences----->搜索xml catalog--->add
KeyType选为URI Key设为struts.xml中的
http://struts.apache.org/dtds/struts-2.0.dtd
Location选为解压后的struts2-core-2.2.3.jar文件夹中的struts-2.0.dtd即可
2. 添加源码及参考文档,源码需要自己下载,以struts2为例
在package explore视图中,选中Referenced Library,选中struts2-core-2.23.jar,右击选中properties
Java Source Attachment 中的Location path中External Folder,选择struts-2.23/src/core/src/main/
java目录即可添加源码
Javadoc Location视图中,在javadoc location path 中选中struts-2.2.3.1DOCS/struts2-core/apidoc
s/目录,选中一个类,按F1,在help视图中点java editor comcepts
struts-2.2.3.1-all.zip 与 struts-2.2.3.1-docs.zip文件过大,无法上传,自己去网上下载即可
如果内容有错误的地方 希望留言指出。