posts - 1,  comments - 1,  trackbacks - 0
eclipse有很多插件可以用,有些功能确实是很不错,但是有两个问题使我很困扰:
一是有些插件过大,拖累eclipse运行速度变慢,有时真的是很难忍受.
二是eclipse版本升级很频繁,往往导致插件无法运行.
若想在eclipse中启动基于webwork的web应用,之前我只能用myeclipse插件成功的启动web而不出任何问题.
象sysdeo的tomcat的插件或者merve插件,尽管也可以启动web,但是当打开页面的时候,总是报jsp的tag未定义,比如webwork的tag.
经过尝试,其实问题解决起来很简单:
1.将需要用到的tag描述文件放到src\webapp\WEB-INF\tags目录下
比如如果用到了webwork.tld,valuelist.tld,struts-menu.tld,struts-menu-el.tld
如果用到了这几个tld文件的话
就将其从相应的jar的META-INF目录下拷贝到src\webapp\WEB-INF\tags目录下
2.在web.xml文件中加入
    <taglib>
  <taglib-uri>http://www.opensymphony.com/webwork/tag</taglib-uri>
  <taglib-location>/WEB-INF/tags/webwork.tld</taglib-location>
 </taglib>
    <taglib>
  <taglib-uri>http://valuelist.sourceforge.net/tags-valuelist</taglib-uri>
  <taglib-location>/WEB-INF/tags/valuelist.tld</taglib-location>
 </taglib>
    <taglib>
  <taglib-uri>http://struts-menu.sf.net/tag</taglib-uri>
  <taglib-location>/WEB-INF/tags/struts-menu.tld</taglib-location>
 </taglib>
    <taglib>
  <taglib-uri>http://struts-menu.sf.net/tag-el</taglib-uri>
  <taglib-location>/WEB-INF/tags/struts-menu-el.tld</taglib-location>
 </taglib>
3.我现在用jetty启动web应用,不需要安装任何插件
在项目中加入一个jetty的启动类,内容是
public class SampleJettyLauncher {
 public static void main(String[] args) throws Exception {
  Server server = new Server();
  SocketListener listener = new SocketListener();
  listener.setPort(80); server.addListener(listener);
  server.addWebApplication("/","./target/sample/");
  server.start();
 }
}
需要将jetty中的ext和lib目录下的所有的jar都加到项目的依赖中去.
4.我们需要将src下的内容部署到target\sample目录下,
为此,将src\main\java,src\main\resource,src\main\message\en,src\main\message\zh_CN,
src\webapp\WEB-INF\classes目录都设定到源码目录,
输出路径设置为target\sample\WEB-INF\classes目录
这样eclipse就可以自动将所需的内容放到输出路径下
将src\webapp\这个目录下的文件,比如frameset.html,
src\webapp\WEB-INF\目录下的文件,比如web.xml,sitemesh.xml,decorators.xml
src\webapp\WEB-INF\tags目录
将上面提到的这三处的文件和目录都拷贝到target\avms\下的相应目录下
这样就可以了
通过上面的jetty的启动类就可以很方便的启动web程序
备注:
1.其实在web.xml中描述的taglib中直接指定tld文件的路径只是一个方法
还有一个方法是指定tld文件所在的jar,这样就不需要将tld文件从jar中拷出了,
但是这样的话需要将jar文件放到项目目录下,而我们一般都将jar放在maven\repository目录里,
这样就有问题,所以我还是手工将tld文件拷出.
2.我还不清楚为什么通过myeclipse启动的时候,不需要在web.xml中显示的声明taglib.
这个疑惑还需要进一步研究.
3.其实安装myeclipse插件后,在设定项目的源码路径时,可以指定某个源码路径的输出路径,
这样的话,其实我们可以简单的将src\webapp设定输出路径到target\avms就可以了
但是我发现没装myeclipse插件的话,手工设定输出路径有问题,这个可能是eclipse的问题了.
搞得上面提到的部署就有点繁琐.
4.jetty是一个很小巧的web容器,启动它甚至不需要任何配置文件,
当然了也可以通过配置文件对它进行设置,这个请看jetty的文档.
使用tomcat的sysdeo插件我相信也是没有问题的.
5.扔掉myeclipse后,我发现有个很大的好处,如果通过myeclipse启动的话,
象如果配置了依赖项目,当你修改依赖项目的文件的时候,需要myeclipse重新部署.
myeclipse会自动为依赖项目打一个jar,这个很花时间.
而现在通过jetty来运行,可以即时修改,即时运行,不需要部署了.
posted on 2006-06-02 10:46 Rendezvous with Rama 阅读(1082) 评论(0)  编辑  收藏 所属分类: Java

只有注册用户登录后才能发表评论。


网站导航: