【spring(五)】SpringMvc总结 SSM整合流程

目录

一、SpringMVC简介:

二、SpringMVC快速入门:

三、SpringMVC bean的管理:⭐

        ①配置bean

        ②扫描bean

四、SpringMVC配置类:⭐

五、SpringMVC 请求与响应

六、SpringMVC REST风格

七、SSM整合 异常处理:

八、SSM整合流程:⭐

九、SpringMVC 拦截器:


一、SpringMVC简介:

1.SpringMVC是一种表现层框架技术

2.SpringMVC用于进行表现层功能开发

与原始Servlet对比

二、SpringMVC快速入门:

①:使用SpringMVC技术需要先导入SpringMVC坐标与Servlet坐标

<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.2.10.RELEASE</version>
</dependency>

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

@RestController
public class BookController {@RequestMapping("/save")@ResponseBodypublic String save(){return null;}
}

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

@Configuration
@ComponentScan({"com.itpan.controller"})
@EnableWebMvc
public class SpringMVCConfig {
}

三、SpringMVC bean的管理:⭐

        ①配置bean

                ①三层架构中的bean

                        控制层controller:@restcontroller = @controller + @responsebody

                        业务层service:@service

                        持久层dao:@reposity

                ②其他bean(第三方,自己写的……)

                        加入@bean注解

        ②扫描bean

                在springconfig配置文件上加入@ComponentScan({"包名1", "包名2",……})

总结:

SpringMVC入门程序开发总结(1+N

        一次性工作

                创建工程,设置服务器,加载工程

                导入坐标

                创建web容器启动类,加载SpringMVC配置,并设置SpringMVC请求拦截路径

                SpringMVC核心配置类(设置配置类,扫描controller包,加载Controller控制器bean

        多次工作

                定义处理请求的控制器类

                定义处理请求的控制器方法,并配置映射路径(@RequestMapping)与返回json数据(@ResponseBody

四、SpringMVC配置类:⭐

SpringMVC等同于Web容器,Spring是Spring-web的子容器,所以同时加载Spring和SpringMVC会有bean加载冲突问题

解决办法:ServletConfig配置类

加载SpringMVC配置

加载Spring配置

设定SpringMVC拦截请求路径

五、SpringMVC 请求与响应

见文章:http://t.csdnimg.cn/puThL

获取请求参数:http://t.csdnimg.cn/pu0KD

六、SpringMVC REST风格

与原始风格做对比

优点:

        隐藏业务行为,无法通过地址得知对资源的何种操作

        简化书写

通过请求类型区分业务操作

七、SSM整合 异常处理:

程序遇到异常会抛给他的调用者,就这样一层一层往上抛,如果不处理,最后会抛给jvm

步骤分析:

  • 判定异常分类:
    • 业务异常(用户请求有误)
    • 运行异常(代码有BUG)
    • 其他异常(不确定异常,例如系统崩了,服务器坏了等等)
  • 创建异常类:
  • 在可能出现异常的地方抛出异常,统一处理:
  • 定义异常处理类:

模拟实现:

        AOP思想

//@RestControllerAdvice用于标识当前类为REST风格对应的异常处理器
@RestControllerAdvice
public class ProjectExceptionAdvice {//@ExceptionHandler用于设置当前处理器类对应的异常类型@ExceptionHandler(SystemException.class)public Result doSystemException(SystemException ex){//记录日志//发送消息给运维//发送邮件给开发人员,ex对象发送给开发人员return new Result(ex.getCode(),null,ex.getMessage());}@ExceptionHandler(BusinessException.class)public Result doBusinessException(BusinessException ex){return new Result(ex.getCode(),null,ex.getMessage());}//除了自定义的异常处理器,保留对Exception类型的异常处理,用于处理非预期的异常@ExceptionHandler(Exception.class)public Result doOtherException(Exception ex){//记录日志//发送消息给运维//发送邮件给开发人员,ex对象发送给开发人员return new Result(Code.SYSTEM_UNKNOW_ERR,null,"系统繁忙,请稍后再试!");}
}

模拟异常:

public Book getById(Integer id) {//模拟业务异常,包装成自定义异常if(id == 1){throw new BusinessException(Code.BUSINESS_ERR,"请不要使用你的技术挑战我的耐性!");}//模拟系统异常,将可能出现的异常进行包装,转换成自定义异常try{int i = 1/0;}catch (Exception e){throw new SystemException(Code.SYSTEM_TIMEOUT_ERR,"服务器访问超时,请重试!",e);}return bookDao.getById(id);}

八、SSM整合流程:⭐

前面已经学了 Mybatis 、 Spring 和 SpringMVC 三个框架,现在要整合这三个框架,完成业务功能的简单开发。

SpringConfig配置类:

@Configuration
@ComponentScan({"com.itpan.service"}) // 组件扫描 为防止spring和springMVC重复扫描只扫描到service
@PropertySource({"classpath:jdbc.properties"}) // 加载数据库配置文件
@Import({JdbcConfig.class, MybatisConfig.class}) // 导入配置文件
public class SpringConfig {
}

jdbcConfig配置类:

public class JdbcConfig {@Value("${jdbc.driver}")private String driver;@Value("${jdbc.url}")private String url;@Value("${jdbc.username}")private String username;@Value("${jdbc.password}")private String password;// 管理第三方的bean,供spring使用@Beanpublic DataSource dataSource(){DruidDataSource dataSource = new DruidDataSource();dataSource.setDriverClassName(driver);dataSource.setUrl(url);dataSource.setUsername(username);dataSource.setPassword(password);return dataSource;}
}

jdbc.properties:略

jdbc.driver=com.itpan.jdbc.Driver
jdbc.url=jdbc:mysql//localhost:3306/ssm_db
jdbc.username=root
jdbc.password=root

MybatisConfig配置类:

public class MybatisConfig {// 配置数据库连接池的bean,方法的参数也是bean的自动装配@Beanpublic SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();factoryBean.setDataSource(dataSource);factoryBean.setTypeAliasesPackage("com.itpan.domain");return factoryBean;}// 配置扫描Dao包下的bean@Beanpublic MapperScannerConfigurer mapperScannerConfigurer(){MapperScannerConfigurer msc = new MapperScannerConfigurer();msc.setBasePackage("com.itpan.dao");return msc;}
}

ServletConfig配置类:

public class ServletConfig extends AbstractAnnotationConfigDispatcherServletInitializer {@Overrideprotected Class<?>[] getRootConfigClasses() {return new Class[]{SpringConfig.class};}@Overrideprotected Class<?>[] getServletConfigClasses() {return new Class[]{SpringMVCConfig.class};}// 拦截路径@Overrideprotected String[] getServletMappings() {return new String[]{"/"};}
}

SpringMVC配置类:

@Configuration
@ComponentScan({"com.itpan.controller"})
@EnableWebMvc
public class SpringMVCConfig {
}

九、SpringMVC 拦截器:

见文章:http://t.csdnimg.cn/JqJ6b

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/216777.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity使用DOTween实现分段进度条

文章目录 需求下载安装 DOTween实现实现效果 需求 用组件进度条&#xff08;Slider&#xff09;&#xff0c;利用分段加载进行以假乱真的进度效果&#xff0c;比如说2秒钟到达20%的进度&#xff0c;10秒钟加载20%到50%进度&#xff0c;1分钟加载50%到90%的进度&#xff0c;30秒…

Python 自动化用处太大了!|python自动整理文件,一键完成!

随着时代的发展及人工智能的到来&#xff0c;Python 自动化办公能力几乎已成为每个岗位的必备技能&#xff01; 而且到处可见的抖音、朋友圈铺天盖地宣传 Python 可以轻松达到办公自动化&#xff0c;并且学习没门槛&#xff0c;是真的吗&#xff1f; 我很负责的告诉大家&#…

【微服务专题】SpringBoot自动配置源码解析

目录 前言阅读对象阅读导航前置知识什么是自动配置0.1 基本概念0.2 SpringBoot中的【约定大于配置】0.3 从SpringMVC看【约定大于配置】0.4 从Redis看【约定大于配置】0.5 小结 笔记正文一、EnableAutoConfiguration源码解析二、SpringBoot常用条件注解源码解析2.1 自定义条件注…

物流公司打印用什么软件,佳易王物流运单打印管理系统软件下载

物流公司打印用什么软件&#xff0c;佳易王物流运单打印管理系统软件下载 软件特色&#xff1a; 1、功能实用&#xff0c;操作简单&#xff0c;不会电脑也会操作&#xff0c;软件免安装&#xff0c;已内置数据库。 2、物流开单打印&#xff0c;可以打印两联单或三联单&#x…

【Unity实战】切换场景加载进度和如何在后台异步加载具有庞大世界的游戏场景,实现无缝衔接(附项目源码)

文章目录 最终效果前言一、绘制不同的场景二、切换场景加载进度1. 简单实现2. 优化 三、角色移动和跳跃控制四、添加虚拟摄像机五、触发器动态加载场景六、最终效果参考源码完结 最终效果 前言 观看本文后&#xff0c;我的希望你对unity场景管理有更好的理解&#xff0c;并且能…

力控软件与多台PLC之间ModbusTCP/IP无线通信

Modbus TCP/IP 是对成熟的 Modbus 协议的改编&#xff0c; 因其开放性、简单性和广泛接受性而在工业自动化系统中发挥着举足轻重的作用。它作为连接各种工业设备的通用通信协议&#xff0c;包括可编程逻辑控制器 (PLC)、远程终端单元 (RTU) 和传感器。它提供标准化的 TCP 接口&…

仿 美团 / 饿了么,店铺详情页功能

前言 UI有所不同&#xff0c;但功能差不多&#xff0c;商品添加购物车功能 正在写&#xff0c;写完会提交仓库。 效果图一&#xff1a;左右RecyclerView 联动 效果图二&#xff1a;通过点击 向上偏移至最大值 效果图三&#xff1a;通过点击 或 拖动 展开收缩公告&#xff08;可…

mysql 变量和配置详解

MySQL 中还有一些特殊的全局变量&#xff0c;如 log_bin、tmpdir、version、datadir&#xff0c;在 MySQL 服务实例运行期间它们的值不能动态修改&#xff0c;也就是不能使用 SET 命令进行重新设置&#xff0c;这种变量称为静态变量。数据库管理员可以使用前面提到的修改源代码…

【Ambari】HDFS基于Ambari的常规运维

&#x1f984; 个人主页——&#x1f390;开着拖拉机回家_大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&#x1f…

BART - 磁共振重建库 linux系统安装 MATLAB 使用

本文主要介绍如何在linux系统中安装伯克利大学的磁共振重建库BART 和在matlab中的配置使用。 安装必要的库 (linux 命令行) $ sudo apt-get install make gcc libfftw3-dev liblapacke-dev libpng-dev libopenblas-dev 下载编译BART 文件 (官网链接:BART Toolbox) 命令行下…

京东数据采集接口推荐(京东大数据分析工具)

随着京东电商平台的不断发展&#xff0c;平台中店铺数量也越来越多&#xff0c;对于电商卖家而言&#xff0c;在电商运营过程中如何做好数据分析也越来越重要。而电商运营数据往往多而杂&#xff0c;想要高效的完成电商数据分析&#xff0c;品牌需要借助一些电商数据分析软件。…

RPC和HTTP的区别

目录 1、RPC是什么 1.1 概念 1.2 RPC的组成部分 1.3 常见的 RPC 技术和框架 1.4 RPC的工作流程 2、HTTP是什么 2.1 概念 2.2 HTTP的消息格式 2.3 HTTP响应状态码有哪些 3、⭐RPC和HTTP的区别 小结 1、RPC是什么 1.1 概念 RPC&#xff08;Remote Procedure Call&am…