08 2022 档案
摘要:响应get和post请求 SpringMVC中使用@RequestMapping注解完成对get请求和post请求的响应 项目结构和配置文件与SpringMVC博客集中的"SpringMVC 01"保持一致 在webapp/admin目录下新建2个jsp文件,这两个jsp文件分别作为相应请求的响应页
阅读全文
摘要:SpringMVC SpringMVC概述: 是基于MVC开发模式的框架,用来优化控制器 是Spring家族的一员,也具备IOC和AOP 什么是MVC: 它是一种开发模式,是模型视图控制器的简称,所有的web应用都应当基于MVC模式开发 M:模型层,包含实体类,业务逻辑层,数据访问层 V:视图层,h
阅读全文
摘要:Spring事务处理方式 方式1:注解式事务 使用@Transactional注解完成事务控制,此注解可添加到类上,则对类中所有方法执行事务的设定,注解添加到方法上,则对该方法执行事务处理 @Transactional(...)注解参数说明: propagation = Propagation.RE
阅读全文
摘要:实体类 Account实体类 package com.example.pojo; public class Account { private Integer aid; private String aname; private String acontent; //getter,setter,无参
阅读全文
摘要:SM整合步骤 预期项目结构 新建数据库和数据表 springuser.sql脚本如下 create database ssm; use ssm; create table users( userid int primary key, uname varchar(20), upass varchar(
阅读全文
摘要:@After 作用 最终通知,不论程序前期执行成功还是失败,最后都要执行最终通知的切面功能 业务接口 package com.example.s04; /** * 业务接口 */ public interface SomeService { default String order(int orde
阅读全文
摘要:@Around 图示 环绕通知的切面参数就是目标方法本身 环绕通知的返回值就是目标方法的返回值,如果目标方法有返回值的话,可以对该返回值进行修改 不论目标方法的返回值是基本类型(8 + 1),还是引用类型,环绕通知对该返回值的修改都可以真正影响到目标方法的返回值 业务接口 package com.e
阅读全文
摘要:@AfterReturning 图解 后置通知的方法参数可以是目标方法的返回值,如果目标方法有返回值则可以获得该返回值 后置通知在获取到目标方法的返回值后,是否可以修改该返回值,从而真正影响到目标方法的返回值? 如果目标方法的返回值是基本数据类型(8 + 1),则影响不起作用 如果目标方法的返回值是
阅读全文
摘要:AspectJ框架 概述 AspectJ是一个优秀的面向切面编程的框架,他扩展了java语言,提供了强大的切面实现 本身是java语言开发的,可以对java语言面向切面编程进行无缝扩展 AOP常见术语分析 切面:那些重复的,公共的,通用的功能被称为切面,例如,日志,事务,权限等功能 连接点:实际就是
阅读全文
摘要:常见Spring内置AOP接口 Before通知 在目标方法被调用前调用, 切面需要实现的接口:org.springframework.aop.MethodBeforeAdvice After通知 在目标方法被调用后调用 切面需要实现的接口:org.springframework.aop.After
阅读全文
摘要:核心解读 AOP:Aspect Oriented Programming,面向切面编程 核心1:将公共的,通用的,重复的代码单独开发,在需要时反织回去 核心2:面向接口编程,即设置接口类型的变量,传入接口类型的参数,返回接口类型的返回值,调用接口类型的变量自身的实现方法 图示 图示分析:例如,在开发
阅读全文
摘要:为了方便复习与交流,整理了前6篇Spring博客(Spring 01 ~ Spring 06)主要内容的思维导图
阅读全文
摘要:优化基于xml的Spring项目配置文件 说明 对Spring博客集里(指Spring 02)基于xml的Spring接管下的三层项目构建进行优化改造,实现配置文件的拆分和整合 Spring中xml文件的头文件信息和beans标签内容如下,不再赘述,之后只说明核心标签的内容 <?xml versio
阅读全文
摘要:背景 用注解改造前面Spring博客集里(指 Spring 02)基于xml的Spring接管下的三层项目架构 对前面Spring博客集里(指 Spring 04)@Controller + @Service + @Repository 3个注解的用法进行演示 实现类 数据访问层 数据访问层的实现类
阅读全文
摘要:Spring中的IOC 一种思想,两种实现方式 IOC (Inversion of Control):控制反转,是一种概念和思想,指由Spring容器完成对象创建和依赖注入 核心业务:(a)对象的创建 (b)依赖的注入 2种实现方式 基于xml实现IOC 基于注解实现IOC 基于xml的IOC在前3
阅读全文
摘要:注入方式 具体有3种注入方式:通过构造方法的 a.参数名称注入 b.参数下标注入 c.默认参数顺序注入 参数名称注入 School实体类 package com.example.pojo03; public class School { private String name; private St
阅读全文
摘要:业务背景 需求:使用三层架构开发,将用户信息导入到数据库中 目标:初步熟悉三层架构开发 核心操作:开发两套项目,对比Spring接管下的三层项目构建和传统三层项目构建的区别 注意:本例中的数据访问层,先不连接数据库,只是进行简单数据模拟 非Spring接管下的三层项目构建 实体类 + 各访问层 实体
阅读全文
摘要:简介 Spring框架是一个容器,是整合其他框架的框架 他的核心是IOC(控制反转)和AOP(面向切面编程),由20多个模块构成,在很多领域都提供了优秀的问题解决方案 特点 轻量级:由20多个模块构成,每个jar包都很小,小于1M,核心包也就3M左右 代码污染小:Spring框架对程序员开发时的条条
阅读全文
摘要:缓存作用 当对某些数据的查询请求频繁,且数据不经常修改时,使用缓存机制可以提高查询效率 数据库发生commit操作时,缓存清空,防止一直查询缓存中的旧数据 mybatis缓存执行流程 mybatis一级和二级缓存 一级缓存作用域:sqlSession对象 二级缓存作用域:Mapper.xml文件 查
阅读全文
摘要:业务背景 根据订单id查询订单的信息,以及该订单所属的客户的基本信息(不包括该客户自己的订单信息) 两张数据表 客户表 订单表 实体类 客户实体类:Customer private Integer id; private String name; private Integer age; //封装客
阅读全文
摘要:业务背景 根据客户id查询客户基本信息,以及客户存在的订单信息 两张数据表 客户表 订单表 实体类 客户实体类:Customer private Integer id; private String name; private Integer age; //封装存在的订单信息 List<Order>
阅读全文
摘要:当数据表的字段名和实体类的成员变量名不同时 //Book实体类 private Integer id; private String name; //BookMapper.java接口 List<Book> getAllBooks(); <!-- BookMapper.xml --> <!-- //
阅读全文
摘要:1. 通过指定参数位置获取 作用 如果入参是多个且实体类无法封装所有的入参,可以通过指定参数位置进行传参,方便对多个参数进行获取 用法 接口 //指定参数位置 List<User> getByBirthday(Date start, Date end); sql标签 <!-- //指定参数位置 Li
阅读全文
摘要:< foreach >标签 作用 用来进行循环遍历,完成循环条件的查询,批量删除,批量增加,批量更新 用法 包括循环查询 + 批量删除 + 批量增加 + 批量更新的用法 UsersMapper.java package com.example.mapper; import com.example.p
阅读全文
摘要:作用 可以定义代码片段 可以进行逻辑判断 可以进行循环处理(批量处理),使条件判断更为简单 使用方式 通过mybatis中与动态sql有关的标签来实现 < sql >标签 + < include >标签 作用 < sql >标签:可以用来定义代码片段 < include >标签:对定义的代码片段进行
阅读全文
摘要:返回主键值的insert操作 应用背景 图示说明 在上述业务背景下,涉及两张数据表的关联操作:用户表 + 用户积分表 传统操作:在对用户表执行完插入语句后,再次查询该用户的uid,将该uid作为外键,最后插入积分数据到用户积分表 数据库操作次数:3次 优化操作:在对用户表执行完插入语句后返回该用户的
阅读全文
摘要:"#{}"占位符 作用 传参大部分使用"#{}",在数据库底层使用的是:PreparedStatement预编译处理对象 数据库底层被解析为"?",用来传值,是安全的数据库访问,可以防止sql注入 通过在SqlMapConfig.xml添加日志输出配置,在后文测试输出的结果中可以验证 <?xml v
阅读全文
摘要:接口文件和对应的mapper.xml文件 UsersMapper.java接口文件 package com.example.mapper; import com.example.pojo.User; import java.util.List; /** * 数据访问层的接口,定义对数据库完成的CRU
阅读全文
摘要:mybatis中动态代理存在的意义 图示 图示分析 分层说明:界面层为第一层,业务逻辑层(接口层 + 实现层)为第二层,数据访问层(接口层 + 实现层)为第三层 业务逻辑层和数据访问层:分别分两层来开发,是开发中的规范 接口层:为了面向接口编程,使开发更加灵活 实现层:落实具体功能,完成具体的实现
阅读全文
摘要:MyBatis对象分析 测试代码示例 package com.example.test; import com.example.pojo.Student; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.
阅读全文
摘要:创建实体类Student,用来封装数据 对照数据表构建实体类 package com.example.pojo; public class Student { private Integer id; private String name; private String email; private
阅读全文
摘要:三层架构 项目开发时,遵循的一种设计模式,分为三层 界面层:用来接收客户端输入的数据,调用业务逻辑层进行功能处理,返回结果给客户端 过去的servlet就完成了界面层的功能(但是他做的更多) 业务逻辑层:用来进行整个项目的业务逻辑处理,向上为界面层提供处理结果,向下问数据访问层要数据 数据访问层:专
阅读全文
摘要:背景 有时目标对象不可直接访问,只能通过代理对象访问 图示: 示例1: 房东 > 目标对象 房屋中介 > 代理对象 你,我 > 客户端对象 示例2: 运营商(电信,移动,联通) > 目标对象 第三方公司 > 代理对象 开发的应用程序需要发送短信的功能(或者需要支付功能) > 客户端对象 代理模式的作
阅读全文
摘要:业务背景 实际开发中一个大的项目由若干子模块(子项目)组成,各模块之间存在相互依赖,各模块又可能依赖其他第三方模块 为了便于项目开发和管理,适应分布式开发框架,多模块管理显得尤为重要 业务背景图示 maven多模块管理:方式1 创建父工程 如何实现多模块管理:顶级工程管理子级工程(也即:父工程管理子
阅读全文
摘要:maven依赖范围 表示:scope 取值:compile(默认),test,provided 根据依赖在maven构建项目时所参与的阶段,决定依赖是否起作用 maven构建项目的阶段有 清理,编译,测试,打包,安装,部署等 范围图示 依赖范围示例 <!-- 单元测试的依赖 --> <depende
阅读全文
摘要:说明 idea中内置了maven,但是内置的maven修改设置不方便,要使用自己安装的maven 覆盖idea中的默认配置,在idea中指定maven的安装位置并进行相关配置 配置maven 安装maven 官网下载 解压缩至某一目录例如:maven_work目录下 在maven_work目录下另建
阅读全文
摘要:安装docker 运行docker 注意安装docker和运行docker的步骤很简单 docker安装 docker常用命令 部署mysql docker pull mysql # 拉取最新版mysql docker run -d -p 3306:3306 # 后台运行,映射端口 -v /home
阅读全文
摘要:环境查看 centos需要7版本以上,内核最好3.10以上 1.查看Linux版本: rpm -q centos-release 2.查看内核版本: uname -r 安装 卸载旧组件 sudo yum remove docker \ docker-client \ docker-client-la
阅读全文
摘要:基础知识 每个保留关键字(指令),都必须是大写字母 从上到下的顺序执行 '#'表示注释 每一个指令都会创建并提交一个新的镜像层 docker三部曲 dockerfile:构建文件,定义了一切 dockerimages:通过dockerfile构建生成的镜像,最终发布和运行的产品 docker容器:镜
阅读全文
摘要:数据卷挂载方式 数据卷手动挂载 -v 主机目录:容器目录 #核心参数 #示例 docker run -it --name=centos_test -v /home/wangxun/centos_test:/home centos /bin/bash docker inspect 容器id #查看容器
阅读全文
摘要:启动docker systemctl start docker 帮助命令 docker version #docker版本信息 docker info #docker更为详细的信息,包括容器的数量以及容器信息 docker 命令 --help #帮助命令 帮助文档地址 镜像命令 查看镜像 docke
阅读全文
摘要:三个部署任务 docker部署nginx docker pull nginx #拉取nginx镜像 docker images #检查拉取的镜像 docker run -d -p 3344:80 --name nginx_test nginx #后台方式启动nginx 本机浏览器模拟访问:http:
阅读全文
摘要:为了以一种更为规范的态度记录笔记,既方便自己阅读,又方便与他人交流,简单的学习了一下Markdown常用语法 其实,有些知识的学习成本很低,可能只要几个小时就可以很好的上手应用,但是这些小技能对于一个程序员来说 可能是必备的,简单的时间投入,可能会极大的方便自己的学习和工作过程 MarkDown简单
阅读全文
摘要:最近在多个知识点涉及到了ajax请求,各个知识有所交错,知识体系上学的有些混乱,这里梳理一下 单纯的发送ajax请求 方式1: ajax传统4步骤 ajax的post请求 var xhr = new XMLHttpRequest() xhr.onreadystatechange = function
阅读全文
摘要:遇到的小坑 回调函数相对window.onload的摆放位置 给回调函数addData传数据时,如何操作才能将数据传进去 代码实现 前端代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>ajax实现关键字
阅读全文
摘要:ajax跨域访问 什么是跨域访问 从一个域名去访问另一个域名的资源 或者从一个站点去访问另一个站点的资源 哪些请求方式可以发送跨域请求 超链接 form表单 传统js代码 javascript标签加载(后期可以改造为jsonp方式) img标签 相同点:直接改变地址栏地址 哪些方式不能发送跨域请求
阅读全文
摘要:首先封装自己的 jQuery库 启发:css的元素选择器思想 简单的代码实现 function jQuery(selector){ if(typeof selector == "string"){ if(selector.charAt(0) == "#"){ //原先的dom对象还要留着,因为最终的
阅读全文
摘要:ajax概述 组成:asynchronous + javascript + xml 特点: 可发送异步请求(这也是与传统请求方式的区别) 用javascript语言编写代码 前后端数据交换格式为xml(不局限于xml:例如现在更为常用的json,还有其它格式,例如:普通字符串) ajax请求的应用场
阅读全文
摘要:Servlet对象的生命周期 什么是Servlet对象生命周期? Servlet对象什么时候被创建。 Servlet对象什么时候被销毁。 Servlet对象创建了几个? Servlet对象的生命周期表示:一个Servlet对象从出生在最后的死亡,整个过程是怎样的。 Servlet对象是由谁来维护的?
阅读全文
摘要:关于系统架构 系统架构包括什么形式? C/S架构 B/S架构 C/S架构? Client / Server(客户端 / 服务器) C/S架构的软件或者说系统有哪些呢? QQ(先去腾讯官网下载一个QQ软件,几十MB,然后把这个客户端软件安装上去,然后输入QQ号以及密码,登录之后,就可以和你的朋友聊天了
阅读全文
摘要:注意:内外层使用的图片,要和内外层容器的规格相同 鼠标事件未触发时效果 鼠标事件触发时效果 css代码 /*页面背景色*/ body{ background-color: black; background-repeat:no-repeat; } /********************** 双层
阅读全文
摘要:验证邮箱是否合法 <!DOCTYPE html> <html lang="en"> <head> <title>js-DOM编程-正则表达式验证登陆邮箱</title> <meta charset="UTF-8"> <style> *{ margin: 0; padding: 0; box-sizi
阅读全文
摘要:概述 浏览器上的脚本语言:不需要编译,浏览器直接解释执行,目标程序(可以执行的程序)可以以普通文本的形式保存 事件驱动的脚本语言 遵循ECMA-Script规范 html与javascript 在html中嵌入javascript的3种方式 代码块 行内代码 外部js文件引入 javascript
阅读全文
摘要:jQuery jQuery与事件 定义元素监听事件 语法:$(选择器).监听事件名称(处理函数),事件名称就是js中出现的事件名称 本质:处理函数在底层会被赋值给jQuery对象对应的dom对象的事件句柄 on()绑定事件 语法:$(选择器).on(事件名称,事件的处理函数) 事件名称:就是js中的
阅读全文
摘要:1.maven约定的项目结构 建一个简单的maven项目 每一个maven项目在磁盘中都是一个文件夹,下面以项目:Hello为例 - Hello //项目名称 - src - main //存放主程序里的java代码和配置文件 - java //主程序中的java文件 - resources //主
阅读全文
摘要:1.maven概述 完成一个java项目,需要做哪些工作 1.项目要做什么,有那些组成部分 2.设计项目,需要哪些步骤,哪些技术,哪些人,多长时间 3.组建团队,招人,购置设备 4.开发人员写代码,需要自己测试自己写的代码,重复多次,之后将项目交给测试人员 5.测试人员,测试项目功能是否符合要求,并
阅读全文