有三个类,一个是Servlet类,两个Service类。要求将一个Service编程为class,将另一个Service打包为jar包。Servlet类是继承自HttpServlet类的。
源代码目录结构如下:
├── client
│ └── HelloWorldService.java
├── service
│ └── Service.java
└── service2
└── Service2.java
目标war包结构如下:
WEB-INF ├── classes │ ├── client │ │ └── HelloWorldService.class │ └── service2 │ └── Service2.class ├── lib │ └── service.jar └── web.xml
说明:目录名classes和lib都是固定名称,不能更改。不能在浏览器直接访问WEB-INF下的文件。一般将css和images放在WEB-INF外面。由于所有的class文件都有package,所以package同样需要在包里面。jar包里面同样包含service路径,以及service下面的Service.class文件。
命令如下:
mkdir out
javac -cp servlet-api.jar:. -d out client/HelloWorldService.java
-cp指定依赖的地址,点是指当前路径,-d是将源码与class文件分开,out是放class文件的文件夹,HelloWorldService.java是需要被编译的源文件。
编译后的目录结构:
├── client │ ├── Client.java │ └── HelloWorldService.java ├── out │ ├── client │ │ └── HelloWorldService.class │ ├── service │ │ └── Service.class │ └── service2 │ └── Service2.class ├── service │ └── Service.java ├── service2 │ └── Service2.java └── servlet-api.jar
mkdir WEB-INF cd WEB-INF/ mkdir classes/client mkdir classes/service2 mkdir lib cd ../out cp -r client/HelloWorldService.class ../WEB-INF/classes/client/ cp -r service2/Service2.class ../WEB-INF/classes/service2/ jar -cf service.jar service cp -r service.jar ../WEB-INF/lib/ cd ../ cp web.xml WEB-INF/
整理后的WEB-INF的目录结构如下:
WEB-INF ├── classes │ ├── client │ │ └── HelloWorldService.class │ └── service2 │ └── Service2.class ├── lib │ └── service.jar └── web.xml
在于WEB-INF同级的目录下运行如下打包命令:
jar -cf hello.war WEB-INF/
hello.war是包的名称,必须只能把WEB-INF整个打包。
将hello.war拷贝到tomcat的webapps下面,启动tomcat,然后打开页面localhost:8080/hello/helloworld就可以验证是否打包成功了(我的web.xml里面配置的是helloworld)。
原文:http://www.cnblogs.com/liqing172/p/3658494.html