1.Java Web项目是基于Java EE类的;而Java项目是基于Java应用程序的。
2.Java项目主要面向桌面程序的应用,主要是awt、swing这类的编码,不包括JSP等前台页面的代码,大部分是CS架构的工程和一些jar包。 JavaWeb项目是BS架构的系统,是网页的编码,像Jsp、Servlet、Struts这类的, JavaWeb项目部署到服务器上,任何用户都可以通过浏览器来访问。
3.JavaWeb项目中的Java文件是tomcat服务器来触发的,脱离了web服务器就无法启动。而Java项目是由main()方法来开始的,直接依赖JVM就能被编译执行。
4.Java Web项目需要服务器;而Java项目不需要服务器。
5.在eclipse中Java Web项目可以转换为Java项目,进而可以转回到Java Web项目。
6.Java项目多数应用请求响应通过按钮的事件驱动来发起(Web项目也有)。JavaWeb项目衍生了很多框架应用。多数请求响应应用超链接URL来发起(Java项目也有)。
7.如果说Java项目代码多半在本地,Web项目的代码基本是在远程服务端。当你是Web应用时,比如要建个网站,需要发布到服务器时,应为JavaWeb项目。当你做分布式系统时,也就是你做的只是一个服务,对外发布也只是一个服务的时候,需要建立Web Services Project(不理解可以先研究下webservices)。当你仅仅是需要JDK来运行一些本地代码的时候,只需要建Java Project就可以了。
Java Project和Web Project其实都是Java语言的应用,只是应用场合不同罢了,那么他们的本质到底是什么?编译后路径!虚拟机执行的是class文件而不是Java文件,而我们不论哪种项目都是写的Java文件,怎么就分成Java项目和JavaWeb项目了呢? .classpath文件,这个文件在每个项目目录下都是存在的。这里展示一个web项目的.classpath文件,xml代码:
1. <?xml version="1.0" encoding="UTF-8"?>
2. <classpath>
3. <classpathentry kind="src" path="src"/>
4. <classpathentry kind="src" path="resources"/>
5. <classpathentry kind="src" path="test"/>
6. <classpathentry kind="uu" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
7. <classpathentry kind="lib" path="lib/servlet-api.jar"/>
8. <classpathentry kind="lib" path="webapp/WEB-INF/lib/struts2-core-2.1.8.1.jar"/>
9. ……
10. <classpathentry kind="output" path="webapp/WEB-INF/classes"/>
11. </classpath>
xml文档包含一个根元素,就是classpath类路径。子元素是classpathentry,kind属性区别了种类信息,src源码,uu看后面的path就知道是JRE容器的信息。lib是项目依赖的第三方类库,output是src编译后的位置。 既然是web项目,那么就是WEB-INF/classes目录。MyEclipse的是WebRoot或者是WebContext而不是webapp,这其实没有区别。 看懂了编译路径的本质,就不用区分Java项目和web项目了。普通的Java 项目你这样写就行了:<classpathentry kind="output" path="bin"/>,看看Eclipse是不是这样生成的?问题迎刃而解。 Web项目是要发布到服务器上的,服务器读取的是类文件和页面文件,它不管源文件,它也无法去理解源文件。所以webapp目录的命名如何没有关系,只要让服务器找到就行了。