博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SSM第三阶段整理
阅读量:4203 次
发布时间:2019-05-26

本文共 7008 字,大约阅读时间需要 23 分钟。

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的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对数据库的操作。

insert into t_user(uname,upwd) value(#{
uname},#{
upwd})
delete from t_user where uid=#{
uid}
update t_user set uname=#{
uname},upwd=#{
upwd} where uid=#{
uid}

知识点总结:

1、使用注解实例化对象@Component,@Controller,@Service,@Repository的时候,要配置

意思是:告诉Spring创建容器时要扫描包,可以理解为寻找注解的过程。

2、依赖:spring-context上下文:
使用:
①beans;
②四个对象实例化注解@Component,@Controller,@Service@Repository
③加载配置文件
④管理对象
时要导入的这个依赖。

org.springframework
spring-context
5.2.9.RELEASE

依赖:spring-aspects

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

org.springframework
spring-aspects
5.2.9.RELEASE

spring-jdbc

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

org.springframework
spring-jdbc
5.2.9.RELEASE

3、@Configuration注解

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

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

4、#{实体类属性名}

parameterType=“参数类型”
5.工厂
SqlSessionFactoryBean类和SqlSessionFactory类相似

视频day0714

springMVC

1.springMVC简介

视频13

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

org.springframework
spring-webmvc
5.2.9.RELEASE

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属性路径设置位置,路径片段之前没有添加/,那么会自动补齐补齐的是当前页面被打开时,浏览器地址栏中路径删除最后一个名称剩余部分--%>入门案例

2)applicationContext.xml是Spring框架的配置文件名。

3)案例关注点在后端适配器
springmvc.xml文件中配置

创建控制层和实体类

//在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文件下

org.springframework
spring-webmvc
5.2.9.RELEASE
org.springframework
spring-context
5.2.15.RELEASE
javax.servlet
javax.servlet-api
3.1.0
provided

2、webapp.index.jsp文件下:

传参1 -- 用原生request接收

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

dispatcherServlet
org.springframework.web.servlet.DispatcherServlet
//2.加载配置文件,通过param-value找到springmvc.xml
contextConfigLocation
classpath:springmvc.xml
//1.以.do结尾的请求路径发送到这个servlet-mapping,通过servlet-name找到servlet
dispatcherServlet
*.do

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

//2.请求进入后端控制器,扫描具有注解@controller即作为后端控制器的类 
//1.请求进入映射器、适配器

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

转载地址:http://wxvli.baihongyu.com/

你可能感兴趣的文章