【SpringMVC02】SpringMVC开发流程

1 导入SpringMVC依赖

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.1.6.RELEASE</version>
</dependency>

2 配置前端控制器

SpringMVC框架作为一个MVC框架核心需要解决的是接受请求的问题。

一般MVC框架大都会设计一款前端控制器,选型在Servlet或Filter两者之一,在框架前沿率先工作,接收所有的请求。

SpringMVC的前端控制器以Servlet作为选型,并且在接收到请求后,还会负责SpringMVC的核心调度管理,所以SpringMVC的前端控制器既是前端、也还是核心。

配置SpringMVC前端控制器即是配置一个可以接收所有请求的Servlet:

web.xml:

<servlet>
    <servlet-name>mvc_qiang</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>mvc_qiang</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
  • <load-on-startup>1</load-on-startup>:可选配置,一般Servlet都是懒汉式加载,配置了这个属性以后就可以饿汉式加载;

3 编写后端控制器

后端控制器等价于之前定义的Servlet。

@Controller
@RequestMapping("/hello")
public class HelloMVC {

    @RequestMapping("test1")
    public String hello1(){
        System.out.println("hello1");
        return "hello";
    }

    @RequestMapping("test2")
    public String hello2(){
        System.out.println("hello2");
        return "hello";
    }
}
  • @Controller:声明此类是一个后端控制器;

  • public String hello1():相当于原来Servlet中的service/doGet/doPost方法;

  • 与Servlet不同的是:Servlet是一个单方法的控制器,一个Servlet中只能有一个service/doGet/doPost方法;SpringMVC后端控制器一个类中可以有多个方法;

4 配置SpringMVC配置文件

SpringMVC配置文件是一个xml类型的工厂配置文件,和Spring配置文件并没有特别大的区别:

mvc.xml:

<beans 	xmlns="http://www.springframework.org/schema/beans"
          xmlns:context="http://www.springframework.org/schema/context"
          xmlns:mvc="http://www.springframework.org/schema/mvc"
          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/context
							http://www.springframework.org/schema/context/spring-context.xsd
							http://www.springframework.org/schema/mvc
							http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <context:component-scan base-package="com.jackqiang.controller"/>
    <mvc:annotation-driven/>
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 前缀 -->
        <property name="prefix" value="/"></property>
        <!-- 后缀 -->
        <property name="suffix" value=".jsp"></property>
    </bean>
</beans>
  • <context:component-scan base-package="com.jackqiang.controller"/>:开启注解扫描;

  • <mvc:annotation-driven/>:注解驱动;

  • <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">:视图解析器

    • 捕获后端控制器的返回值,例如字符串"hello";

    • 拼接,在捕获到的值前后拼接前后缀,例如"/hello.jsp"

配置完毕以后需要将配置文件配置到前端(核心)控制器中:

<servlet>
    <servlet-name>mvc_qiang</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>mvc_qiang</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

至此SpringMVC一般开发流程配置完毕,启动一个Tomcat服务器进行测试:

总结:

  • SpirngMVC项目启动时会首先启动工厂,加载所有配置好的组件(注解扫描、视图解析器等);

  • SpringMVC接收请求到做出响应的顺序:

    • 前端控制器;

    • 后端控制器;

    • 视图解析器;

    • JSP;

 

版权声明:
作者:jackqiang
链接:http://www.jackqiang.com/framework/springmvc/2079/springmvc_flow/
来源:JackQiang's
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录