简单的helloworld演示
l 建立环境
使用Myeclipse
下载strut2.1包,包括jar包,文档,示例等。
打开示例文件夹,看到五个war包,可以用RAR解压缩出来得到示例:
第一个包,strut2-blank-2.1.6
l 建立基本框架
那么可以开始建立strut2
WEB-INF目录下classes目录下的struts的配置文件struts.xml拷到工程src目录下:
配置文件struts.xml会报错,不管它先
下面拷贝jar包类库,WEB-INF\lib目录下有九个包,去掉不用的两个:junit和spring-test包。其他都拷到工程lib中
下面弄strut2
仔细观察上面的filter配置,可以看到有个ng,这是next
对于所有的strut配置,上面url-pattern
l 建立自己的配置
打开报错的
首先是设置开发模式,这样就可以边修改边查看,如果不设置开发模式,那么改了后还要重启服务器部署。
-
<</span>constant name="struts.devMode" value="true" />
-
<</span>package name="default" namespace="/" extends="struts-default"> -
<</span>action name="hello"> -
<</span>result > -
/hello.jsp -
</</span>result> -
</</span>action> -
</</span>package>
上面的东西都是放在strut标签中的。
namespace就是要运行的JSP所在路径,这里是根目录,把index.jsp改成hello.jsp。
action
l 其他注意
除了上面的开发模式要注意设置外,还有:
u 当我们想看jar包的源码的时候,打开看不到,怎么办
这样:
先找到要看的那个jar包,右键
解压出来的full包下:struts-2.3.15/src/core/src/main/java
这样,打开下面的class就可以看到反编译的源码了:
u 当我们想关联这个jar包的帮助文档的时候
我们设置这个jar包的帮助文档路径:
找到要看的那个jar包,右键
struts-2.3.15/doc/
u 关于XML中dtd文件 引用的问题
如果使用url的模式比如:"http://struts.apache.org/dtds/struts-2.3.dtd">
首先找到DTD文件,可以网上下,也可以找jar包,解压开来找到:
在window--preference--搜索catalog
当然也可以这样使用:修改直接DTD位置
DOCTYPE
"-//Apache
"/WEB-INF/classes/struts-2.3.dtd">
然后将DTD放在WebRoot\WEB-INF\classes下就好
这样,当我们在XML中输入<</font>标签时,按下alt+/
u Helloworld strut2 运作图:
u Struct2运行原理
v 接收
当用户访问网页:http://localhost:8080/Strut2_learning/hello
-
<</span>filter> -
<</span>filter-name>struts2</</span>filter-name> <</span>filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteF ilter</</span>filter-class> -
</</span>filter> -
<</span>filter-mapping> -
<</span>filter-name>struts2</</span>filter-name> -
<</span>url-pattern>/*</</span>url-pattern> -
</</span>filter-mapping>
然后这个请求就被org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteF
v 查路径
接收到以后,过滤器首先查看访问的namespace
-
<</span>package name="default" namespace="/" extends="struts-default"> -
<</span>action name="hello"> -
<</span>result > -
/hello.jsp -
</</span>result> -
</</span>action> - </</span>package>
namespace
PS:注意,namespace默认不填的时候是空,也就是不写的时候,namespace=”
访问顺序是:先看package的namespace对不对得上,对的上就找action对不对得上,对上了就看action有没有class属性,没有的话直接返回result,有的话还要看对应的class中execute方法的返回串对不对得上result的name。对的上就返回result中的东西,对不上就异常了。
v 找action
查到路径后呢,就到这个package
这时候就找到了对应的
然后就反馈/hello.jsp给我们。
v 总的来说
1)就是访问者将访问的东西交给服务器
2)服务器根据web.xml配置找到一个Strut2filter
3)filter根据strut.xml配置找到result
4)strut2