WebWork提供了一个叫做QuickStart的快速上手的途径.QuickStart实际就是一些技术的集合和一些Web应用程序开发中的惯例.让你在写应用程序的时候甚至不需要编译,只需要部署和在修改后重新部署就可以了.你可以现在就像写perl或PHP一样飞快的部署你的应用程序.
How to Use It
QuickStart包含在WebWork的发布版本中,可以在命令行中输入*java -jar webwork.jar quickstart:mywebapp*后得到.然后就可以登陆
http://localhost:8080/mywebapp
开始部署你的应用程序.这时QuickStart需要Java 1.5.*版本的支持.
 | 确认8080端口未被占用
如果你在通过QuickStart开始应用程序的时候遇到问题,如下提示
java.net.BindException: Address already in use
如你已经开着一个端口为8080的容器.这可能是由于你在你的机器上安装tomcat造成的.请确认你关掉了绑定8080端口的应用程序,然后开始使用QuickStart. |
好了,还有一点工作要做,但不是很多.QuickStart的目录结果如下:
- webwork
- lib - all your required libs, usually the ones you would put in WEB-INF/lib
- webapps
- mywebapp
- src
- java - your java sources that would normally be compiled to WEB-INF/classes
- webapp
- WEB-INF
- classes - any additional configuration if you'd like
- web.xml
- webwork.jar
- launcher.jar
你通过可以拷贝一个WebWork已有的应用程序来快速上手.
You can quickly get started by copying one of the existing webapps in the WebWork distribution.
在你跑起你的应用程序后,可以自由的改变你的classes,JSP文件,模板,和其他文件 - 不需要编译和重新部署.有些文件,比如web.xml,改变后会需要重启QuickStart才能生效.同样,一些框架,如Hibernate,不像WebWork一样支持所有类的重新装载.大家的开发背景可能各种各样,但我想不管怎样你都会爱上在QuickStart上开发的.
Advanced Deployment
不要一混乱的目录结构?想使用8080以外的端口?没问题!你有两个选择:
*使用额外的命令行选项
*用*quickstart.xml*配置文件
Additional Command-line Options
_quickstart:xxx_shorthand 就是一个很好的方法,它只在WebWork初始化的时候工作.所以QuickStart允许指定在命令行指定三个选项:
假设你的布局是这样的:
- project
- lib - all your required libs, usually the ones you would put in WEB-INF/lib
- src
- java - your java sources that would normally be compiled to WEB-INF/classes
- webapp
- WEB-INF
- classes - any additional configuration if you'd like
- web.xml
你可以用QuickStart执行以下的命令*java -jar lib/webwork.jar quickstart /project src/webapp src/java*开始你的应用程序
You could launch your application using QuickStart by executing the command:
java -jar lib/webwork.jar quickstart /project src/webapp src/java
使用quickstart.xml配置文件
Using the quickstart.xml File
有时命令行选项是不够的.当遇到以下的情况,只有一个8080端口不够用,或者还需要添加别的配置.或者你的lib包不在你的项目文件夹下而是在别的目录(实际你的用Maven来构建你的项目).为了解决以上问题,QuickStart提供了一个配置文件来解决你在开发中遇到的问题,并尽量按照你的意愿进行配置.考虑这个简单的quickstart.xml文件:
如果你使用了这个开发技巧,*你必须要牢记*quickstart.xml文件必须和你执行的*java -jar webwork.jar quickstart*命令在同一个目录下.不需要添加额外的命令行参数给QuickStart,但必须把这个配置文件保存在你的工作目录下.
How It Works
QuickStart用WebWork的"share nothing"结构开始工作(, "share very little" ),一个嵌入式的服务器,先进的类装载,和Eclipse编译器(别担心,Eclipse不是必须的!)
运行之前先把webwork.jar和其他的jar包放置在classpath下.然后再开始QuickStart应用程序.解下来开启Jetty server用来指定*quickstart:xxx* 的参数.
在*webapps/xxx/src/java*下查找源文件并对这些文家进行编译的时候,Jetty server的上下文类加载器被指定为默认的类加载器.当这些源文件进行变更过后,Jetty server的上下文类加载器还被用来重新加载这些文件.
因为WebWork为每个request生成一个action,擅长重新加载类.你可以自由的变更类计划(方法,字段,继承,等等).因为没有对象驻留或存储在持久化资源中,你在这里几乎不会遇到问题.
Running in Your IDE
在你的IDE环境中运行QuickStart不是一件比在命令行下运行QuickStart难的事情.唯一的区别在于你需要在你的IDE中设置好结果和classpath.这与在*classpath*下是否包含了WebWork jar没有多大联系.请注意你的*working directory*.
一个登陆由WebWork项目开始QuickStart的实例(点击查看详细信息):
An example of what IntelliJ IDEA looks like when launching QuickStart from within the WebWork project is included for reference (click for a larger view):

Common Pitfalls
尽管WebWork在QuickStart中重新加载类的时候表现良好,但是其他的库并不是这样的.由经验而谈,如果一个对象长期保存的时候(单态,session范围等),他们不会被重载.重载的类只会在new后一个新的实例产生才会起作用.
比如说,Hibernate用高速缓存长期存储对象的引用.在使用对象自身的实例时也会发生这种情况.这使得变更models十分困难.
很对问题会在抛出ClassCastException时被发现,或者是其他与类相关的error.当你看到Foo实例不能转化为Foo类会使疯掉的.这是在使用QuickStart时的一个巨大的挑战,有效的解决办法就是使用库并且减少代码间的相互关联.
A final word of warning: QuickStart is not meant for production use, or even to be used as the sole environment for application development. Rather, it is meant to help you quickly develop proof-of-concepts and see results quickly. We recommend you always at least test in other applications servers, such as Tomcat, Resin, or even standalone Jetty.