你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

SpringMVC(2):

2021/12/21 2:42:08

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();

​ }

​ }

}