SpringMVC入门案例的五部曲
准备工作:
开发环境:
IDEA:2020.2
构建工具:Maven3.6.3
服务器:Tomcat8.0.50
Spring版本:5.3.1
创建Maven工程:
给新的Maven取名和设置坐标
添加web模块->打开Project Structure…
将当前的打包方式设置为war包->在pom.xml的文件中添加
结果如下所示:
设置web.xml的方法->使用右边的+来添加
注意:路径WEB-INF是否在\src\main\webapp目录下,最后点击ok即可
结果如下所示:
在pom.xml文件中导入依赖
<dependencies> <!--SpringMVC--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.1</version> </dependency> <!--日志--> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> <!--ServletAPI--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <!--spring5和Thymeleaf整合包--> <dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf-spring5</artifactId> <version>3.0.12.RELEASE</version> </dependency> </dependencies>
注意:由于Maven的传递性,不必将所有需要的全部配置依赖,而是配置最顶端的依赖,其他靠传递性导入即可。
配置web.xml文件:
注册SpringMVC的前端控制器DispatcherServlet
默认配置方式:
在该配置下SpringMVC的配置文件在WEB-INF目录下,默认名称为<servlet-name>-
servlet.xml,例如,以下配置所对应SpringMVC的配置文件位于WEB-INF下,文件名为springMVCservlet.xml
扩展配置方式:
可以通过init-param标签设置SpringMVC配置文件的位置和名称,再通过load-on-startup标签设置SpringMVC前端控制器DispatcherServlet的初始化时间
创建SpringMVC的配置文件并配置:
创建请求控制器:
由于前端控制器对浏览器发送的请求进行了统一的处理,但是具体的请求有不同的处理过程,因此需要创建处理具有请求的类,即请求控制器;
请求控制器中每一个处理请求的方法成为控制器方法,因为SpringMVC的控制器由一个POJO(普通的java类)担任,因此需要通过@Controller注解将其标识为一个控制层组件,交给Spring的IOC容器管理,此时SpringMVC才能够识别控制器的存在
创建一个控制层的类并添加@Controller注解
创建一个配置文件
结果如下所示:
在SpringMVC-servlet的文件中添加扫描组件
再次在SpringMVC-servlet添加配置Thymeleaf视图解析器
在WEB-INF目录下创建一个templates目录来存放页面
在templates目录下创建html文件
功能测试:
部署tomcat->点击
点击+进行添加
取名:切记必要忘记添加Application server的tomcat
点击Deployment后再点击右边的+进行添加
结果入手所示:
运行结果如下所示:
注意:
若运行时出现500的错误,注意SpringMVC-servlet的文件中将引入的换成如下所示即可
<?xmlversion="1.0"encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd
">
来渲染(解析路径):在index.xml的文件中添加超链接和引入thymeleaf的约束
使用thymeleaf会自动的把上下文路径加上的
创建一个新的html文件
页面内容如下所示:
在HelloController的控制层添加方法
运行结果:
点击测试:
总结:
浏览器发送请求,若请求地址符合前端控制的url-pattern,该请求就会被前端控制器DispatcherServlet处理,前端控制器会读取SpringMVC的核心配置文件,通过扫描组件找到控制器,将请求地址和控制器中@RequestMapping注解的value属性值进行匹配,若匹配成功,该注解所标识的控制器就是处理请求的方法。处理请求的方法需要返回一个字符串类型的视图名称,该视图名称会被视图解析器解析,加上前缀和后缀组成视图的路径,通过Thymeleaf对视图进行渲染,最终转发到视图所对应的页面。