写点什么

Spring MVC 温故而知新 – 从零开始

作者:Java高工P7
  • 2021 年 11 月 11 日
  • 本文字数:1970 字

    阅读完需:约 6 分钟

视图解析器(View Resolver):解析具体视图,通过 ModelAndView 对象中的 View 信息,将逻辑视图名解析成真正的视图 View


请求流程具体步骤详解:


1:用户发起请求,请求会被前端控制器(DispatcherServlet)拦截


2:前端控制器(DispatcherServlet)请求处理器映射器(HandlerMapping)查找 Handler


3:处理器映射器(Handle


【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


rMapping)根据配置找到相应 Handler(可以更具注解或者 XML 配置),可能包含多个 Interceptor 拦截器,返回给前端控制器


4:前端控制器(DispatcherServlet)请求处理器适配器(HandlerAdapter)去执行相应的 Handler


5:适配器交由对应 Handler 处理器执行


6: ?Handler 处理器执行完成后返回 ModelAndView 对象给处理器适配器


7:处理器适配器接受 Handler 处理器的返回结果,并将该结果返回给前端控制器(DispatcherServlet)


8:前端控制器(DispatcherServlet)接收处理器适配器返回的数据和视图信息,请求视图解析器,解析对应的视图


9:视图解析器根据 View 信息匹配的相应的视图结果,反回给前端控制器


10:前端控制器接收具体视图,进行视图渲染,将 Model 数据填充到 View 视图中,生成最终视图


11:前端控制器向用户返回结果

? 从零开始搭建 demo

? 创建工程:

Eclipse 下新建一个动态 Web 项目



工程默认目录结构:


? 添加 jar 包依赖

WebContent > WEB-INF > lib 文件夹下导入相应的 jar 包,其中核心的 jar 包是 spring-webmvc-5.0.0.RELEASE.jar,其他是几个主要是 spring 用于管理上下文和 beande 包、jstl 标签库和一个用于打印日志的 log 包:


? 在 web.xml 中配置前端控制器

前端控制器相当于 Spring MVC 的专有 servlet,用于拦截所有符合条件的请求,交由框架做后续处理



<?xml version="1.0" encoding="UTF-8"?>


<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"


xmlns="http://xmlns.jcp.org/xml/ns/javaee"


xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"


id="WebApp_ID"


version="3.1">


<servlet>


<servlet-name>springMvcNext</servlet-name>


<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>


<init-param>


<param-name>contextConfigLocation</param-name>


<param-value>classpath:applicationContext.xml</param-value>


</init-param>


</servlet>


<servlet-mapping>


<servlet-name>springMvcNext</servlet-name>


<url-pattern>/</url-pattern> <!--根据 url-pattern 设定的规则拦截用户发来的请求 此处拦截所有请求,包括静态资源 ->


</servlet-mapping>


</web-app>



其中<servlet-mapping>标签中定义 url 匹配规则为符合*.action 的形式,对应的 servlet 名为 springMvcNext,而<servlet>配置的控制器为 org.springframework.web.servlet.DispatchServlet,该控制器为当前 SpringMVC 项目的前端控制器,<init-param>标签为当前控制器依赖的参数,两个参数分别代表上下文参数和参数加载路径。


关于 classpath:代表 web 项目编译后编译后的输出路径



配置 spring MVC 配置

在 java 源代码更目录下添加 applicationContext.xml 文件



具体内容:



<?xml version="1.0" encoding="UTF-8"?>


<beans xmlns="http://www.springframework.org/schema/beans"


xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"


xmlns:context="http://www.springframework.org/schema/context"


xmlns:mvc="http://www.springframework.org/schema/mvc"


xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd


http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd


http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd


http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">


<context:component-scan base-package="com.sl.controller" />


<mvc:annotation-driven />


<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">


<property name="prefix" value="/WEB-INF/view/" />


<property name="suffix" value=".jsp" />


</bean>


</beans>


? 添加控制器 Controller 与视图 View


?


Src 目录下添加包 com.sl.controller,添加控制器代码如下:



package com.sl.controller;


import org.springframework.stereotype.Controller;


import org.springframework.web.bind.annotation.RequestMapping;


import org.springframework.web.servlet.ModelAndView;

用户头像

Java高工P7

关注

还未添加个人签名 2021.11.08 加入

还未添加个人简介

评论

发布
暂无评论
Spring MVC温故而知新 – 从零开始