前段时间的工作中一直使用spring boot开发,spring boot本身确实开发很快,自动配置确实帮我们省去了不少的麻烦,但是这也是一把双刃剑,如果你不是从spring mvc转过来的,很多的细节就无从了解,真正出问题的时候也会无从下手,因此我打算从零开始用maven建一个spring mvc的工程,这篇文字就记录了操作的过程。
新建maven工程
打开idea, 新建一个maven工程,工程名为SpringMvcDemo
工程建好后,在maven的pom.xml文件加入spring mvc的jar包依赖,如下:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.liuzhijian</groupId> <artifactId>springmvc</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.0.6.RELEASE</version> </dependency> </dependencies> </project>
新增配置文件
在src/main目录下新建一个web的目录,并在web目录下再建一个WEB-INF的目录,并在该目录下新建web.xml,dispatcher-servlet.xml, 结构如下:
在idea中选择项目的module模块,新增一个web模块配置如下,注意配置好下面2个红框的选项,web.xml,dispatcher-servlet.xml具体配置见文末的附件
添加controller
在src/main/java后新建一个package(com.liuzhijian), 在其中新建一个controller叫AppController,代码如下:
@RestController public class AppController { @PostConstruct public void AppController(){ System.out.println("Initial"); } @RequestMapping("/index") public String test(){ return "ok"; } }
启动项目
配置用本地tomcat启动之前,现在项目配置中新增一个打包如下,记住把右边所有的jar包都加入到最后的包中
在IDEA上面工具栏里的Run/Debug Configuration中新增Local, 选择tomcat,并在Deployment中新增Artifact,配置如下:
点击启动,访问localhost:port/index, 如果一切配置正确的话,结果返回的是ok, 完事!!
常见问题总结
- 打包后的WEB-INF文件夹下没有spring的配置文件,这个要注意在新建web module时对上面提到的2个红框标记的配置。
- 启动后报某些类找不到,这个要注意在配置项目的Artifact选项时,要记得把右边项目所有的引用包都加到左边的打包中,这样才能保证不少jar包。
- 遇到启动后404,后端的日志也没有报错的情况,这个其实可以在对应的bean类新增一个无参数构造函数或者@PostContruct标记的方法,启动后看看这个函数是否执行,如果没有执行,说明spring容器没有启动或者spring容器没有扫到这个包。如果要确定是不是spring容器没有启动,只需在debug模式种往DispatcherServlet类的构造函数中设置一个断点,看看断点是否执行。如果是包没有被扫到,很简单,只需要检查一下dispatcher-servlet.xml中的配置是否包括你的包路径
<context:component-scan base-package="com.liuzhijian"/>
欢迎关注我的个人的博客www.zhijianliu.cn, 虚心求教,有错误还请指正轻拍,谢谢
版权声明:本文出自志健的原创文章,未经博主允许不得转载