栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringMVC(详解)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringMVC(详解)

SpringMVC学习目标:

️ 1、掌握基于SpringMVC获取请求参数与响应json数据操作
️ 2、熟练应用基于REST风格的请求路径设置与参数传递
️ 3、能够根据实际业务建立前后端开发通信协议并进行实现
️ 4、基于SSM整合技术开发任意业务功能

目录
  • SpringMVC概述
  • SpringMVC入门
    • ●初始化 SpringMVC项目环境
    • ●SpringMVC项目的开发
  • SpringMVC入门开发总结
  • SpringMVC工作流程分析
    • ●启动服务器初始化过程
    • ●单次请求过程
  • SpringMVC-Controller加载控制与业务bean加载控制
  • SpringMVC-简化Servlet容器配置类

SpringMVC概述

➠SpringMVC是一种基于Java实现MVC模型的轻量级 web框架

➠是一种表现层框架技术,用于进行表现层功能开发

➠ SpringMVC技术与Servlet技术功能等同,均属于web层开发技术

SpringMVC入门 ●初始化 SpringMVC项目环境

① 新建模块,选择使用webapp的骨架

②添加源码目录(web程序骨架没有源码目录)

●SpringMVC项目的开发

① 导入SpringMVC坐标与Servlet坐标


    
        javax.servlet
        javax.servlet-api
        3.1.0
    

    
        org.springframework
        spring-webmvc
        5.2.10.RELEASE
    

② 创建SpringMVC控制器类( 等同于Servlet功能)

package com.GY.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

//开发表现层bean(SpringMvc开发专用声明bean的注解)
@Controller
public class UserController {
    
    @RequestMapping("/save")
    //设置当前操作的返回值类型
    @ResponseBody
    public String save(){
        System.out.println("save........");
        return "{...springmvc...}";
    }
}

③ 初始化SpringMVC环境(同Spring环境),设定SpringMVC加载对应的bean

④ 初始化Servlet容器,加载SpringMVC环境,并设置SpringMVC技术请求(web容器的配置类)

package com.GY.config;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;

//4、定义一个servlet容器启动的配置类,在里面加载Spring的配置
public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {
    //Tomcat容器加载springmvc配置
    protected WebApplicationContext createServletApplicationContext(){
        AnnotationConfigWebApplicationContext A=new AnnotationConfigWebApplicationContext();
    //注册配置
        A.register(SpringmvcConfig.class);
        return A;
    }
    //配置拦截请求,设置哪些请求归属springMVC处理(此时Tomcat接收的所有请求将交由SpringMVC处理)
    protected  String []getServletMappings(){
    //所有请求归springMVC处理
        return new String[]{"/"};
    }
    //加载spring容器配置
    protected WebApplicationContext createRootApplicationContext(){
        return  null;
    }
}

此时我们便可启动服务器
●配置tomcat插件


       
           
                   org.apache.tomcat.maven
                   tomcat7-maven-plugin
                   2.1
                   
                     80
                     /
                    
           
       
   

●启动程序

️️
tomcat启动成功

️️️
在浏览器进行访问(请求成功并且成功打印)

SpringMVC入门开发总结

SpringMVC工作流程分析 ●启动服务器初始化过程


1、服务器启动,执行ServletContainersInitConfig类,初始化web容器
2、执行createServletApplicationContext方法,创建WebApplicationContext(SpringMVC容器)对象
3、加载SpringMvcConfig
4、执行@ComponentScan加载对应的bean
5、加载UserController,每个@RequestMapping的名称对应一个具体的方法
6、 执行getServletMapping方法,定义所有的请求都通过SpringMVC

●单次请求过程

1、发送请求 http://localhost:81/savehttp://localhost:81/save
2、web容器发现所有请求都经过SpringMVC,将请求交给SpringMVC处理
3、解析请求路径 /save
4、由 /save 匹配执行对应的方法save()
5、执行save()
6、检测到有@ResponseBody直接将save()方法的返回值作为响应体返回给请求方

SpringMVC-Controller加载控制与业务bean加载控制

➠SpringMVC相关的bean(表现层bean)

➠Spring控制的bean
●业务bean(Service)
●功能bean(DateSource等)

思考
1、因为功能不同,如何避免Spring错误的加载到SpringMVC的bean?
SpringMVC的bean一一加载Spring控制的bean的时候排除掉SpringMVC控制的bean

️方法
➠①SpringMVC相关bean加载控制
●SpringMVC加载的bean对应的包均在com.GY.controller

➠②Spring相关bean加载控制
●方式一:Spring加载的bean设定扫描范围为com.GY,排除controller包内的bean

@Configuration
@ComponentScan(value = "com.GY",
        excludeFilters = @ComponentScan.Filter(
        //按注解过滤(排除)
        type = FilterType.ANNOTATION,
        classes = Controller.class
)
)
public class SpringConfig {
}

●方式二:Spring加载的bean设定扫描范围为精准范围,例如service包、dao包

●方式三:不区分Spring与Spring与SpringMVC的环境,加载到同一个环境中

SpringMVC-简化Servlet容器配置类

将Servlet容器配置类继承 AbstractAnnotationConfigDispatcherServletInitializer类 (AbstractDispatcherServletInitializer的子类)

package com.GY.controller.config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class[] getRootConfigClasses() {
        return new Class[]{SpringConfig.class};
    }

    @Override
    protected Class[] getServletConfigClasses() {
        return new Class[]{SpringmvcConfig.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1031170.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号