参考视频:尚学堂
Action入门:由hello world介绍struts
先应用,再理论
- 打开myEclipse
- 右键new – Project – MyEclipse – Java Enterprise Project – Web Project
- 写项目名称,选就Java EE 5.0 , finish
-
有几个地方要设置,这里要小心:
Window – Preferences – MyEclipse – Servers – Tomcat的位置,选enable
window – Preferences – java – Installed jres,不放心的话就选自己的jdk - 用准备好的Struts2软件,解压之后观察一下目录
src: 源码
lib: 类库
docs: 文档
apps: 示例程序
用的是apps,里面有五个war文件,可以用WinRAR直接打开并且解压。
解压blank文件,打开WEB-INF,classes下,找到配置文件,拷Struts.xml,到src目录下。
拷类库:lib下,到lib下
这个视图下是看不到的,打开window – show view – other – Navigator
配置web.xml:配置filter - struts.xml中,struts标签里的东西都注释掉(方便仿照),package标签中拷贝过来,更改
-
部署到服务器,测试。
出现的问题:
1.java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
引入javassist-3.11.GA.jar包解决
2.java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils
引入commons-lang3-3.1.jar包解决
后来重新测试时删掉这两个包也没有出错,不知道为什么
3.测试时因为配置里有namespace,地址栏写法要注意。
结果:
小知识点:
- struts标签中里有一个配置:
重新启动部署之后,更改action的name属性之后,可以不用重启直接访问,否则得重启服务器<constant name="struts.devMode" value="true" />
- 查看源码:找到jar包class之后,右键properties,java Source Attachment,External Folder,struts文件目录所在,src–core–src–main–java,ok
- 查看javadoc文档:struts-2-core.jar包,右键properties,javadoc location,browse,struts文件下,docs–core–api,ok。好处在于可以再eclipse里面观察javadocs的操作:当我们选中某个类的名字之后按F1,会给你显示出java doc ,点击之后可以直接显示出这个类的API。
-
创建xml文件给提示:
window – properties –搜索catalog –XML Catalog – add –struts文件下lib中struts-core文件 – 解压 –找到dtd文件 –add中key type选URI,key:http://struts.apache.org/dtds/struts-2.3.dtd, location:刚刚解压dtd文件的路径。这样xml中敲内容时候就可以给提示了。
struts背后的运行机制
URL地址–http协议–tomcat–web application–web.xml–filter过滤所有的地址–被org…接收到–查struts.xml的namespace–查action name属性
核心: 把请求和展现分开。
namespace
namespace决定了action的访问路径,默认为”“,可以接收所有路径的action
namespace可以写为/,或者/xxx,或者/xxx/yyy,对应的action访问路径为/index.action,
/xxx/index.action,或者/xxx/yyy/index.action.
namespace最好也用模块来进行命名,比如用户管理模块,就起名叫/user
struts.xml中,package标签用于解决重名情况
result标签name默认为success
Copy项目
copy之后要改一个东东:
右键properties–myeclipse – web–web Context root改路径
引入别人的项目
import – general –existing projects into workspace – 选择路径 –Copy project选中 – 部署
jre – remove掉 重新配置 – build path – library – 重新加进来