Mybatis
JS(javaScript)
JQuery(底层封装了JS)
Ajax(前后端交互技术)
JSP(动态网页编程技术)
JSTL(是jsp的标签库)
EL表达式
Servlet
Freemarker
Maven
Spring
SpringMVC
SpringBoot
-------------------------------------------------------------------------------------------------------------------------------
like的模糊查询
select ename from emp where '%A%' 查询名字里含A的ename字段
select ename from emp where '_A%' 查询名字里第二位为A的ename字段
在mybtis中,like模糊查询
select * from emp where ename '%' || #{ename} || '%' 这个sql语句会被在数据库中被执行 ,|| 代表拼接
在mybatis中可以使用bind标签
<where>
<if test ="表达式">
<bind name = "ename" value ="'%'+ename+'%'"/>
ename like #{ename}
</if>
</where>
JDBC java连接数据库技术
connection
准备sql
PrepareStatement 包装sql语句
resultSet,得到执行的结果
关闭流
JDBC四个核心对象
DriverManager,用于注册数据表链接
Connection, 与数据链接的对象
PrepareStatement,操作数据库SQL语句的对象
ResultSet,结果集
Mybatis的四个核心对象
SqlsessionFactoryBuiler唯一作用是创建SqlsessionFactory
SqlsessionFactory
Sqlsession
mapper
mybatis是一个持久层ORM框架
执行流程
读取mybatis配置文件
加载映射文件
构建会话工厂
创建构造工厂对象
Executor执行器(执行器有三个)
Simple
Batch
Reuse
Mybatis动态sql
<if test = "sal>10000">
sal = #{sal}
</if>
where过滤条件
<where>
<choose> 相当于switch分支
<when test="sal"> when相当于case
</when>
<otherwise>兜底分支相当于switch中的defult
</otherwise>
</choose>
</where>
每一个update标签里都有必须有set标签
<set></set>标签是update更新标签中的 具体修改哪一个字段的固定标签
select标签需要返回值类型,因为需要返回查询结果的类型,而增删改不需要返回值类型resultType
JS=javaScript是一门解释性语言,他拥有和java相似的语法
一般js文件中用来处理前端页面的特效
JS中有包含事件:
鼠标点击事件,失焦事件,聚焦事件等
js中bom对象是浏览器对象
dom对象是文档对象,在dom中一切都是文档
JQuery底层就是封装的js
JQuery=$
$("#id属性值"):根据id获取页面元素
$(".class"),根据元素内的class属性值获取元素
JSP动态网页编程技术
jsp底层就是一个servlet,可以嵌入js代码
JSP的九大内置对象
page:当前页面的对象,当前页面有效
out:向浏览器和客户端输出数据,并且管理服务缓存区
pagecontext:提供了jsp页面的所有对象,可直接使用,并直接可以得到其他的对象
exception:封装了jsp程序运行的异常信息
config:封装了服务端的配置信息
request:封装了来自客户端的请求信息
response:封装了来自服务端的响应信息
session:一次会话有效
application:全局有效
jsp中都具有工具栏,头部信息,尾部信息
将工具栏、头部信息、尾部信息都分成各个独立的文件具有方便改写的特点,在头部和尾部都能够进行jsp文件的引入
使用的时候直接导入动态包含和静态包含
在 JSP 中一共有三种 Scriptlet 代码
<%service方法内%>定义局部变量
<%!%>定义在类中方法外,定义全局变量
<%=%>可以定义表达式
include静态包含
<%@ include file="要包含的文件路径" %> <!-- 相对路径-->将静态内容进行直接替换
include动态包含
<jsp:include page="include.jsp"></jsp:include>
<@% include>
EL 表达式一般操作的都是域对象中的数据,操作不了局部变量。
${empty 限域变量名 }
empty判断域对象为空。为空,返回true;不为空返回false;
jstl是JSp的脚本标签库
核心标签库
格式化标签
条件动作标签if等
当jsp引用标签库时书写格式为:
<%@taglib url=''>
maven项目构建工具
Maven主要服务于基于java平台的项目构建,依赖管理和项目信息管理
Servlet和tomcat容器
Servlet是应用小程序,Y
tomcat是一个最小容量的web服务器也是servlet的容器
Servlet的实现
1.首先在一个类实现HttpServlet接口
2.重写service方法,进行业务逻辑的处理,然后通过response进行响应
Servlet的工作流程
通过请求头获知访问的是哪个主机
通过请求行获取访问的哪个应用程序
通过请求行获取url得到具体要访问的资源
根据url路径匹配程序真实路径
服务器会创建servlet对象,并在请求到达Servlet容器时(Servlet容器会检查自己有没有对应的servlet对象,没有就创建)
然后调用init方法进行servlet容器的初始化,再调用service方法进行业务逻辑的处理,处理完毕后将response中缓存的数据以http格式发送给
客户端,最后服务器关闭servlet对象调用detroy进行销毁
cookie是一种浏览器缓存技术:大小大概是4kb
cookie的生命周期单位为秒,可以通过setMaxAge来设置存活时间
正整数:表示cookie可以活多少秒
负整数:表示不保存cookie
0:则表示删除cookie
也可以设置指定项目下可以获取cookie
Servlet的三大域对象request,session,servletContext
request:一次请求有效,地址发生改变后,request对象失效,且数据不共享
session:一次会话有效,sessio对象底层由cookie实现,因为当session请求到达servlet容器
会先去检查一个有没有名为JSESSIONID的cookie对象,因此session往往可以用来验证是否为同一个用户
做权限认证
session的生命周期
创建到死亡
被servlet获取时候被创建,死亡方式有五种
1.默认时间到期单位为min
2.设置时间到期
3.设置立即死亡invoke
4.服务器关闭
5.浏览器关闭
servletContext(application)对象跟随服务器的开启关闭
FreeMarker 是模板引擎: 即一种基于模板和生成文本输出,它与容器无关,它不仅可以用作表现层的实现技术,
而且还可以用于生成(XML,JSP,HTML网页,电子邮件,配置文件,源代码等)的通用工具。 是一个Java类库。
FreeMarker 的原理就是:模板+数据模型=输出,模板只负责数据在页面中的表现,不涉及任何的逻辑代码,
而所有的逻辑都是由数据模型来处理的。用户最终看到的输出是模板和数据模型合并后创建的。
dom4j就是个xml解析包,用来读写xml文件
sprin框架:是一个容器框架,是个生态
spring框架概念:基于javaee应用的轻量级开源框架和核心技术为IOC和AOP两大技术,实现项目在开发过程中轻松解耦
IOC:控制反转和依赖注入,将创建对象的权利赋予了IOC容器,IOC容器的核心组件是BeanFactory
spring的七大模块
核心容器模块:IOC 容器(控制反转和依赖注入),Factroy是spring的核心类,正是利用Factroy工厂实现创建
对象将应用的配置和依赖性规范与实际代码分开spring以bean对象的方式来组织和管理java应用中的组件及其关系
AOP模块:提供面对切面编程,可以在提供新的功能的同时不去修改原有代码,
数据访问模块dao&jdbc:主要目的是将业务代码和数据库交互代码分离,降低耦合,各做各的事
web模块
应用上下文模块:是一个配置文件,向Spring框架提供上下文信息;
SpringContext模块继承BeanFactory类,添加了事件处理、国际化、资源装载、透明装载、以及数据校验等功能;
还提供了框架式的Bean的访问方式和企业级的功能,如JNDI访问,支持EJB、远程调用、继承模板框架、Email和定时任务调度等
MVC模块:主要是将视图模型和控制器分离,降低耦合,
ORM对象关系映射模块:
依赖注入的四种注入方式
set注入
构造器注入
静态工厂注入
实例工厂注入
AOP底层运用了动态代理技术
jdk:实现接口的思想,由poxy创建代理类,利用了反射
cglib:继承的思想,继承目标对象,但目标对象不能被final修饰
动态代理的两大特点是:没有固定目标对象,在程序运行时创建,
我们需要先获得spring的上下文环境new ClassPathXmlApplicationContext("spring.xml");
IOC:依赖注入,控制反转
AOP:面向切面编程:底层是动态代理实现、(jdk(实现思想,面对接口),cglib(继承思想,面向类))
AOP 七大特点:
连接点:每一个方法
切入点:匹配的方法合集
切面:连接点与切点的集合决定了切面()
通知:环绕通知,前置通知,异常返回通知,后置通知,方法执行后通知
需要代理的目标对象:(增强行为)
织入:将切面应用到目标对象并生成代理对象的过程
引入:在不修改源代码的情况下为程序增强功能或者增加字段
SpringMVC模型,视图,控制器(设计思想)
这种设计思想将程序业务角色和视图分离,使他们分开,达到解耦的目的,程序改变不会互相影响
springMVC的工作流程
1.请求由客户端发送到前端控制器
2.DispatherServlet前端控制器对请求URL解析获取uri,调用处理器映射器HandlerMapping
3.处理器映射器返回处理链给前端控制器(包括Handler对象以及Handler对
象对应的拦截器)
4.前端控制器根据返回的处理链调用具体的处理器适配器HandlerAdapter
5.处理器适配器根据请求调用具体的处理器Handler:执行Handler的方法并返回一个视图模型ModleAndView给处理器适配器
6.处理器适配器将执行结果返回给前端控制器
7.前端控制器接收到视图模型后,调用对应的视图解析器
8.视图解析器解析ModleAndView,返回给前端控制器对应的view视图
9.前端控制器再调用对应的视图渲染
10.渲染视图后返回给前端控制器
11.前端控制器将渲染后的视图返回给客户端
拦截器:HandlerInterceptro
拦截用户请求的方法 (权限验证)
SSM框架集成spring springMVC Mybatis
spring IOC和AOP负责程序的对象的创建,和面向切面编程,
springMVC主要负责视图模型,和应用程序的解耦
Mybatis负责连接数据库
dao层持久层:CRUD的方法都存放在此,与Mybatis
service层负责业务逻辑的处理
controller层负责接收数据和响应
sprinBoot框架--主流web应用的开发-因为其多使用了注解开发,和pom的·依赖和插件,大大减少了开发时间
--是spring框架的拓展
springboot需要配置一个启动器starter并注解@SpringBootApplication注解标注这是一个启动器@MapperScan("dao层的路径为扫描范围")
此时dao层就不需要配置@Repository注解
springboot热部署
导入对应的插件和依赖
打war包需要在项目id下加一个<packaing>war</packaing>
加上maven打包命令
clean compile package -Dmaven.test.skip=true
@EnableCaching分布式缓存技术
swagger生成接口文档API
文件上传的注解为@MultipartConfig
Linux操作系统
log4j日志
日志级别
INFO:普通信息
DEBUG人为调试信息
WARN:警告信息
ERROR:错误
FATAL:系统错误
一般设置打印等级为DEBUG设置,这样就能看到所有打印信息
一般我们只看ERROR和FATAL,方便找出错的位置,导入依赖,然后在配置文件里配置上显示级别一般为DEBUG
数据结构中的逻辑运算符
与& 1 & 0 = 0
1 & 1 = 1
0 & 0 = 0
或| 1 | 0= 1
1 | 1 = 1
0 | 0 = 0
异或^ 1 ^ 0= 1
1 ^ 1 = 0
0 ^ 0 = 0
带符号右移>>2(带1)
不带符号右移>>>2(不带1)
-m= (~m+1) 无论正数还是负数都通用一个逻辑,效率高