1、SpringMVC 概述
1.1 SpringMVC 基本说明
- SpringMVC是基于Spring的, 是Spring中的一个模块,做web开发使用的。 SpringMVC 叫做Spring Web MVC。
- SpringMVC是Spring的核心技术, 做Web开发,SpringMVC内部是使用mvc架构模式。
- SpringMVC 是一个容器, 管理对象的,使用IoC核心技术。
- SpringMVC管理界面层中的控制器对象。
- SpringMVC底层也是Servlet。 以Servlet为核心, 接收请求,处理请求。 显示处理结果给用户。
处理用户的请求:
- 用户发起请求----SpringMVC—Spring—MyBatis–mysql数据库。
SpringMVC三层架构理解:SpringMVC教程 - 动力节点
1.2、SpringMVC中的核心Servlet – DispatcherServlet
- DispatcherServlet 是框架一个Servlet对象。 负责接收请求, 响应处理结果。
- DispatcherServlet 父类是 HttpServlet。
- DispatcherServlet 也叫 前端控制器。
SpringMVC是管理控制器对象, 原来没有SpringMVC之前使用 Servlet作为控制器对象使用。
现在通过SpringMVC容器创建一种叫做控制器的对象,代替Servlet行驶控制器的角色。
SpringMVC 主要使用注解的方式, 创建控制器对象, 处理请求。
<servlet>
<servlet-name>myweb</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>
</init-param>
<!--
表示服务器tomcat创建对象的顺序, 是个整数值, 大于等于0.
数值越小,创建对象的时间越早。
-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>myweb</servlet-name>
<!--
url-pattern 作用: 把一些请求交给指定的servlet处理
使用中央调度器(DispatcherServlet)
1. 使用扩展名方式, 格式 *.xxx , xxx是自定义的扩展名。
例如 *.do , *.action, *.mvc 等等. 不能使用*.jsp
http://localhost:8080/myweb/some.do
http://localhost:8080/myweb/user/list/queryUser.do
http://localhost:8080/myweb/user/list/list.do
2. 使用斜杠 "/"
-->
<url-pattern>*.do</url-pattern>
</servlet-mapping>
1.3、SpringMVC请求的处理过程
用户发起请求some.do—>Tomcat接收了请求—DispatcherServlet–分配MyController(doSome()返回mv对象)–mv显示给用户了。
省略tomcat
用户some.do--------------DispatcherServlet--------------MyController
如果使用servlet处理请求
用户发起请求--------------------没有其他对象------------------------Servlet
1.4、用户发起some.do—DispatcherServlet(Servlet接收请求)—转给MyController
public class DispatcherServlet extends HttpServlet{
public void service(HttpServletRequest request, HttpServletResponse response){
if(“some.do”.equals(request.getURI())){
//从容器中获取MyController
MyController c = ctx.getBean(“some”));
c.doSome();
} e lse if( “other.do”.equals(request.getURI())){
OtherController c = ctx.getBean(“other”));
c.doOther();
}
}
}