今天看了慕课上面的Spring MVC起步视频,总结出来搭建第一个Spring MVC项目的步骤以供参考。
1. 配置本地Maven。
从官网下载apache-maven-3.5.2-bin.zip,解压至任意目录如E:\maven\。
将conf目录中的setting.xml拷贝至任意目录如E:\maven\.m2\。
修改拷贝好的setting.xml,添加本地仓库路径和Maven镜像站点配置:
E:\Program Files\maven\.m2\repository
mirror-uk
UK Central
http://uk.maven.org/maven2/
central
2. 配置Intellij IDEA的Maven环境。
打开Settings->Build, Execution, Deployment->Build Tools->Maven,设置Maven homedirectory为E:\Program Files\maven\,User settings file后勾选Override后设置为E:\Program Files\maven\.m2\setting.xml。
这样在以后使用IDEA下载Maven依赖时都会下载到配置文件setting.xml中localRepository标签指定的位置。
3. 创建第一个Spring MVC项目。
打开IDEA创建新项目,选择Maven并且勾选Create from archetype,选择下方列出的org.apache.maven.archetypes:maven-archetype-webapp,点击下一步,指定GroupId/ArtifactId点下一步,检查Maven配置点下一步,确认Project配置完成创建。
4. 配置pom.xml加入相关依赖。
4.0.0
MavenTest
MavenExample
war
1.0-SNAPSHOT
MavenExample Maven Webapp
http://maven.apache.org
2.6
1.7.6
4.1.3.RELEASE
org.springframework
spring-framework-bom
${spring.version}
pom
import
junit
junit
3.8.1
test
javax.servlet
jstl
1.2
runtime
javax.servlet
servlet-api
2.5
org.slf4j
slf4j-api
${slf4j.version}
org.springframework
spring-webmvc
${spring.version}
commons-lang
commons-lang
${commons-lang.version}
org.slf4j
slf4j-log4j12
${slf4j.version}
slf4j-api
org.slf4j
MavenExample
5. 添加相关配置文件。
WEB-INF/web.xml:指定配置文件路径、ContextLoadListener、Servlet、Servlet-mapping。
Archetype Created Web Application
contextConfigLocation
WEB-INF/conf/spring/applicationContext*.xml
org.springframework.web.context.ContextLoaderListener
mvc-dispatcher
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
WEB-INF/conf/spring/mvc-dispatcher-servlet.xml
1
mvc-dispatcher
/
按照web.xml中mvc-dispatcher项指定的配置文件路径,配置mvc-dispatcher-servlet.xml。
WEB-INF/conf/spring/mvc-dispatcher-servlet.xml:配置mvc-dispatcher。配置ViewResolver中指定了前缀/WEB-INF/jsps/和后缀.jsp,表明servlet将从/WEB-INF/jsps/路径下寻找后缀名为.jsp的匹配页面文件。
WEB-INF/conf/spring/applicationContext.xml:Spring配置。
6. 添加前端JSP页面。
在WEB-INF\jsps\路径下新建home.jsp页面。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Spring MVC Test
Hello Spring MVC!
7. 添加后端Controller。
在src/main/java下com.adam.spring.controller包下新建HelloMvcController。
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/hello") //HelloMvcController响应/hello请求
public class HelloMvcController {
@RequestMapping("/mvc") //helloMvc()方法响应/hello/mvc请求
public String helloMvc() {
return "home"; //跳转到WEB-INF/jsps/home.jsp
}
}
8. 配置Tomcat服务器。
配置Tomcat,部署Web应用。
9. 启动服务器。
启动Tomcat服务器,地址栏输入localhost:8080/hello/mvc回车,页面会显示出home.jsp的内容。
问题记录:
1. java.lang.NoClassDefFoundError:javax/servlet/jsp/jstl/core/Config
类似错误:java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
解决:导入JSTL包。
WEB-INF下新建lib文件夹,放入jstl-1.2.jar,然后在ProjectStructure-Library中设置lib。
2. Cannot resolve reference to bean'cacheManager' while setting bean property 'cacheManager'; nested exception isorg.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named'cacheManager' is defined
解决:dispatcher-servlet.xml文件中将
xmlns:mvc="http://www.springframework.org/schema/cache"
改为
xmlns:mvc="http://www.springframework.org/schema/mvc"
同时将xsi:schemaLocation标签中进行相应调整。
3. java 非法字符’\ufeff’
编码格式问题。
解决:将文件所有内容复制到Notepad中,然后删除重新创建内容一样的文件。