struts2自学第一课-在eclipse上部署helloworld(随笔,非详细步骤)

来源:互联网 发布:centos 7.2关闭防火墙 编辑:程序博客网 时间:2024/05/29 18:16


#在eclipse上部署helloworld(tomcat和eclipse分离)

第一次用eclipse部署简单struts2 web应用:helloworld
struts2版本 2.1.8  jar包:uploadlib文件夹加中

eclipse:Eclipse Java EE IDE for Web Developers.
   Version: Helios Release
   Build id: 20100617-1415
tomcat 7.0
(尝试用最新的struts2.3.4,,5个jar包或8个jar包都失败,提示web应用加载不成功(tomcat控制台),浏览器提示应用程序访问无效-jsp也无法打开,删除web.xml中filter的配置,jsp能打开。

2012-8-29 17:40:07 发现解决方案:
struts2.3.4要求11个jar包:
asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar
commons-lang3-3.1.jar
freemarker-2.3.19.jar
ognl-3.0.5.jar
struts2-core-2.3.4.1.jar
xwork-core-2.3.4.1.jar


关键点:默认eclipse为struts.xml和*.class(src下的*.java编译后的字节码文件)保存在webapp空间下的build/classes下,这个目录tomcat是识别不到的。
每次编写一个*.java文件,eclipse都会将它编译成*.class文件并存放到classes文件夹下。
应该修改项目的classes路径:右键项目名-属性-Java Build Path -Source -底下有个Default output folder:把
XXOO/build/classes改成:XXOO/WebContent/WEB-INF/classes
注:XXOO是web应用名,WebContent是eclipse的web项目里的应用文件路径(含jsp、lib-jar包、web.xml等),如果是myeclipse中WebContent对应的就是WebRoot

========================================
开发步骤:
1.
(1)下载struts2.1.8-lib,
 struts官网上只有最新的struts2.3.4有all包。所以2.1.8只能 在http://archive.apache.org/dist/struts/library/下下载到lib库而已.

 http://struts.apache.org/  >Releases >随便点一个struts版本的链接>download now >Older Releases (Archive Site. )>library>这时,有各种版本的lib  也就是jar包。
(附1:struts 类库下载:http://archive.apache.org/dist/struts/library/)
(附2:Why are some version numbers missing? 官网上点Release后,打开页面中会有这个链接)
(2)
打开http://struts.apache.org/官网,在左边的Documentation的Guides链接中,查看web.xml和struts.xml怎么写。

2.在eclipse下新建一个new-Other-web-Dynamic web project
如上“关键点”中所说,修改classes的路径,让eclipse自动把*.java和struts.xml从src下赋值到WebContext/WEB-INF/classes下。这样,我们在src下创建的struts.xml和编译好的*.class文件就会在WEB-INF/classes下。

3.把HelloWorld用到的5个jar包赋值到WEB-INF/lib下。有时还要选中lib中的这5个jar文件,右键-build path -add to build path。就是往项目中加载这5个jar。貌似这个eclipse会自动加载。在WEB-INF/下,新建web.xml。web.xml的内容复制自1.(2)--web.xml链接
(注:我采用的是struts2.1.8,因此,1.(2)说的那个页面中的example -web.xml  是可以直接复制的,即采用的是StrutsPrepareAndExecuteFilter。如果是 2.1.2及之前的版本,则filter-class部分应采用 FilterDispatcher  (example那个网页上已经说得很清楚了。))

在src下新建struts.xml。内容参考1.(2)  struts.xml-> struts.xml Examples-->示例页面
注意,struts.xml中,说明部分(就是开头那些)也要复制The Struts 2 Document Type Definition (DTD)
另外,此时的struts.xml只要建立好package,<action>部分暂时不用写,因为Action类还没有创建。返回的jsp也还没有创建。
strust.xml:
 <!DOCTYPE struts PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
 "http://struts.apache.org/dtds/struts-2.0.dtd">
 <struts>
    <package name="xxoo" extends="struts-default"/>
</struts>
如上,即可。xxoo是自定义的package名字,随意。

4.在src下新建 包,Action类(继承自ActionSupport),在WebContent下建立jsp(或可以建立子文件夹,但那样的话,子文件夹里的jsp发出的请求路径是“应用名/子文件夹/请求名”,这时,struts.xml中的action所在的package要有namespace属性,且值就是这个子文件夹名字。否则,请求路径处理起来会比较麻烦。原则是:模块名-package名-namespace-WebContent子文件夹名  4个名字保持一致,一来减少路径问题,而来有利于项目维护、管理。)

这时,就可以在struts.xml中添加<action>配置了。

(在此不详细描述struts2 项目建立、action配置等,默认已经学会这些基础知识。此处记录的是自学中遇到的疑问)