SpringMVC介绍:
在使用Spring+Mybatis完成功能开发的时候,仍然需要Servlet进行请求的处理,需要在Servlet中声明编码格式,获取请求数据,处理请求数据,响应结果等。如果请求的数据量较多,有的数据还需要强制类型转换,封装对象,极其影响开发的效率,而且实现一个功能需要创建一个Servlet,导致Servlet过多不好管理。
SpringMVC:将Servlet进行封装,一个项目只有一个Servlet,该Servlet根据请求动态的调用对应的方法进行处理请求和响应结果。
SpringMVC的本质:封装一个Servlet,可以根据请求实现动态的调用对象的方法完成请求的处理。
SpringMVC基本使用流程:
- 导入jar包:Spring官网下载
- 在web.xml文件中配置SpringMVC的Servlet
<servlet>
- 声明控制器类(Controller),并声明单元方法,需要使用@Controller注解声明类为控制类bean,在单元方法上使用@RequestMapping("别名"),声明方法的访问别名
@Controller
- 声明SpringMVC的配置文件,配置注解扫描路径,配置Spring注解解析器
<!--配置注解扫描-->
- 发起访问请求:localhost:8080/虚拟项目名/单元方法别名
SpringMVC的运行流程:
注意:启动服务器时,DispatcherServlet会被加载初始化,会触发器init方法,init方法会初始化创建SpringMVC的容器对象,而SpringMVC的容器对象在被创建的时候会默认加载web-inf下的配置文件,根据配置文件中的配置信息将控制类的单元方法作为对象存储到其中。
执行流程:浏览器发起请求给服务器--服务器接收到请求会根据请求执行Servlet,而项目中只配置了DispatcherServlet,并且拦截路径为除了jsp以外的所有请求,tomcat开始执行DispatcherServlet中的service方法,会根据请求地址中的单元方法的别名调用其对应的单元方法--单元方法开始执行其中声明的请求处理的代码。
浏览器-->服务器-->Servlet-->Controller--->Service--->mapper
SpringMVC配置优化:
按照SpringMVC的使用方式,DispatcherServlet在被初始化的时候会创建SpringMVC对象,而SpringMVC对象默认在WEN-INF下加载其配置文件,而且配置文件的名字必须为Servlet名+Servlet.xml,但是希望可以将配置文件声明在src目录下,并且文件的名字可以自定义,咋整?
解决:在web.xml的servlet中配置SpringMVC的配置文件信息,告诉SpringMVC的配置文件在src下,告诉SpringMVC的配置文件的文件名。
<!--配置Servlet-->
SpringMVC的静态资源放行:
在springMVC的配置文件中声明静态资源放行,注意不能在单元方法中出现单元方法的别名和静态资源的某个访问的路径相同;
<!--配置静态资源放行-->