本文主要是介绍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第三阶段整理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!