v1.新建maven工程
a) 打开eclipse,file->new->project->Maven->Maven Project
b) 下一步
c) 选择创建的工程为webapp,下一步
d) 填写项目的group id和artifact id。一般情况下,group id写域名的倒序,artifact id写项目名称即可。最后点完成。
e) 最初建好后,项目目录结构如下
f) 一般的项目目录中,还有src/main/java,src/main/test/java,src/main/test/resources这 三个source folder,需要手动创建。
v2. 修改项目基本设置
a) 右键此项目名称->Properties->Java Build path,点击source标签。
b) 将上missing的文件夹删除,然后重新添加,如下:
c) 重新添加之后的效果如下:
d) 如果某些folder不想 build path,直接remove就行了(本人只选择了src/main/java, 和 src/main/resources),最终如下:
e) 修改jre系统
f) 修改java compiler compliance level 与 jre系统的level一致
g) 修改Project Facets
Dynamic Web Module无法在这里直接修改为3.0,需要打开工程目录下有一个.settings文件夹,打开org.eclipse.wst.common.project.facet.core.xml,做如下修改:
<installed facet="jst.web" version="3.0"/>
重启eclipe就可以看到更改生效了。
v3.必要的配置文件
在Java Resources/scr/main/resources目录下,创建configs文件夹,以便存放在web.xml中声明的配置路径
vapplicationContext.xml (Spring的公共配置文件)
![](https://ucc.alicdn.com/fy5hholq4xfqs/developer-article565778/20241020/9bb288b8026a41dab27e0dbf0d515454.gif)
vspring-mvc-config.xml (springmvc的配置文件)
![](https://ucc.alicdn.com/fy5hholq4xfqs/developer-article565778/20241020/9bb288b8026a41dab27e0dbf0d515454.gif)
vweb.xml配置文件
![](https://ucc.alicdn.com/fy5hholq4xfqs/developer-article565778/20241020/9bb288b8026a41dab27e0dbf0d515454.gif)
最后添加工程依赖的jar包,也就是配置pom.xml, 最终效果图如下
注:其实测试的话没有必要依赖这么多了,只需要将spring-webmvc依赖上就行了。
vpom.xml
![](https://ucc.alicdn.com/fy5hholq4xfqs/developer-article565778/20241020/9bb288b8026a41dab27e0dbf0d515454.gif)
v4.简单的测试
写一个简单的Controller,放在src/main/java文件夹下。然后写一个hello.jsp文件或者hello.ftl文件放在WEB-INF/views目录下,因为在spring-mvc-config.xml中已经指定了<property name="templateLoaderPath" value="/WEB-INF/views/" />(freemarker视图解析器) 和 <property name="prefix" value="/WEB-INF/views/" />(InternalResourceViewResolver视图解析器)视图文件的位置。
Controller
![](https://ucc.alicdn.com/fy5hholq4xfqs/developer-article565778/20241020/9bb288b8026a41dab27e0dbf0d515454.gif)
hello.jsp
![](https://ucc.alicdn.com/fy5hholq4xfqs/developer-article565778/20241020/9bb288b8026a41dab27e0dbf0d515454.gif)
v5.常见问题解决
va) 工程项目有小红叉,但是却找不到错误
window->show view->problems, 查看错误如下:
Dynamic Web Module 3.0 requires Java 1.6 or newer. test line 1 Maven Java EE Configuration Problem
Java compiler level does not match the version of the installed Java project facet. test Unknown Faceted Project Problem (Java Version Mismatch)
解决办法:
在pom.xml中添加如下代码, 然后右键项目->maven->update project
<profiles> <profile> <id>jdk-1.7</id> <!-- 另外一种激活方式 --> <activation> <activeByDefault>true</activeByDefault> <jdk>1.7</jdk> </activation> <properties> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> <maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion> </properties> </profile> </profiles>
vb) 用tomcat启动工程时出现 如下的错误:
严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1305) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1139) at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:518) at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:499) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4733) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5251) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
解决办法:右键项目->properties->Deployment Assembly, 然后添加 maven dependencies
vc) 采用uuid主键生成策略遇到的问题
No generator named "uuid" is defined in the persistence unit
解决办法:右键项目->properties->JPA->Errors/Warnings, 或者 window->preferences->java persistence->JPA->Errors/Warnings
vd)maven工程在tomcat中的结构
maven工程的src/main/webapp 中的内容会在tomcat项目的根目录下,还有就是maven工程的target中的classes文件夹会在tomcat项目的根目录下。