- Java Web 项目是基于 Java EE 类的;而 Java 项目是基于 Java 应用程序的。
- Java 项目主要面向桌面程序的应用,主要是 awt、swing 这类的编码,不包括 JSP 等前台页面的代码,大部分是 CS 架构的工程和一些 jar 包。
JavaWeb 项目是 BS 架构的系统,是网页的编码,像 Jsp、Servlet、Struts这类的,JavaWeb 项目部署到服务器上,任何用户都可以通过浏览器来访问。 - JavaWeb 项目中的 Java 文件是 tomcat 服务器来触发的,脱离了 web 服务器就无法启动。而 Java 项目是由 main() 来开始的,直接依赖 JVM 就能被编译执行。
- Java Web 项目需要服务器;而 Java 项目不需要服务器。
- 在 eclipse 中 Java Web 项目可以转换为 Java 项目,进而可以转回到 Java Web 项目。
- Java 项目多数应用请求响应通过按钮的事件驱动来发起(Web项目也有)。JavaWeb 项目衍生了很多框架应用。多数请求响应应用超链接 URL 来发起(Java项目也有)。
- 如果说 Java 项目代码多半在本地,Web 项目的代码基本是在远程服务端。比如要建个网站,需要发布到服务器时,应为 JavaWeb 项目。当做分布式系统时,也就是做的只是一个服务,对外发布也只是一个服务的时候,需要建立 Web Services Project。当仅仅是需要 JDK 来运行一些本地代码的时候,只需要建 Java Project 就可以了。
Java Project 和 Web Project 其实都是 Java 语言的应用,只是应用场合不同罢了,那么本质到底是什么?编译后路径!虚拟机执行的是 class 文件而不是 Java 文件,然而不论哪种项目都是写的 Java 文件,怎么就分成 Java 项目和 JavaWeb 项目了呢?
.classpath 文件,这个文件在每个项目目录下都是存在的。这里展示一个 web 项目的 .classpath 文件,xml 代码:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="resources"/>
<classpathentry kind="src" path="test"/>
<classpathentry kind="uu" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="lib/servlet-api.jar"/>
<classpathentry kind="lib" path="webapp/WEB-INF/lib/struts2-core-2.1.8.1.jar"/>
……
<classpathentry kind="output" path="webapp/WEB-INF/classes"/>
</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 目录的命名如何没有关系,只要让服务器找到就行了。
Java项目主要面向桌面应用,基于awt、swing,通常为CS架构,而JavaWeb项目是BS架构,涉及JSP、Servlet等,部署在服务器上供多用户访问。JavaWeb项目的触发依赖于服务器,如Tomcat,而Java项目由main()启动。两者在Eclipse中的区别主要体现在编译后的输出路径,Java项目输出到bin,Web项目到WEB-INF/classes。理解这点,就能清晰地区分两者。
447

被折叠的 条评论
为什么被折叠?



