此文仅记录springmvc从0到1的初步使用,并加以目前对各配置的浅显理解,便于以后复习查看与纠正,对于理论性的东西不多BB,开整!
1.初期配置
1.往pom.xml中配置坐标,导入依赖
<properties>
<spring.version>5.0.2.RELEASE</spring.version><!-- 版本绑定,此处统一控制导入spring依赖的版本 -->
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId><!--引入spring的大量基础jar-->
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId><!--spring为javaweb开发提供的工具类、辅助类(如编码过滤器)-->
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId><!--springmvc-->
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId><!--servlet依赖-->
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId><!--jsp依赖-->
<version>2.1</version>
</dependency>
</dependencies>
2.将前端控制器(DispatcherServlet)配置到web.xml中(初步)
<!--springmvc的前端控制器-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--由spring提供-->
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern><!--拦截所有的请求(所有的请求都会经过springmvc的前端控制器处理)-->
</servlet-mapping>
3.手动为前端控制器创建配置文件springmvc.xml(文件名随意)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!--1.开启注解的扫描:用于扫描controller-->
<context:component-scan base-package="com.sringmvc" ></context:component-scan>
<!--2.配置上视图解析器,处理controller的返回值-->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"></property><!-- controller返回字符串前面拼接 -->
<property name="suffix" value=".jsp"></property><!-- controller返回字符串后面拼接.jsp -->
</bean>
<!--3.开启springmvc注解的支持(@RequestMapping),同时配置了处理器映射器、处理器适配器等组件-->
<mvc:annotation-driven></mvc:annotation-driven>
</beans>
4.回头更新web.xml中前端控制器的配置(将1.3配置到前端控制器中)
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--新增配置-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value><!--1.将3创建的springmvc的配置文件配置给前端控制器-->
</init-param>
<load-on-startup>1</load-on-startup><!--2.配置前端控制器随web容器的启动而加载-->
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
到此,springmvc的初期配置已经完成
2.测试
1.建立测试controller
package com.sringmvc;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller/*将此类交由spring管理*/
@RequestMapping("/user")/*请求地址映射(相当于一级目录)*/
public class HelloController {
@RequestMapping(path = "/index")/*请求地址映射(相当于二级目录)*/
public String index(){
return "index";//返回值由视图解析器处理
}
}
2.在浏览器直接通过url进行请求
http://localhost:8080/springmvc_start_war/user/index
3.请求成功到达Hellocontroller的index方法,并通过视图解析器拼接完整文件路径,返回index.jsp页面
3.过程总结:
1.tomcat服务器启动同时创建了前端控制器对象
2.前端控制器对象在创建的过程中,读取springmvc.xml配置文件,扫描controller,创建视图解析器、处理器映射器、处理器适配器等对象
3.页面请求到达服务器后,因web.xml中配置前端控制器会拦截所有的请求,所以请求交由前端控制器进行管理
4.前端控制器根据@RequestMapping,找到请求url对应的请求地址,并交由该方法进行处理
5.前端控制器将处理返回的字符串通过视图解析器,拼接前缀、后缀,找到对应页面,响应给用户