• SpringMVC框架


    SpringMVC

    1 介绍

    SpringMVC是一个基于Java的、扩展性强的轻量级Web框架,它是Spring框架的一部分,用于构建Web应用程序。SpringMVC提供了一种松散耦合的设计方法,通过分离应用程序的不同组件(模型、视图和控制器)来提高可维护性和灵活性。

    以下是SpringMVC的一些主要特点和概念:

    1. 模型-视图-控制器(MVC)架构: SpringMVC采用经典的MVC设计模式,将应用程序分为模型(Model,处理业务逻辑)、视图(View,负责展示数据)和控制器(Controller,或Handler,处理用户请求和返回响应)三个组件。

    2. 前端控制器(DispatcherServlet): SpringMVC采用前端控制器模式,所有的请求都由一个单一的控制器(DispatcherServlet)来处理,它负责将请求分发给合适的处理器(Handler)进行处理。

    3. 处理器映射器(HandlerMapping): 处理器映射器负责将请求映射到合适的处理器(Handler)上,根据请求的URL来确定使用哪个Handler处理请求。

    4. 处理器适配器(HandlerAdatper): 处理器适配器根据 Handler 规则执行不同类型的 Handler

    5. 视图解析器(ViewResolver): 视图解析器负责将逻辑视图名解析为具体的视图对象,这样控制器就可以返回逻辑视图名,而不需要关心具体的视图对象。

    6. 后端控制器(处理器 Handler):接收表单数据、超链接数据、调用service进行相关的操作

    2 SpringMVC 工作流程

    流程图:
    在这里插入图片描述
    SpringMVC 的工作流程步骤:

    1. 客户端发送请求给前端控制器(DispatcherServlet)。
    2. 前端控制器请求处理器映射器(HandlerMapping)获取 Handler(或Controller)。
    3. 处理器映射器(HandlerMapping)根据配置或注解给前端控制器返回 Handler。
    4. 前端控制器(DispatcherServlet)请求处理器适配器(HandlerAdatper)执行 Handler。
    5. 处理器适配器(HandlerAdatper)执行 Handler。
    6. Handler执行完后给处理器适配器(HandlerAdatper)返回 ModelAndView。
    7. 处理器适配器(HandlerAdatper)将 ModelAndView 返回给前端控制器(DispatcherServlet)。
    8. 前端控制器(DispatcherServlet)请求视图解析器(ViewResolver)解析 ModelAndView。
    9. 视图解析器(ViewResolver)将解析后的 View 返回给前端控制器(DispatcherServlet)。
    10. 前端控制器(DispatcherServlet)对 View 进行渲染,并且把 Model 数据转为响应。
    11. 前端控制器(DispatcherServlet)向客户端响应结果。

    3 SpringMVC 开发步骤

    1. 项目准备
    2. 配置前端控制器(DispatcherServlet)
    3. 配置处理器适配器(HandlerAdatper)
    4. 开发Handler
    5. 视图编写
    6. 配置Handler
    7. 配置处理器映射器(HandlerMapping)
    8. 配置视图解析器(ViewResolver)
    9. 部署测试

    4 案例

    4.1 注解开发

    1.web.xml 配置前端控制器

    	
        <servlet>
            <servlet-name>springmvcservlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
            
            <init-param>
                <param-name>contextConfigLocationparam-name>
                <param-value>classpath:springmvc.xmlparam-value>
            init-param>
        servlet>
        
        <servlet-mapping>
            <servlet-name>springmvcservlet-name>
            <url-pattern>*.actionurl-pattern>
        servlet-mapping>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2.springmvc.xml 配置处理器适配器、处理器映射器以及视图解析器

    	
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">bean>
        
        
        
        <mvc:annotation-driven>mvc:annotation-driven>
        
        <context:component-scan base-package="com.kdx.controller">context:component-scan>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3.实体类Student

    public class Student implements Serializable {
    
        private Integer id;
        private String name;
        private String sex;
        private Integer age;
    
        public Student() {
        }
    
        public Student(Integer id, String name, String sex, Integer age) {
            this.id = id;
            this.name = name;
            this.sex = sex;
            this.age = age;
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

    4.开发Handler

    @Controller
    public class StudentController1 {
    
        @RequestMapping("/queryStudent")
        public ModelAndView handleRequest() throws Exception {
            Student student1 = new Student(1,"kong","男",18);
            Student student2 = new Student(2,"sun","男",18);
            Student student3 = new Student(3,"wu","男",18);
    
            List<Student> studentList = new ArrayList<>();
            studentList.add(student1);
            studentList.add(student2);
            studentList.add(student3);
    
            ModelAndView modelAndView = new ModelAndView();
            modelAndView.addObject("studentList",studentList);
            modelAndView.setViewName("/WEB-INF/jsp/studentList.jsp");
    
            return modelAndView;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    5.开发视图

    <c:forEach items="${requestScope.studentList}" var="s">
        ${s.id}   
        ${s.name}   
        ${s.sex}   
        ${s.age}   
        <hr/>
    c:forEach>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    6.部署测试
    在这里插入图片描述

    4.2 XML配置开发

    更改 springmvc.xml

    	
        <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter">bean>
    
        
        <bean name="/queryStudent.action" class="com.kdx.controller.StudentController">bean>
    
        
        <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">bean>
    
        
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">bean>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    开发Handler:

    public class StudentController implements Controller {
    
        @Override
        public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
            Student student1 = new Student(1,"kong","男",18);
            Student student2 = new Student(2,"sun","男",18);
            Student student3 = new Student(3,"wu","男",18);
    
            List<Student> studentList = new ArrayList<>();
            studentList.add(student1);
            studentList.add(student2);
            studentList.add(student3);
    
            ModelAndView modelAndView = new ModelAndView();
            modelAndView.addObject("studentList",studentList);
            modelAndView.setViewName("/WEB-INF/jsp/studentList.jsp");
    
            return modelAndView;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    部署测试:
    在这里插入图片描述

  • 相关阅读:
    湘潭大学商学院开通CnOpenData试用
    图文详解Linux基础经典教程(04)——配置子网IP和网关
    管道-有名管道
    【大型电商项目开发】分布式session原理,SpringBoot整合SpringSession-52
    Bottom-Up Temporal Action Localization with Mutual Regularization BU-TAL阅读笔记
    安装Redis
    《Docker 简易速速上手小册》第10章 朝着 Docker Swarm 和 Kubernetes 迈进(2024 最新版)
    共话龙蜥:如何协同构建统一生态?
    弹窗组件只能传值一次,并且闪现
    好用的办公软件有哪些
  • 原文地址:https://blog.csdn.net/k010908/article/details/133913497