实验软件下载
1.下载struts2.1.6
http://struts.apache.org/download.cgi#struts217 (选择下载full distribution)
2.下载myeclipse,
http://www.myeclipseide.com
3.下载tomcat,
http://tomcat.apache.org
安装与设置
1.解压struts2.1.6,假设解压后位于d:\struts2目录
2.安装MyEclipse,任何版本都可以
3.假设你已经安装好jdk和tomcat了,如d:\tomcat
1.建立项目
a) 打开eclipse
b) 新建项目
c) 选择myeclipse-java enterprise projects-web project
d) 项目名称:struts2_0100_introduction
e) 选择java ee 5.0
2.设定server
a)window – preferences – myeclipse – servers – tomcat – 6.x
b)选择tomcat home directory
c)选择enable
d)finish
3.设定jdk环境
a) window – preferences – java – installed jres
b)如果没有对应的JDK(不是JRE),选择add
c)选择standard VM -> next
d)选择JDK对应的Directory
e)将刚刚设定的JDK设为默认
4.建立第一个struts2.1的程序
a) 找到struts目录下对应的apps目录
b) 解压struts2-blank-2.1.6.war
c)Copy对应的lib的jar文件,需要除junit和spring-test之外的所有文件,其中commons-io的jar包会在文件上传和下载时需要,其他为必须
d) Copy对应的struts.xml到src目录,在package explorer视图进行操作
e)注释掉struts.xml的多余内容
f)建立HelloStruts2_1.jsp文件
g)*修改jsp文件的默认编码属性window-preferences-web-jspfiles-设为Chinese,National Standard
h) 在struts.xml中照原配置进行对应的配置
i) 修改对应的web.xml,建立struts2的filter(参考struts自带的项目)
5.运行项目
a) 可以首先部署到tomcat上项目
b)也可以项目右键debug as – myeclipse server app,选择刚刚建立好的server
6.其他
a) 学习建立struts的dev-mode,好处在于我们修改了配置文件的时候能够自动热替换
b)建立jar文件对应的源码D:/share/tools/struts-2.1.6/src/core/src/main/java,以及xwork对应的源码,以及对应的javadoc location,(更好的方式是建立自己的user-library)
c) 浏览struts的目录
d)认识eclipse jee的项目部署目录,认识如何修改webapp的context-root,项目copy改名后可能会出现的问题
e)package explorer – 建立jar的源文件和目标关联,navigator – 观察所有的内容
f)认识Action的后缀名,在struts2默认中,带不带action都可以
常见问题:
1.struts.xml不自动提示
a) window – preferences – 搜索 catalog – add
b)选择key type为URI
c)key:
http://struts.apache.org/dtds/struts-2.0.dtd
d) location: 对应的dtd文件,位于struts-core包中,解压开,指定相应位置,如:D:\share750_Struts2.1.6\soft\struts2.1.6\lib\struts2-core-2.1.6\struts-2.0.dtd
2.导入示例项目
a) 注意JDK的版本,应该是JDK6,否则会出class version的问题
b)如果总是项目出问题,可以重建项目,单独拷文件
c) 还有一种情况是项目右键,properties – java – compiler 选择6.0
d)另外,在tomcat配置中也要使用jdk6
3.devMode设为true就会出问题空指针问题
a) tomcat路径带了空格
4.在使用ActionContext.getContext().get(“request”)取不到对象,为null值
a) web.xml不要使用2.0的filter,用新的
5.在action的试验中,遇到一个奇怪的bug
a) 用default-action-ref指定一个action
b) 用*_*映射
c) 在地址栏中访问一个不存在的action,如adfsdfsfs
d)结果居然会映射到*_*上
e)如果换成*__*就没问题了
f) 靠,只能认为是bug
g) 下次用*-*,不用*_*