JavaEE学习的第三部分(重点在第四个知识点,SSM框架整合)

news2024/9/28 9:19:59

一、拦截器

Spring MVC的拦截器(Interceptor) 类似于Java Servlet的过滤器(Filter)。前面学习Java Web学过一点过滤器。

拦截器的作用 是拦截用户的请求,并做相应的处理 。例如在JSP提交表单数据给Controller,先是提交给拦截器的类。比如权限验证,是否登录,然后再交给Controller处理。

作法:需要配置拦截器类。Interceptor类。

接着需要在Springmvc.xml文件里面 注册拦截器类。并配置拦截器作用的路径。

拦截器 的类用的不多,在springmvc里面,对登录权限进行判断,一般都是使用的数据验证类。

二、数据验证(需要记忆)

数据验证,在企业应用里面用的比较多,但一般都是结合 统一异常处理 的方式进行处理。现只讲一下数据验证的方式。

它的作用是,使得输入的数据符合 预期,否则 就提示输入数据的格式问题。

这里我们学习Spring框架自带的验证组件。Spring验证器:

Validator接口:(自带的)

      存在两个方法(自带的):boolean supports(Class<?> klass)

                                                 void validate(Object object,Errors errors)

      存入错误消息的方法是reject 或者rejectValue

应用实训:编写一个添加商品的表单。

要求:1.商品名和商品详情不能为空。

2.商品价格在0到100之间

3.创建日期不能在系统日期之后。

代码分析:

第一步:导入依赖  (和前面的依赖是一样的。Spring自带的验证器不需要额外导入包)

第二步:配置web.xml文件,和之前一样

第2.5步:配置Validator类(验证器类)和错误消息的属性文件(例如error.properties,这个文件需要在springmvc里面注册噢。)

这个类自定义,但继承Validator类。并且重写它的两个方法。最后根据POJO的属性,对每一个属性进行一次判定(数据验证。符合上述的要求即可)

第三步:配置POJO、Service层、Contoller层 。方法和之前的差不多。

注意不同的是Controller层可以使用第2.5层定义的Validator(验证器类)。        

第四步:配置View页面。创建数据输入页面addGoods,jsp。 (使用和前面学过的 数据绑定 去绑定POJO类型。)

需要注意一下JSP 和Controller 是可以相互转换的,也就是说,JSP的创建可以放在创建Controller之前。

第五步:配置Spring.mvc。和前面一样。

不过,多了 配置消息属性文件(就是第2.5步创建的Validator类),以及注册格式转换器。

代码分析优化:

像上面那样分为步骤来编写,很容易 因为Validate类出现问题而导致整个 项目出现问题。建议,先按 数据绑定的方式对代码进行编写。如果数据绑定通过了,并且最后能查看商品的详细页面。再接着去 修改代码,添加数据验证的方式。

数据绑定的方式步骤 的一点感悟:(建议多加练习这个方式,获得最后的数据绑定总结)

一开始,盲写数据绑定。遇到的一个问题是,先编写JSP页面进行数据绑定到POJO类,还是先编写Controller类。

在编写代码步骤的 建议:

POJO类是首先编写的。

再编写Service类(业务逻辑层,它的方法一般是一个判断类型(判断是否添加成功),一个集合类型(伪装数据库集合,将POJO的数据集合在一起。))。这个Service层的编写 需要重点注意一下,它需要很强的抽象逻辑。分为一个接口和一个实现类。你要思考,在Controller需要得到什么数据,那么就把得到的数据,用抽象方法在Service层表示

再编写Controller类(要用到service的注入,以及service的方法。比如:判断条件,然后选择返回一个页面,在比如:使用model.Attribude,将service层得到的数据 封装在model类型里面。)。最后编写JSP页面。

再加一点感悟:

这是控制Controller类的,它使用goods表示是一个Goods的类型(POJO类),它实际是传给了JSP类里面。

 

小结:

所以获取Controller类里面的model.Addribute(" name",service层的方法 )

有两种方式:第一种,最常用的是EL表达式:${name} 

第二种,就是在表单元素里面的modelAttribute="name"   。

总结:数据验证,需要额外创建 Spring的验证器类 以及对它的类进行配置注册。

三、统一异常处理(重点部分)

请结合数据验证 的方式,判断异常处理 的过程有何不同。

异常处理方式比数据验证方式用的多,而且异常处理方式有的时候也可以代替数据验证。所以统一异常处理这个知识点需要掌握。 

主要介绍 自定义异常类。因为无论是dao、service、Controller层。都是可以throws Exception。所以,异常类的实现 单独用一个exception包来存放,对这些层里面抛出的异常,这里我们主要介绍两种方式来实习,这两种方式都用的比较多。

第一种:HandlerExceptionResolver接口实现。

这个是系统自带的类,我们定义好了异常类,需要继承implements它,它存在一个方法,然后你重写方法就行。

不过,这种系统自带的异常类。使用的时候,需要去springmvc.xml文件里面,注册配置。

一般都是一句:<bean class=" exception.自定义的类"/>

第二种:通过注解实现声明异常类。@ExceptionHandler (不过实践运用中,这个省略关系不大)   (最常用这种方式)

这种异常类都是自定义,并且没有继承关系。

但是,需要在控制层里面,对需要进行异常处理的Controller类 进行继承自定义的这个类,例如:

@Controller

public class TestExceptionController extends BaseController   {  }

暂时没有例子。

四、SSM框架整合(本此JavaEE学习的最终目标,非常重要)

本次学习的最终目标,就是能够实现SSM框架的整合。

在前面第一部分的学习,我们提到了Spring和MyBatis的整合,第二部分学习SpingMVC的框架。现在结合这三个框架一起使用。SSM其实就是(Spring、Spring MVC、MyBatis)这三个大框架的整合。

以应用项目为实例,进行这部分的学习:

项目:根据用户名 模糊查询用户信息。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机毕业论文内容参考|基于Python的高校二手网络交易平台的设计与实现

文章目录 导文摘要前言绪论1课题背景2国内外现状与趋势3课题内容相关技术与方法介绍系统分析系统设计系统实现系统测试总结与展望1本文总结2后续工作展望导文 计算机毕业论文内容参考|基于Python的高校二手网络交易平台的设计与实现 摘要 本文设计并实现了一种基于Python的高校…

3、boostrap图片视频上传展示

boostrap图片视频上传展示 1、展示效果2、html代码 1、展示效果 项目目录结构 2、html代码 html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><!--<link rel"st…

免费使用!国产品牌JoySSL为中国高校网站(edu.cn)提供专属SSL证书

去年9月份&#xff0c;西北工业大学遭受境外网络攻击&#xff0c;目标就是为了窃取重要隐私信息。高校校园信息安全非常重要&#xff0c;因为高校网站是学校的重要门户之一&#xff0c;也是学生、教职工、家长等与学校沟通交流的重要平台。如果高校网站存在安全问题&#xff0c…

Python Dataframe-B更新Dataframe-A

假设现在有两个dataframe&#xff0c;分别是A和B&#xff0c;它们有相同的列text和label。现在想使用B的label来更新A的label&#xff0c;基于它们共同的text。 数据示例 import pandas as pd# Sample DataFrames A and B data_A {text: [text1, text2, text3, text4], labe…

【Nacos 学习记录】

Nacos学习 笔记记录 1. 什么是配置中心&#xff1f;2. 什么是Nacos3. Nacos两大特点3.1 配置管理3.2 服务发现 4. 安装Nacos Server4.1 启动服务器4.2 Java SDK拉取配置4.2.1 添加配置4.2.2 拉取配置4.1.1 OPEN API配置管理API 4.2 post发布配置4.3 get获得配置 1. 什么是配置中…

【C语言】杨辉三角和练习

前言 &#x1f388;大家好&#xff0c;我是何小侠&#x1f388; &#x1f343;大家可以叫我小何或者小侠&#x1f343; &#x1f490;希望能通过写博客加深自己对于学习内容的理解&#x1f490; &#x1f338;也能帮助更多人理解和学习&#x1f338; 君子慎独&#xff0c;不欺…

Echarts区域面积areaStyle用图片进行纹理填充

React DOM结构代码&#xff1a; import fillImg from xx/fillImg.png; // 填充纹理图片...... {/* 趋势图填充纹理图片 */} <img id"fillImg" src{fillImg} style{{ width: 0 }} /> <div id"line" style{{ width: 100%, height: 300 }}></…

2023年5月 少儿编程 中国电子学会图形化编程等级考试Scratch编程一级真题解析(判断题)

2023年5月scratch编程等级考试一级真题 判断题(共10题,每题2分,共20分) 26、默认小猫角色,运行下列程序后,可以看到小猫面向右边,先向右转了30度,又向左转了30度 答案:错 考点分析:考查积木综合使用,由于电脑计算的速度非常快,所以上面的程序看不到右转效果,…

Linux--设置目录或文件的默认权限:umask权限掩码

目录起始权限是从777&#xff0c;普通文件起始权限从666 为何我们创建一个目录或文件&#xff0c;默认权限是你所看到的样子&#xff1f; 因为凡是在umask中出现的权限&#xff0c;都不应该在最终权限中出现&#xff01; 最终权限起始权限&&#xff08;~umask&#xff09…

中间件——统一白名单配置

目录 背景 方案设计 技术点 代码实现 1.切面 2.配置类 3.切面 测试 总结 背景 上线初期提供可配置的白名单用户进行访问验证&#xff0c;把控整体运行风险。 解决痛点&#xff1a; APOLLO企业控制也可以&#xff0c;多个业务功能&#xff0c;要配置多个apollo&…

linux docker安装及报错处理

一、Linux安装docker 1.1 前提 要求Linux内核&#xff08;kernel&#xff09; 版本大于等于3.8。&#xff08;kernel version >3.8&#xff09;。 查看当前系统内核版本 uname -a | awk {split($3,arr,"-");print arr[1]} 1.2 linux 安装docker Centos安装doc…

基于Python所写的火车票分析助手设计

点击以下链接获取源码资源&#xff1a; https://download.csdn.net/download/qq_64505944/87964234 《火车票分析助手》程序使用说明 在PyCharm中运行《火车票分析助手》即可进入如图1所示的系统主界面。 图1 系统主界面 具体的操作步骤如下&#xff1a; &#xff08;1&…

什么是KubeEdge?

什么是Kubernetes&#xff1f; Kubernetes&#xff08;K8s&#xff09;是一款由谷歌开源的容器集群管理系统。它基于容器技术&#xff0c;为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列功能。 什么是KubeEdge&#xff1f; KubeEdge做的是基于k8s构建&a…

数据结构C语言第二版读书笔记--阿兴版本。

文章目录 第一章 绪论1.1 数据结构的研究内容1.2 基本概念和术语1.2.1 数据、 数据元素、 数据项和数据对象1.2.2 数据结构 阿兴觉得很有必要在读书的时候做些读书笔记&#xff0c;我个人比较懒&#xff0c;还是写下来效果会好些。 本次所读的书是这本书。 第一章 绪论 1.1 数…

详解python之re库使用方法2

目录 参考资料前言二、使用 re 模块匹配字符串0. re 子函数 1. re.split()1.实例演示 2. re.search() 和 re.match()对比3.re.search()4.re.findall()5.re.escape()6. 正则表达式的简单说明8. re.compilere.match() 方法进行匹配参考链接&#xff1a; 参考资料 [1] Python之正…

Appium: Windows系统桌面应用自动化测试(二)

Appium: Windows系统桌面应用自动化测试二 一、关于自动化过程中&#xff0c;打开了应用&#xff0c;但获取不到操作句柄的问题1、问题描述2、问题分析3、问题解决 二、尝试回归问题本身&#xff0c;去解决问题1、目标应用日志3、查看WinAppDriver日志&#xff08;1&#xff09…

YOLO系列正负样本分配策略

1、YOLOv3 使用MaxIoUAssigner策略来给gt分配样本&#xff0c;基本上保证每个gt都有唯一的anchor对应&#xff0c;匹配的原则是该anchor与gt的IOU最大且大于FG_THRESH&#xff0c;这种分配制度会导致正样本比较少&#xff0c;cls和bbox分支训练起来可能比较慢。在剩余的anchor…

(三)Flask前置知识栈——装饰器

在后续的讲解中&#xff0c;对大家对装饰器的掌握程度要求较高&#xff0c;所以此文来深入讲解一下&#xff0c;有看过《Python全栈系列教程》专栏的小伙伴可能会说&#xff0c;装饰器已经出过文章讲的很详细了。饶是如此&#xff0c;深究过装饰器的小伙伴们就权当复习一遍&…

荣耀笔记本怎么重装Win10系统?荣耀笔记本用U盘重装系统Win10教程

随着时间的推移&#xff0c;荣耀笔记本系统可能会变得缓慢、不稳定&#xff0c;甚至出现故障&#xff0c;这时候&#xff0c;重装操作系统就成为了一个必要的选择&#xff0c;那么怎么给荣耀笔记本电脑重装Win10系统呢&#xff0c;可以按照系统之家小编分享的荣耀笔记本用U盘重…

提升矿井水质安全性:矿井水除氟领域的应用与优势

引言 随着工业化进程的推进&#xff0c;矿井水中含有过量的氟离子已成为一个严重的环境问题。高浓度的氟离子对人体健康和生态环境都具有危害。因此&#xff0c;矿井水除氟工艺的研究和应用变得至关重要。 当废水中的氟超标超过了环保标准时&#xff0c;可能会对环境和人类健康…