首页 > 其他分享 >SSM

SSM

时间:2025-01-06 09:57:31浏览次数:8  
标签:事务 请求 SSM bean Cookie 参数 IOC

SSM

动态SQL

1、如果前端表单中没有传输请求参数,但在服务器端却获取了,则显示为null;

  单选框和复选框不选则显示也会null;

  如果是表单中有该请求项,但里面为空,提交到服务器端时为“”(空字符串)

 

2、mybatis中如果参数为list或者是数组,都会被放在map中

  如果是List集合,则以List为键,以参数具体值为值;

  数组会以Array为键,以参数值为value值。

 

3、mybatis的二级缓存可以使用外部第三方缓存.

 

Spring

1、容器:对于组件对象可以进行存储和管理。

 

2、Spring默认提供单例模式,通过scope=prototype可以改成多例模式。

 

3、IOC中使用反射+工厂模式创建对象

 工厂模式代码层面上来说就是取消对new的使用,把对象的创建统一交给容器处理。

 

4、当根据bean类型获取时,要求IOC容器中有且只有一个类型匹配的bean。

  当有多个class相同的bean时,报NoUniqueDefinitionException异常;

  如果没有相对应的bean,则报NoSuchBeanDefinitionException

 

5、一个bean对应的只能是一个对象,不能是接口,即在xml文件中bean对应的class必须是具体的类

     当组件实现了接口,则可以通过接口.class获得该组件对应的bean,且bean必须唯一

  

 

6、依赖注入:为当前类的属性赋值的过程

 

7、字面量:基本数据类型和对应的包装类型

 

8、想要将IOC返回的实例模式改为多例模式,直接在bean中将scope="prototype"

 

bean的生命周期

实例化(使用构造器)->依赖注入->初始化(两者都为用bean中property对属性赋值)->销毁(必须将ioc转换为ConfigurableApplicationContext类型,才可以销毁)

   单例模式:获取IOC容器时bean对应类的对象就会被实例化和初始化;

  多例模式:在获取bean时才会实例化和初始化对应的对象,销毁方法不由IOC容器管理。

 

FactoryBean

1、BeanFactory是IOC最基本的实现,用来管理bean;

  FactoryBean是一个工厂bean,作为一个bean被IOC管理。

 

2、当把FactoryBean的实现类配置为bean时,会将当前类中getobject()所返回的对象交给IOC容器管理

 

基于注解的自动装配

自动装配:通过指定的策略为bean中的成员变量进行赋值的操作

当实现类的成员变量上缺少@Autowired注解时,会报空指针异常

 

快捷键:

ctrl+alt+T :if/try-catch等

alt+insert:生成构造器

 

动态代理

子类转换为父类时,如果调用的方法被重写,那么输出的结果就是子类中重写的内容:

 

AOP

横切关注点:要改造的非核心代码

通知:方法

切面:类

目标:被改造的核心代码

连接点:位置

切入点:对连接点的定位,Pointcut

 

基于注解的AOP

测试类中,语句的含义:

  1. ApplicationContext是IOC容器基本实现的子接口,ClassPathXmlApplicationContextApplicationContext的一个实现类,作用是通过读取类路径下的 XML 格式的配置文件创建 IOC 容器
    对象 。
  2. 使用getBean()获取到组件对象,其中使用代理模式时,目标类不能直接创建,所以参数为目标类实现的接口,此时得到的是CalculatorImpl对象

 

声明式事务

1、将开启事务、提交事务、回滚事务抽取出来,通过添加事务注解的方式(@Transactional)为核心代码进行事务化。

 

2、实现声明式事务只需要3步:

  • 在Spring的配置文件中添加jdbc.datasource的事务管理组件
  • 开启事务的注解驱动
  • 通过注解@Transactional标识类中需要被是事务管理器管理的事务

 

3、四种隔离级别:

其中幻读的意思是A事务对表中的数据进行查询时,B事务对表中的数据进行增删改,而此时A事务查询出来的还是B事务没有进行修改时的视图,此时若再接着插入会显示改数据已存在。

可重复读解决不可重复读问题,当事务A读取字段值时,禁止其它事务对这个字段进行更新。

SpringMVC

web.xml文件

1、配置SpringMVC的前端控制器DispatcherServlet时,url-pattern标签中填/,因为/*包括了jsp文件,而tomcat中已经默认配置了jsp的JspServlet,jsp的请求必须使用该定义的路径。

 

2、webapp/WEB-INF/web.xml用来配置 servlet的关联别名和映射路径。

提交请求时获取参数

1、在路径中直接填入参数,使用占位符并在控制层获取参数的方式

2、在表单/路径中填入参数,并提交请求,在控制端直接使用形参获取请求参数

复习:Cookie和Session

服务端创建Cookie,并将Cookie通过addCookie实现添加

同一个会话域中有其它的servlet请求也会携带此Cookie

Seesion的JSESSIONID是以Cookie的形式放在响应体里。

Seesion是服务器端的技术,服务器端为每一个客户端创建空间用来存放Seesion对象,客户端在发送请求时,都可以使用自己的session。这样服务端就可以通过session来记录某个客户端的状态了

Cookie是客户端会话技术,由服务器端产生,放在浏览器中的一小部分数据,浏览器以后每次访问该服务器的时候都会将数据携带到服务器去。

Seesion原理图:

Cookie原理图:

Springmvc获取请求参数乱码问题

在设置编码方式之前,不能获取任何参数,否则设置编码失效

控制台乱码,将tomcat中的vmoption设置为-Dfile.encoding=UTF-8

 

域对象共享数据

使用ModelAndView必须要返回ModelAndView的对象,否则失效,其它方式都得返回字符串,字符串内容为转发页面的相对路径。

重新设置Idea,即便是关闭和重启服务器,只要浏览器没关闭,session可以依旧保留。-》钝化和活化

 

SpringMVC的视图

使用Thymeleaf和转发视图都是基于转发的原理

但使用forward进行转发,页面中的thymeleaf模板就不会被渲染,语法解析不了,共享资源就获取不到。

 

创建包含Webapp的工程

  1. 创建一个新的Module
  2. 在pom.xml文件中添加打包方式为war
  3. Project Structure中Module,点击项目下的web,然后添web.xml,并将路劲改成src\main\webapp\web-inf
  4. 部署tomcat,在Deployment中去掉其它模块,增加新模块

 

使用RESTful实现静态数据增删改查

携带id修改的操作,Controller里必须要有两个对应的方法

过程为:通过id找到对应的employee数据(方法1 get),然后将数据显示到页面,在该页面中对数据内容进行修改,修改后进行提交保存(方法2 put)

 

axios

1、get没有请求体,所有数据不能放到data{}中

 

2、上传文件,需要引入依赖,然后在springmvc.xml中配置响应的bean

 

拦截器的顺序

preHandle 是正序输出

而postHandle 和 AfterCompletion是根据interceptorIndex,逆序输出

interceptorIndex:preHandler返回false之前的拦截器索引

 

回顾:ModelAndView,model向请求域共享数据,view页面跳转

整合

<!--配置默认的servlet处理静态资源-->
<mvc:default-servlet-handler/>

<!--开启mvc的注解驱动-->
<mvc:annotation-driven/>

<!--配置视图控制器-->
<mvc:view-controller path="/" view-name="index"></mvc:view-controller>
  1. 先使用DispathServlet处理请求,如果处理不了使用默认的servlet处理请求
  2. 使得除了视图控制器以外的控制层路径也可以被解析
  3. 设置项目启动之后的默认页面

 

 springmvc扫描组件是controller层的包;spring扫描组件将扫描除控制层以外

 

Mabatis里有内置的连接池管理,但没有Durid的性能更好

 

<!--配置mapper接口的扫描,可以将指定包下的所有mapper接口
通过SqlSeesion创建代理实现对象,并将这些对象交给IOC容器管理-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.atguigu.ssm"></property>
</bean>

 

标签:事务,请求,SSM,bean,Cookie,参数,IOC
From: https://www.cnblogs.com/exo123/p/18625025

相关文章

  • 基于java的SpringBoot/SSM+Vue+uniapp的德云社票务系统的详细设计和实现(源码+lw+部署
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • java ssm基于Android的远程家庭健康监测管理系统uniapp(源码+文档+运行视频+讲解视频)
     文章目录系列文章目录前言一、开发介绍二、详细视频演示三、项目部分实现截图四、uniapp介绍五、系统测试六、代码参考源码获取目的摘要:基于JavaSSM和Android的远程家庭健康监测管理系统为家庭健康管理带来了新的方式。该系统借助UniApp实现多平台使用,方便......
  • 基于Java中的SSM框架实现医药进出口交易系统项目【项目源码+论文说明】
    摘要首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计......
  • 基于Java中的SSM框架实现医院门诊互联电子病历管理信息系统项目【项目源码+论文说明】
    摘要网络的广泛应用给生活带来了十分的便利。所以把医院门诊互联电子病历管理与现在网络相结合,利用java技术建设医院门诊互联电子病历管理信息系统,实现医院门诊互联电子病历的信息化。则对于进一步提高医院门诊互联电子病历管理发展,对医院门诊互联电子病历管理系统能起到不少......
  • 基于ssm畅玩北海旅游网站,附源码+数据库+论文,包安装调试
    1、项目介绍基于ssm的畅玩北海旅游网站,分为用户和管理员用户-功能:登录、注册、首页、景点、美食、特产、新闻、我的、购物车、跳转到后台、我的订单、我的地址、景点收藏、特产收藏、酒店收藏管理员-功能:登录、管理员信息、用户管理、特产管理、景点管理、酒店管理、美食管......
  • 基于ssm智慧养老平台,附源码+数据库+论文,包安装调试
    1、项目介绍基于ssm的智慧养老平台,分为老人、家人、机构社区人员、管理员老人-功能:登录、个人中心、家人管理、服务记录管理、就诊记录管理、留言管理、求助服务管理、随访记录管理、娱乐活动管理、公告管理家人-功能:登录、个人中心、老人管理、家人管理、服务记录管理、就......
  • ssm学生奖惩管理系统+vue(10958)
     有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示项目演示视频二、资料介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Eclipse开发四、项......
  • ssm高校毕业生就业管理系统+jsp(10974)
     有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示项目演示视频二、资料介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Eclipse开发四、项......
  • ssm基于Java的校园二手物品交易平台的设计与实现+vue(10946)
     有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示项目演示视频二、资料介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Eclipse开发四、项......
  • 2025毕设ssm期刊杂志稿件管理系统程序+论文
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景在当今数字化快速发展的时代,期刊杂志的运营和管理面临着巨大的变革需求。随着信息量的爆炸式增长以及学术交流、文化传播全球化的推进,传统的稿件......