SpringMVC

一、什么是MVC --一种软件设计规范

MVC:将业务逻辑、数据、显示分离的方式进行组织代码

            模型(model)--包括数据和行为 (dao和service)

            视图(View)--负责模型图形界面的显示、用户见到的图形界面

            控制器(Controller)---接收用户请求 将数据传递给模型进行处理 处理后的模型数据再返回给

             视图,由视图负责展示

主要作用:降低视图与业务逻辑之间的双向耦合

经典MVC: JSP + servlet + javabean 的模式

二、职责分析

control:控制器

        1.获取表单数据

        2.调用业务逻辑

        3.转向指定的页面

model:模型

        1.业务逻辑

        2.保存数据的状态

View:视图

        显示 页面效果

SpringMVC容器 和 Spring容器架构图

三、SpringMVC执行流程图|执行原理图

整体流程:

  • 用户向前端控制器发送请求
  • 前端控制器接收到请求后调用处理映射器
  • 处理器映射器找到具体的处理器,生成处理器对象以及处理器拦截器,再一起返回给前端控制器
  • 然后前端控制器调用处理器适配器
  • 处理器适配器调用具体的处理器
  • 处理器适配器将处理器执行结果ModelAndView返回给前端控制器
  • 然后前端控制器将ModelAndView传给视图解析器解析View
  • 前端控制器将视图解析器返回的View进行渲染,然后响应给用户

四、入门程序

基础版--无注解

1.导入jar包

2.web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">
    <servlet>

        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--   配置servlet初始化参数 加载springmvc.xml文件   -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
    </servlet>
<!--  设置请求拦截 /* 表示拦截所有请求  / 表示拦截除了JSP文件以外的请求  -->
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

3.编写后端控制器

package com.gec.controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

// 后端控制器
public class HomeController implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
//        视图模型  模型model 负责存储数据 view 视图
        ModelAndView mdv = new ModelAndView();
//        逻辑视图  该模式下的 MVC配置文件中的视图解析器必须进行前缀和后缀配置 否则存在找不到路径
        mdv.setViewName("index"); // 推荐使用方式
//        物理路径 视图
//        mdv.setViewName("/WEB-INF/jsp/index.jsp"); // 全路径 真实的JSP路径 该方式 在核心配置文件中可以不用进行 视图解析器配置 否则路径进行拼接后路径不存在
        return mdv;
    }
}

4.springmvc.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"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

<!-- SpringMVC 核心配置文件  原始配置方式-->
<!-- 配置 后端控制器   -->
    <bean name="/home" class="com.gec.controller.HomeController"/>
<!-- 配置处理器映射 负责寻找后端控制器   -->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!--  配置适配处理器 负责执行找到的后端控制器  -->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!-- 配置视图解析器 解析 modeladnView
    / WEB-INF/JSP/index.html    解析网页路径
-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--   前缀   -->
        <property name="prefix" value="/WEB-INF/JSP/"/>
<!--   后缀   -->
        <property name="suffix" value=".jsp"/>
    </bean>

</beans>

5.显示页面JSP显示

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2024/9/3
  Time: 17:14
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>SpringMVC</title>
  </head>
  <body>
    <h3>SpringMVC........</h3>
  </body>
</html>

6.项目结构

简化版-使用注解方式

基于基础版的改进

springmvc.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:mvc="http://www.springframework.org/schema/mvc"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       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.gec"/>
<!--  开启注解驱动  -->
    <mvc:annotation-driven/>
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--   前缀   -->
        <property name="prefix" value="/WEB-INF/JSP/"/>
<!--   后缀   -->
        <property name="suffix" value=".jsp"/>
    </bean>
<!-- SpringMVC 精简配置方案  直接开启注解扫描 在后端控制器部分加上注解-->

</beans>

配置文件中,直接使用注解扫描方式,减少了后端控制器、处理映射器、适配处理器的手动配置

后端控制器代码的改进:
 

package com.gec.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
// 后端控制器
@Controller  // 标记该类是一个后端控制器  使用注解方式
public class HomeController {
    @RequestMapping("/home")   // 请求映射
    public ModelAndView modelAndView(){
        ModelAndView mdv = new ModelAndView();
        mdv.setViewName("index");
        return mdv;
    }
}

运行效果:

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值