zoukankan      html  css  js  c++  java
  • Eclipse下搭建Maven Servlet3.0环境

    验证一个示例项目想要用Maven创建一个Servlet3.0的工程,原以为和普通的Maven工程一样很方便就搭建好了,谁知还碰到了几个坑,因此记下处理过程。

    一、创建Maven Webapp工程

    1)通过Eclipse创建一个Maven webapp工程:File菜单/右键 –> New –> Project[Maven Project]

    image

    2)不勾选[Create a simple project]选项,然后点击 Next ,到下移视图,如下:

    image

    3)在此处选择【maven-archetype-webapp】,然后Next,填写Maven的groupId,ArtifactId基本信息,修改Package等

    image

    4)点击Finish,完成基本的创建工作。创建Maven的结构如下图:

    image

    从上图可以看出,这个并不是默认的maven项目的标准结构(在源代码文件夹中只有src/main/resource,没有src/main/java,src/test),并且还报了几个错误,我们需要进行一些改动。

    二、解决所创建工程的问题

    1、按照标准Maven项目结构补上缺少目录

    1)在项目下创建一个Source Folder: Folder Name:src/main/java,然而却提示 The folder is already a source folder. <明明没有啊>

    image

    2)此时需要工程的Build Path:点击工程,右键-> Build Path –> Configure Build Path[Source] ,如下图,将其中【missing】的错误的路径,其remove掉;

    image

    然后在重新创建Source Folder即可。

    2、将工程修改为Servlet3.0版本

    在工程上右键->Properties-> Project Facets,可以看到默认创建的web工程是Servlet2.3的,如下图:

    image

    但是,直接将工程的版本修改为3.0,会提示:Cannot change version of project facet Dynamic web module to 3.0,并且无法确认修改

    image

    解决方法:进入工程的.settings目录,修改org.eclipse.wst.common.project.facet.core.xml文件

    image 

    将此处的2.3修改为3.0或(3.1等更高),保存之后,再在Eclipse中刷新工程,然后使用Maven->Update Project。

    再次查看工程的Project Facets可以看到工程已经变为了3.0。如下图:

    3、再次处理Servlet版本问题

    通过上面两个操作基本解决了工程的一些错误,但是当在pom.xml文件中添加了如下的配置时,发现工程中又有错误,同时Eclipse的Problems视图中也有相关的错误提示。

    image

    Eclipse仍然提示:Cannot change version of project facet Dynamic web module to 3.0,

    并且如果该问题没有解决,直接在Eclipse中将工程发布到Tomcat时,虽然可以正常启动Tomcat不会报错,但是Tomcat就是不会加载已经发布项目。

    image

    这时再次检查工程会发现,在web.xml中对应的文件头部仍然是Servlet2.3的,如下:

    image

    需要将此文件头修改为Servlet3.0的 或者 直接删除该文件,采用Servlet3.0注解的方式(无需web.xml的形式)。

    附:Servlet3.0/3.1 web.xml文件头部内容:

      1 <?xml version="1.0" encoding="UTF-8"?>
      2 
      3 <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
      4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
      6 
      7     <display-name>Archetype Created Web Application</display-name>
      8 </web-app>
      1 <?xml version="1.0" encoding="UTF-8"?>
      2 
      3 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      4     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
      5          http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
      6     version="3.1">
      7     <display-name>Archetype Created Web Application</display-name>
      8 </web-app>

    之后再次Maven-Update Project即可解决该错误。

    三、小结

    在Eclipse中创建的Maven webapp项目默认是Servlet2.3版本,如果需要修改Servlet版本不能直接修改,必须修改项目的org.eclipse.wst.common.project.facet.core.xml文件并同时修改web.xml文件头部引用。

    【参考】

    [1] org.eclipse.wst.common.project.facet.core.xml文件 

    [2]  Eclipse下搭建Maven Servlet3.0环境 

    [3] 在Eclipse中显示.project和.classpath和.setting目录 

    [4] sevlet 3.0 web项目搭建及web.xml讲解 

    [5] Eclipse开发环境创建Servlet3.0 Maven WebApp 项目 

    [6] Maven之项目搭建与第一个helloworld(多图)

  • 相关阅读:
    redis对string进行的相关操作
    bs4解析库
    redis对键进行的相关操作
    python常见的函数和类方法
    一些(也许)有用的技巧以及注意事项
    【复健内容】NOIP2020 题解
    类欧几里得的一个方法
    UOJ Round #12
    Goodbye Yiwei
    UOJ Round #11
  • 原文地址:https://www.cnblogs.com/KnightKitt/p/9980918.html
Copyright © 2011-2022 走看看