SSM第三阶段整理

2024-03-28 07:18
文章标签 ssm 整理 第三阶段

本文主要是介绍SSM第三阶段整理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Spring框架

视频day0701

一、AOP设计思想

介绍

1.Aspect Oriented Programming面向切面编程。
2.主要解决功能扩展问题。
3.底层是对JDK动态代理封装。
4.是oop的延续,在oop基础上横向开发。
5.主要关注切面,实现了功能扩展 ,解决在原有功能基础之上,扩展功能的需求。

术语

1.切面Aspect:切点和增强的组合。
2.切点Point cut:确定切入扩展功能的机制。即applicationContext.xml文件中的<aop:pointcut id="" expreesion=(目标方法全类名,即要对哪个方法进行扩展增强)>注意函数表达式格式。
3.增强、通知Advice:要扩展的功能。
五种方式:前通知、后通知、环绕通知、异常通知、最终通知
4.连接点Join point:程序运行中的一些时间点,在Spring中特指程序运行过程中被扩展方法的调用位置。
理解:底层不是把不同扩展的方法合在一起,只是按配置顺序调用。
如果在目标函数上进行了扩展,一旦此方法被调用,此方法就是连接点。如果没有进行扩展的方法,被调用是正常调用,不能称作连接点。
5.代理对象:由容器创建的或从容器获取的对象。
6.目标对象Target:(看不见)
将扩展功能扩展给原始功能后,形成的方法,这个方法所属的对象。
理解:被扩展了,实质上是代理对象。
最原始的目标对象是没被扩展的原始方法,所属的对象。
7.纺入Weaving:(看不见)
过程。目标对象被创建出来的过程。此过程时间扩展功能扩展给原始功能,然后再把目标对象创建出来。

实现

三种方式:
纯配置、有配置有注解、纯注解
纯配置:配置目标对象、扩展功能的对象、aop配置、aop切面配置、切点、增强。
有配置有注解:
注解要注意:
将切点、通知放在功能扩展的类中,将功能对象的配置换成了相应的注解。注意:功能扩展注解@aspect
配置要注意:
aop自动代理配置项:
applicationContext.xml文件下:

<aop:aspectj-autoproxy></aop:aspectj-autoproxy>

应用场景

日志、登录认证(基于AOP的Spring security框架)、分页插件、事务管理

下面是AOP思想的应用场景之一:事务

特性

处理数据的过程中可能出现一些异常数据

业务层一个方法就是一个事务

可能包含多个sql语句。在业务层一个方法中可能调用多个持久层的方法,每个持久层方法对应一条sql,这个业务层方法就是一个事务单元

例子

三、Spring和Mybatis整合

1、spring和mybatis整合是什么意思?

1)我们的项目中可能需要使用mybatis框架来实现持久层的功能,mybatis框架和自主开发的项目显然不是同源的,那么要将mybatis框架整合到项目中,需要中间的纽带桥梁,一般一个独立的框架要向项目整合多采用spring框架来实现。
2)Mybatis分工、完成持久层的CRUD功能;spring分工,完成IOC和AOP的功能实现

2、案例:Spring整合Mybatis

视频day07,11-12
案例介绍:
在数据库中增删改查。
Mybatis持久层技术,Mybatis里的配置代替UserDao的实现类UserImpl,完成对数据库的增删改查操作。
主要代码:
在user.xml文件中:
代替了之前UserDaoImpl对数据库的操作。

<mapper namespace="com.offcn.dao.UserDao">
<!----><insert id="insert" parameterType="User">insert into t_user(uname,upwd) value(#{uname},#{upwd})</insert>
<!----><delete id="delete" parameterType="int">delete from t_user where uid=#{uid}</delete>
<!----><update id="update" parameterType="User">update t_user set uname=#{uname},upwd=#{upwd} where uid=#{uid}</update>
<!----><select id="selectOne" parameterType="Integer" resultType="User">select * from t_user where uid=#{uid}</select><select id="selectAll" resultType="User">select * from t_user</select>
</mapper>

知识点总结:
1、使用注解实例化对象@Component,@Controller,@Service,@Repository的时候,要配置

<context:component-scan base-package="包名"/>

意思是:告诉Spring创建容器时要扫描包,可以理解为寻找注解的过程。
2、依赖:spring-context上下文:
使用:
①beans;
②四个对象实例化注解@Component,@Controller,@Service@Repository
③加载配置文件
④管理对象
时要导入的这个依赖。

<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.9.RELEASE</version></dependency>

依赖:spring-aspects
使用:
主要是使用AOP时要导入这个依赖。

<dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>5.2.9.RELEASE</version></dependency>

spring-jdbc
使用:
处理事务时导入此依赖

<dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.2.9.RELEASE</version>
</dependency>

3、@Configuration注解
用于指定当前类时一个Spring配置类,当创建容器时会从该类上加载注解。

//声明这是一个配置类,Spring会像从配置文件读取内容似的,从这个类中读取内容
@Configuration
public class SpringConfiguration{
}

4、#{实体类属性名}
parameterType=“参数类型”
5.工厂
SqlSessionFactoryBean类和SqlSessionFactory类相似

视频day0714

springMVC

1.springMVC简介

视频13
1.表现层
2.web项目
3.核心功能是:接受请求,处理响应,功能等同于Servlet。
4.用到的jar包:spring-webmvc.jar

   <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.2.9.RELEASE</version></dependency>

5.model:数据的封装和传递;view视图;controller控制层,接受请求,实现响应。

2.入门案例

视频14-15
1.案例思路:
1)搭建项目环境 – web项目、jar包
2)准备index.html页面,添加超链接,设置请求
3)到web.xml中配置前端控制器,实现加载springmvc配置文件
4)准备springmvc配置文件,配置相关内容,包括:映射器、适配器、后端控制器、视图解析器
5)实现后端控制器类和方法,方法返回模型数据和视图名
6)根据视图名设置响应视图文件,user.jsp
7)user.jsp中el表达式解析数据。
2.涉及知识
1)自定义扩展名

<%--自定义扩展名:目的是为了将请求分组,为了识别带有相关扩展名的请求,不带有的就不识别--%>
<%--href属性路径设置位置,路径片段之前没有添加/,那么会自动补齐
补齐的是当前页面被打开时,浏览器地址栏中路径删除最后一个名称剩余部分--%>
<a href="hello/first.do">入门案例</a>

2)applicationContext.xml是Spring框架的配置文件名。
3)案例关注点在后端适配器
springmvc.xml文件中配置

<!--后端控制器--><context:component-scan base-package="com.offcn"></context:component-scan>

创建控制层和实体类

//在springmvc中主要关注的就是后端控制器和方法
@Controller
@RequestMapping("hello")
public class FirstController {//实现方法 -- 接收请求、处理请求、实现响应//匹配映射注解  让请求路径和处理请求的方法匹配上//路径中的后缀可以缺省配置,框架会自动补全//此注解既可以用在方法上,还可以用在类上,两个位置可以同时存在,用在类上表示名称空间//名称空间的作用就是为了对URL实现分组@RequestMapping("first")public ModelAndView first(){//准备模型数据和视图 -- 用于响应User user = new User();user.setUid(1001);user.setUname("湘云");user.setUpwd("123");//  /user.jsp---路径位置的/,代表项目的根,一般情况下,如果具备项目名称,那么/代表http://localhost:8080/项目名/String viewName = "/user.jsp";//对应真正视图文件ModelAndView modelAndView = new ModelAndView();modelAndView.addObject("user",user);//等价于request.setAttribute();modelAndView.setViewName(viewName);//等价于request.getRequestDisptacher().forward();return modelAndView;}

4)流程图示
在这里插入图片描述
springmvc框架的核心组件:前端控制器、映射器、适配器、视图解析器、后端控制器
适配器和映射器可以缺省配置,也可以替代配置
前端控制器:此控制器一个项目中只需要而且是必须有一次配置,通过它加载springmvc配置文件
视图解析器:可以缺省配置,也可能需要配置(需要设置前缀和后缀时)
后端控制器:关注目标,自定义、包含许多处理请求的方法

3、参数绑定

视频day08 02-18

1、参数绑定原生方式request

视频day08 02
项目结构:
在这里插入图片描述
一、思路总结:
主要围绕上面的流程视图。
1、导包。在项目的pom.xml文件下

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

2、webapp.index.jsp文件下:

<a href="parameter/requestPara.do?id=1001">传参1 -- 用原生request接收</a>

3、点击请求发送至src/main/webapp/WEB-INF/web.xml

<!--前端控制器--><servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--配置文件加载-->//2.加载配置文件,通过param-value找到springmvc.xml<init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param></servlet>//1.以.do结尾的请求路径发送到这个servlet-mapping,通过servlet-name找到servlet<servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>

4、创建src/main/resources/springmvc.xml文件。请求进入到resources/springmvc.xml

//2.请求进入后端控制器,扫描具有注解@controller即作为后端控制器的类<!--扫描包,后端控制器--><context:component-scan base-package="com.offcn"></context:component-scan>
//1.请求进入映射器、适配器<!--映射器、适配器替代配置--><!--注册转换器工厂--><mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>

5、创建src/main/java/com/ParameterController.java请求进入具有@Controller注解(代表控制层)的ParameterController.java类文件

//@RequestMapping设置控制的访问路径。用在类上表示名称空间,也可以用在方法上
@Controller
@RequestMapping("parameter")
public class ParameterController {
//.do可以缺省,框架自动补全<--request原生方式接收数据-->@RequestMapping("requestPara")public ModelAndView requestPara(HttpServletRequest request){String id = request.getParameter("id");System.out.println(id);//javaweb项目中/表示webapp文件夹String viewName = "/WEB-INF/jsp/dd.jsp";ModelAndView modelAndView = new ModelAndView();modelAndView.setViewName(viewName);return modelAndView;}

6、运行
配置tomcat。EditConfigurations->Deployment->添加项目的war包到tomcat->apply->ok->点击运行
二、涉及知识点:
1、转发特点:
①转发是请求发起的
②转发发生在一次请求中
③转发可以访问WEB-INF
④不能刷新
2、javaweb项目中/表示webapp文件夹。
不加/,在路径中直接拼接,进不了webapp文件夹;加/,表示访问webapp文件夹下的文件。
3、Spring中对象实例化注解
p99详见注解总结
@Component
@Controller
@Service
@Repository
4、*.do表示请求扩展名。

2、参数绑定同名传参

视频03
不用使用request.getParameter(“id”);获取参数
同名:页面传递数据时使用的key名称和方法中参数名称一致。
底层实际上还是调用的HttpServletRequest request 的request.getParameterNames();

一、SSM注解总结

Mybatis注解

未完

Spring框架中的注解

未完

SpringMVC框架注解

p140未完
1、@RequsetParam
主要用于在SpringMVC后台控制层获取参数时,前端传入的参数和方法形参不一致时。
三个属性:
String value:
2、@RequestHeader
3、@CookieValue
4、@RequestBody
5、@ResponseBody
6、@SessionAttributes
7、@ModelAttribute()
8、@RequestMapping
9、PathVariable

这篇关于SSM第三阶段整理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/854859

相关文章

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

rtmp流媒体编程相关整理2013(crtmpserver,rtmpdump,x264,faac)

转自:http://blog.163.com/zhujiatc@126/blog/static/1834638201392335213119/ 相关资料在线版(不定时更新,其实也不会很多,也许一两个月也不会改) http://www.zhujiatc.esy.es/crtmpserver/index.htm 去年在这进行rtmp相关整理,其实内容早有了,只是整理一下看着方

笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel

kernel起始与ENTRY(stext),和uboot一样,都是从汇编阶段开始的,因为对于kernel而言,还没进行栈的维护,所以无法使用c语言。_HEAD定义了后面代码属于段名为.head .text的段。         内核起始部分代码被解压代码调用,前面关于uboot的文章中有提到过(eg:zImage)。uboot启动是无条件的,只要代码的位置对,上电就工作,kern

JavaScript整理笔记

JavaScript笔记 JavaScriptJavaScript简介快速入门JavaScript用法基础语法注释关键字显示数据输出innerHTML innerText属性返回值的区别调试 数据类型和变量数据类型数字(Number)字符串(String)布尔值(Boolean)null(空值)和undefined(未定义)数组(Array)对象(Object)函数(Function) 变量

【干货分享】基于SSM的体育场管理系统的开题报告(附源码下载地址)

中秋送好礼 中秋佳节将至,祝福大家中秋快乐,阖家幸福。本期免费分享毕业设计作品:《基于SSM的体育场管理系统》。 基于SSM的体育场管理系统的开题报告 一、课题背景与意义 随着全民健身理念的深入人心,体育场已成为广大师生和社区居民进行体育锻炼的重要场所。然而,传统的体育场管理方式存在诸多问题,如资源分配不均、预约流程繁琐、数据统计不准确等,严重影响了体育场的使用效率和用户体验。

基于SSM+Vue+MySQL的可视化高校公寓管理系统

系统展示 管理员界面 宿管界面 学生界面 系统背景   当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关数据进行科学化,规范化管理。这样的大环境让那些止步不前,不接受信息改革带来的信息技术的企业随时面临被淘汰,被取代的风险。所以当今,各个行业领域,不管是传统的教育行业

SSM项目使用AOP技术进行日志记录

本步骤只记录完成切面所需的必要代码 本人开发中遇到的问题: 切面一直切不进去,最后发现需要在springMVC的核心配置文件中中开启注解驱动才可以,只在spring的核心配置文件中开启是不会在web项目中生效的。 之后按照下面的代码进行配置,然后前端在访问controller层中的路径时即可观察到日志已经被正常记录到数据库,代码中有部分注释,看不懂的可以参照注释。接下来进入正题 1、导入m

关于回调函数和钩子函数基础知识的整理

回调函数:Callback Function 什么是回调函数? 首先做一个形象的比喻:   你有一个任务,但是有一部分你不会做,或者说不愿做,所以我来帮你做这部分,你做你其它的任务工作或者等着我的消息,但是当我完成的时候我要通知你我做好了,你可以用了,我怎么通知你呢?你给我一部手机,让我做完后给你打电话,我就打给你了,你拿到我的成果加到你的工作中,继续完成其它的工作.这就叫回叫,手机

站长常用Shell脚本整理分享(全)

站长常用Shell脚本整理分享 站长常用Shell脚本整理分享1-10 站长常用Shell脚本整理分享11-20 站长常用Shell脚本整理分享21-30 站长常用Shell脚本整理分享31-40 站长常用Shell脚本整理分享41-50 站长常用Shell脚本整理分享51-59 长期更新

ssm 之事务管理出现错误

JDBC Connection will not be managed by Spring 项目采用的是分布式架构,分别有controller,service,solr三个服务器,之间通过dubbo进行调用,经过测试发现事务配置完以后不能通过spring进行管理,其中两条insert和一条update语句都执行完毕,异常并没有使得事务进行回滚,通过调取debug日志发现“JDBC Conn