Java EE之Eclipse简单应用

时间:2024-04-12 09:38:10

     要进行Java Web开发,肯定需要一款比较好的IDE,我这里使用的Eclipse neon。

一、新建Dynamic Web Project

(一)使用Eclipse新建 

   如果下载的不是Eclipse 的Java EE IDE版本,那是不能直接创建Dynamic Web Project的,需要手动安装Web插件,安装过程见我的另一篇文章:

     Eclipse 安装插件开发Java EE:http://blog.csdn.net/yc_wj/article/details/69223160

     新建Dynamic Web Project 还需要把 Tomcat 整合到Eclipse中,这样便于我们使用。整合方式见:

     Eclipse 配置Tomcat,更改web项目默认部署路径:http://blog.csdn.net/yc_wj/article/details/69229340

     在配置Tomcat时,如果发现 Eclipse的 Windows --> Preferences --> Server下没有Tomcat选项,那就需要安装JST Server Adapters Extensons插件,直接进市场搜索即可。

上面的工作完成了,就可以开始开发Web项目了。   

    1、选择 File --> New --> Dynamic Web Project 即可新建一个Java Web项目,如果 New 子菜单下没有 Dynamic Web Project 选项,那就点击最下方的 Other... 选项

     在弹出来的窗口中搜索 Dynamic,就会出现 Dynamic Web Project 选项,如下图:

                            Java EE之Eclipse简单应用

    2、选择Dynamic Web Project 后,会弹出窗口让你填写项目相关信息

                             Java EE之Eclipse简单应用

           1是项目名称,2是项目文件所在路径,默认是Eclipse的工作空间。3是使用的服务器,前面如果配置好了服务器,这里会自动填好,如果没有配置,也可以点击后面的New RunTime按钮进行配置。

     3、填写好相关信息后,点击下方 Next> 按钮(不要直接敲回车键,因为敲回车默认敲在 Finish 按钮上了,会直接结束导致一些配置不全,虽然后面可以修改,但还是Next,这样配置比较直观易懂),弹出如下窗口:

                      Java EE之Eclipse简单应用

        这里要记得修改Defalut output folder,这个是源文件的默认编译后输出的位置,也就是.class文件的位置。如果不修改,就会放在 ProjectName/build/classes 目录下。但在Web应用中,这些 .class 文件应该放在 ProjectName/WebContent/WEB-INF/classes 目录下,这样服务器才能找到并加载运行。所以要将 build/classes 修改为 WebContent/WEB-INF/classes,然后点 击Next>,弹出如下窗口。

                    Java EE之Eclipse简单应用

           1是 Context root(项目根目录)默认就是项目名,2是 Content directory(项目内容目录)存放Web资源的目录,不同工具默认值不同,Eclipse是WebContent,不用修改。3一定要勾选上(表示创建通用的 web.xml 文件,这个文件是部署描述符,服务器运行项目必不可少的),虽然后面可以手动创建,但建议还是在这里勾选。

    4、点击 Finish 后就可以在 Project Explorer 下看到创建的Web项目,如下图:

                                      Java EE之Eclipse简单应用

         Eclipse 创建的Web项目目录如上,会自动生成四个目录:

                  Deployment Descriptor:TestEclipse      这个是关于项目的部署描述信息,也就是 web.xml 中的信息,不过这里分类列出来了。

                  Java Resources    这个目录下的 src 目录是用来存放Java 源文件的,例如 java类。而 Libraries 目录是个逻辑性的目录,表示项目引用的各种 JAR 包。

                  JavaScript Resources   存放的就是 JavaScript 资源

                  WebContent    这个目录是必要的,可以单独打包这个目录到部署到服务器就可以运行了,WebContent/WEB-INF目录存Web相关信息,可以看到 web.xml 文件就子在这个目录下,而 lib 目录则是存放项目所需 JAR 包的物理目录(就是说必须手动复制JAR到这个目录),其实这个 WebContent 目录下还有一个 classes 目录,不过在这个视图中看不到,需要在 Navigator 视图中查看。

        怎么打开 Navigator 视图呢?

               Window --> Show View 下就可以找到这个视图,需要打开其它视图也都在这个里面找就行了。

        可以去项目存放的物理路径下查看,会发现只有src目录和WebContent目录,这也说明了其它目录实际上是逻辑上的目录,为了管理方便。

     进过上面4步就可以成功的建立一个Dynamic Web Project了。

     一般不用管 Deployment Descriptor:TestEclipse 和JavaScript Resources 这两个。但要好好了解下另外两个的作用,毕竟你开发Web项目,不能连结构都搞不清嘛。

(二)不适用Eclipse新建Web项目

       直接在 Tomcat 服务器的 WebApps 目录下,新建一个项目Test,然后在 Test 目录下新建 WebContent,在 WebContent 目录下新建 WEB-INF,在WEB-INF目录下,新建一个lib文件和一个web.xml文件。

       然后就好了,,,从这个过程也能看出,对于一个Java Web目录,最重要的就是 WebContent目录,然后WEB-INF目录,然后 lib 目录和 web.xml 文件。

      关于Tomcat 服务器的各目录,也应该要好好了解,可参考博客:http://blog.csdn.net/jdjdndhj/article/details/52694202

Tomcat Server.xml配置文件解析:http://blog.csdn.net/itmagic_jack/article/details/6290239

Tomcat Web.xml配置文件解析:http://blog.csdn.net/itmagic_jack/article/details/6293042


二、使用WebContent目录

     第一步中已经搭建起了Java Web项目所需要的目录结构,但这还只是个空架子。接下来就像里面添内容

     很多资料上都是直接将 JSP文件放在 WebContent 目录下,但如果有很多JSP文件怎么办了,会显得目录很杂乱不好管理,又因为现在的 JSP文件都是作为视图层的,所以应该新建一个 View 目录存放JSP文件,即使是初学者也应该这样做,才能更好的学习MVC开发模式,这样只不过在访问时需要多加一层路径。

     然后,项目总会有很多静态资源的,比如页面的CSS样式文件、JS文件、图片等。所以还应该在 WebContent 目录下新建一个 Public 目录,然后在 Public 目录下新建CSS、JS、Images等目录,分类存放各种资源,这样能更好的管理自己的项目。

     这里就不介绍 JSP 要怎么编写了,你也可以直接建一个 html 页面作为测试。

三、部署项目到服务器并访问  (设置虚拟目录)

    Eclipse 配置Tomcat,更改web项目默认部署路径:http://blog.csdn.net/yc_wj/article/details/69229340

    在上面链接的文章中,已经提到来了怎么部署项目到服务器。所以这里就只说一下怎么设置 Tomcat 服务器的虚拟目录,网上有好几种方式,我这里只说一种最常用的。

    PS:初学者还是应该尝试一下所有的部署方式,体会下不同,只有自己动手才能真正的理解和学习。

    虚拟目录不同于原始的Tomcat运行方式,原始的方式是把项目拷贝到 webapps 下,然后启动 tomcat,就可以访问 webapps 下的项目。我们使用eclipse配置tomcat,实际上的原理也是这种方式。

    但这种方式的弊端在于,webapps 下的项目不是最新的动态,一旦我们修改了eclipse工作目录下的项目,并不能立刻的反应到 tomcat/webapps 下。所以我们不得不编译项目后,清除 webapps 下的缓存,甚至要移除项目,然后再放进去。这样来回折腾,大大降低了工作效率。我们只要改动一个小地方,就要重复的进行一次上面的工作。而且初学的时候,很容易建立很多个项目作为测试,如果都直接部署在 webapps 下,就会导致服务器启动耗时很长,因为服务器会要读取所有项目的配置信息。

     而且直接部署到服务器的话,相当于把项目从工作空间,物理的复制到了服务器的webapps目录下或者是你指定的其它物理位置,总之就相当于有两份相同的同时存在了。

     总感觉这样很不爽,所以就有了通过虚拟目录的方法来部署项目了。

     虚拟目录的作用是把 Web 的发布目录直接定位到 eclipse 工作目录下,实现实时更新,实时使用,也就不会有复制的过程了。下面介绍的方法不用修改Tomcat的server.xml
        在  Tomcat 8.5\conf\Catalina\localhost  下新建一个和项目名相同的 projectName.xml 文件,文件内容如下

            <Context docBase="F:\workspace\TestEclipse\WebContent" path="/TestEclipse"

             workDir="F:\workspace\TestEclipse\WorKDir" reloadable="true" debug="0"/>

    docBase:项目文件夹的web-inf文件夹的上一层目录
    path:URL的入口地址,访问地址
    wordDir:项目中将jsp转换成Java文件存放的地方

    出现警告 [SetContextPropertiesRule]{Context} Setting property 'debug' to '0' did not find a matching property.
    表示内容中 debug 属性被支持了,只要去除就可以了。

    对于上面这个设置以后,启动服务器后,切记不要在项目上右键选择 Run As --> Run on Server(这样就会被Eclipse部署到服务器上去了)这样运行程序,而是启动服务器后,直接在浏览器输入地址去访问项目。(可以在Eclipse中启动服务器,也可以直接在外部启动服务器不过这样Eclipse中的Server就不知道)。

    例如:http://localhost:8080/TestEclipse/View/test.jsp   这样就访问到了项目根目录下的 WebContent 目录下的 View 目录下的 JSP 页面。

    设置虚拟目录后,每新建一个项目都要写一个对应的简单的配置文件放到 Tomcat8.5\conf\Catalian\localhost 下(基本是复制,只要修改项目名就可以了)。如果有多个项目很明显的影响了服务器启动的时间后,只需要简单的将不需要的使用的配置文件从目录下移除就可以了,需要时添加进去就行了。

Tomcat访问配置文件顺序:

        每当我们访问一个项目的时候,tomcat 首先是到 Tomcat/conf/Catalina/localhost 目录下去察看有没有存在主目录或虚拟目录的xml文件,
        如果有xml文件,就按xml里的路径进行访问,如果没有xml文件,就到 server.xml 文件里去察看是否配置 context 标签,
        如果配置了 context 标签,则在 Tomcat/conf/Catalina/localhost 目录下生成一个对应的 xml 文件,以便于下次直接验证而不再访问 server.xml,
        与此同时打开 context 里指定的路径,如果 server.xml 里没有配置 context 标签,则返回访问错误页面。

运行Web项目提示找不到类:

    当我们的Web项目,需要使用到Java类时,要注意是否能被正确的编译到 WEB-INF/classes 目录下。
    如果运行 web项目时,src下的 java类无法自动编译到 WEB-INF/classes 目录下
    解决方法:

    在菜单栏选择 project,勾选 Build Automaticly 菜单项。
    运行后如果还不可以,Project -> Clean.. 选择第二项Clean projects selected below, 选择OK。(清除以前的编译信息,并重新编译)
    
    如果 WEB-INF 下没有生成 classes 目录,那可能是默认编译文件目录设置错误了,需要手动设置
    project->properties->java build path->source->src,将 Default output folder 设置为[项目名] /WebRoot/WEB-INF/classes ,点击OK。

    (这也就是我们前面说到的,如果新建Dynamic Web Project 的第二步如果没有设置Default output folder,后面怎么修改)

    如果以上3步依然无法解决问题,首先请检查项目是否报错,以及引用的jar包是否路径都正确。
    jar路径不对的话,project->properties->java build path->Libraries,将jar路径不正确的引用remove了,然后Add Extenal JARs,重新添加jar包。    

    由于eclipse的编译是基于时间戳的判断机制的。
    因此当你按build   all的时候有些eclipse认为时间戳没有改变的类不会被编译。可以先clean下