分享

从 Spring Boot到 Spring MVC(注解方式)

 新用户8719ag3P 2021-12-14

  从 Spring Boot到 Spring MVC(注解方式)

  概述

  我们远离了 Spring Boot的开箱即用与自动配置的便利性后,回归到了淳朴的 Spring MVC开发时代,但是以非注解的方式来给出的,而本文则以注解方式再度讲述一遍。

  Spring MVC架构模式

  从 Spring Boot到 Spring MVC(注解方式)

  一个典型的Spring MVC请求流程如图所示,详细分为12个步骤:

  用户发起请求,由前端控制器DispatcherServlet处理前端控制器通过处理器映射器查找hander,可以根据XML或者注解去找处理器映射器返回执行链前端控制器请求处理器适配器来执行hander处理器适配器来执行handler处理业务完成后,会给处理器适配器返回ModeAndView对象,其中有视图名称,模型数据处理器适配器将视图名称和模型数据返回到前端控制器前端控制器通过视图解析器来对视图进行解析视图解析器返回真正的视图给前端控制器前端控制器通过返回的视图和数据进行渲染返回渲染完成的视图将最终的视图返回给用户,产生响应

  整个过程清晰明了,下面我们将结合实际实验来理解这整个过程。

  Spring MVC项目搭建

  实验环境如下:

  IntelliJ IDEA 2021.1 (Ultimate Edition)SpringMVC 4.3.9.RELEASEMaven 3.3.9

  这里我是用IDEA来搭建的基于Maven的SpringMVC项目,搭建过程不再赘述,各种点击并且下一步,最终创建好的项目架构如下:

  从 Spring Boot到 Spring MVC(注解方式)

  添加前端控制器配置

  使用了SpringMVC,则所有的请求都应该交由SpingMVC来管理,即要将所有符合条件的请求拦截到SpringMVC的专有Servlet上。

  为此我们需要在 web.xml 中添加SpringMVC的前端控制器DispatcherServlet:

  mvc-dispatcher

  org.springframework.web.servlet.DispatcherServlet

  contextConfigLocation

  classpath:mvc-dispatcher.xml

  mvc-dispatcher

  *.action

  该配置说明所有符合.action的url,都交由mvc-dispatcher这个Servlet来进行处理

  编写Spring MVC核心XML配置文件

  从上一步的配置可以看到,我们定义的mvc-dispatcher Servlet依赖于配置文件 mvc-dispatcher.xml,在本步骤中我们需要在其中添加如下的配置

  添加注解的处理器适配器和处理器映射器

  方式一:

  方式二:

  编写控制器

  由于使用了注解的处理器映射器和处理器适配器,所以不需要在XML中配置任何信息,也不需要实现任何接口,只需要添加相应注解即可。

  @Controller

  public class TestController {

  private StudentService studentService=new StudentService();

  @RequestMapping("/queryStudentsList")

  public ModelAndView handleRequest( ) throws Exception {

  List studentList=studentService.queryStudents();

  ModelAndView modelAndView=new ModelAndView();

  modelAndView.addObject("studentList",studentList);

  modelAndView.setViewName("/WEB-INF/views/studentList.jsp");

  return modelAndView;

  }

  }

  class StudentService {

  public List queryStudents() {

  List studentList=new ArrayList();

  Student hansonwang=new Student();

  hansonwang.setName("hansonwang99");

  hansonwang.setID("123456");

  Student codesheep=new Student();

  codesheep.setName("codesheep");

  codesheep.setID("654321");

  studentList.add(hansonwang);

  studentList.add(codesheep);

  return studentList;

  }

  }

  为了让注解的处理器映射器和处理器适配器找到注解的Controllor,有两种配置方式:

  方式一:在xml中声明Controllor对应的bean

  方式二:使用扫描配置,对某一个包下的所有类进行扫描,找出所有使用二手手机拍卖@Controllor注解的Handler控制器类

  编写视图文件

  这里的视图文件是一个jsp文件,路径为:

  /WEB-INF/views/studentList.jsp

  <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

  <%@ taglib uri="java.sun/jsp/jstl/core" prefix="c" %>

学生列表

姓名学号
${student.name}${student.ID}

  实验测试

  启动Tomcat服务器,然后浏览器输入:

  localhost:8080/queryStudentsList.action

  从 Spring Boot到 Spring MVC(注解方式)

  数据渲染OK。

  后 记

  由于能力有限,若有错误或者不当之处,还请大家批评指正,一起学习交流!

  感兴趣的可以自己来我的Java架构群,可以获取免费的学习资料,群号:798891710对Java技术,架构技术感兴趣的同学,欢迎加群,一起学习,相互讨论。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多