JavaEE期末复习知识点总结
Java企业应用开发环境
Maven的基础概念
Maven是一个项目管理工具,可以对 Java 项目进行构建、依赖管理
Maven仓库
Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库, 是放置所有 JAR 文件的地方
Maven有三个仓库,本地仓库(local),远程仓库(remote),中央仓库(central)
云软件版本管理
working tree、index、head区别
- 工作区(working tree):当前工作的目录
- 暂存区(index):准备新提交的暂存区域
- HEAD代表的是最近的一次commit的信息
revert、reset、rebase的含义
- git revert 放弃某次提交
- git reset 是回滚到某次提交
- git rebase 当两个分支不在一条直线上,需要执行merge操作时,使用该命令操作。
Git进行版本管理的优点
- 适合分布式开发
- 速度快,占用空间小
- 可以离线工作
- 开发者之间很容易解决冲突
- 服务器压力和数据量小
JSON基本概念和语法
JSON的定义
- JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
- 是轻量级的文本数据交换格式,JSON 比 XML 更小、更快,更易解析。
JSON语法
- 数据在名称/值对中
- 数据由逗号分隔
- 大括号 {} 保存对象
- 中括号 [] 保存数组,数组可以包含多个对象
JSON函数
- JSON.parse()
从一个字符串中解析出json(键值对) - JSON.stringify()
从一个对象中解析出字符串
JSON对象的表示方法
{
"name":"javaee" ,
"url":"www.java.com"
}
常见Java数据对象
浏览器数据存储
- localStorage
localStorage的生命周期是永久的,关闭页面或浏览器之localStorage中的数据也不会消失,localStorage除非主动删除数据,否则数据永远不会消失 - sessionStorage
sessionStorage的生命周期是仅当前会话下有效 - cookie
cookie生命周期为只在设置的cookie过期时间之前一直有效,即使关闭浏览器和窗口都有效。
List、Map语法
List:
List<String> list = new ArrayList<String>();
//添加元素
list.add("hello");
list.add("world");
//遍历元素
Iterator<String> ite = list.iterator();
while(ite.hasNext())
System.out.println(ite.next());
Map:
Map<String,String> map = new HashMap<>();
//添加元素
map.put("name","Alice");
map.put("age","18");
//遍历元素
Iterator<Map.Entry<String,String>> iterator = map.entrySet().iterator();
while(iterator.hasNext()){
Map.Entry<String,String> node = iterator.next();
System.out.println(node.getKey()+":"node.getValue()");
}
Vue基础语法和语法
- 双花括号
<any>{{表达式}}</any>
作用:将表达式执行的结果输出当调用元素的innerHTML中 - 指令-循环指令
<any v-for="tmp in array"></any>
作用:在遍历array这个集合时,将临时变量保存在tmp中,创建多个any标签 - 指令-选择指令
<any v-if="表达式"></any>
<any v-else-if="表达式"></any>
作用:根据表达式执行结果的真假,来决定是否要将当前的这个元素 挂载到DOM树 - 指令-事件绑定
<any v-on:eventName="handleEvent"></any>
作用:给指定的元素 将handleEvent的方法绑定给指定eventName事件 - 指令-属性绑定
<any :myProp="表达式"></any>
作用:将表达式执行的结果 绑定 到当前元素的myProp属性
Vue表单与数据的关联运用
<div id="app">
<form>
<span>username:</span><input type="text" v-model="username">
<span>password:</span><input type="password" v-model="password">
</form>
</div>
<script>
new Vue({
el: "#app",
data: {
username: "",
password: "",
}
})
</script>
Mybatis原理和应用基础
Sqlsession的作用
Sqlsession相当于JDBC中的Connection对象,代表一个连接资源的启用,有三个作用:
- 获取Mapping接口
- 发送SQL给数据库
- 控制数据库事务
映射器的作用
在Mybatis中,映射器是最重要的组件,它是由一个接口和对应的XML文件(或@注解)构成,有四个作用:
- 描述映射规则
- 配置缓存
- 提供SQL语句,配置SQL参数类型,返回类型,缓存刷新等
- 提供动态SQL
Mybatis传递参数的方式
- 使用@Param注解
List<User> selectByUsernameAndPassword( @Param("username") String username,@Param("password") String password );
- 使用Map传递参数
List<User> selectByMapParams(Map params);
- 使用java bean传递多个参数
List<User> selectByBeans(User user);
Mybatis映射器及应用开发
映射器开发:
- SQL语句配置
<configuration>
<!-- 使用映射器时会用到,普通方式无需配置 -->
<settings>
<!-- changes from the defaults for testing -->
<setting name="cacheEnabled" value="false" />
<setting name="useGeneratedKeys" value="true" />
<setting name="defaultExecutorType" value="REUSE" />
</settings>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/cc/TestMyBaties/mapping/Student.xml"/>
</mappers>
</configuration>
- 接口语句
public interface UserMapper {
@insert("insert into user (username,password) values (#{username},#{password})")
void addUser(User user);
@select("select * from user where id = #{id}")
User selectUserById(int id);
}
- 主程序
public void insertStudent(){
SqlSession session = this.getSessionfactory().openSession();
// 直接使用映射器
UserMapper mapper = session.getMapper(UserMapper.class);
User user= new User();
user.setUsername("admin");
user.setPassword("admin");
mapper.addUser(user);
session.commit();
}
public static void main(String[] args){
UserService service = new UserService();
service.insertUser();
}
复杂的Mybatis应用程序开发
一对一查询
select *
from class c,teacher t
where c.teacher_id = t.id and c.cid=1
一对多查询
select *
from class c,teacher t,student s
where c.teacher_id = t_id and c.c_id=s.class_id and c.c_id=1
Redis数据共享技术
Redis特点
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
- Redis是完全在内存中保存数据的数据库,使用磁盘只是为了持久化
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset。hash等数据结构
- Redis支持数据的备份,即master-slave模式的数据备份
Redis优势
- 速度快,因为数据存在内存中,读的速度能达到110000次/s,写的速度能达到81000次/s
- 支持丰富数据类型,支持string,list,set,sorted set,hash
- 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行
- 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除
主要数据类型
- String:字符串
- Hash: 散列
- List:列表
- Set:集合
List和Set的特点
- List和Set都是接口继承于Collection接口
- List有顺序有重复没有排序
- set无重复有排序
更多关于Redis的操作,请移步:Jedis的基本操作
Spring框架和依赖注入开发
IOC
Ioc—Inversion of Control
,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。
Java对象调用另一个Java对象的方法
使用依赖注入(DI-Dependency Injection) 的方式
Spring AOP的基础概念和开发
切面(Aspect)
一个关注点的模块化,这个关注点可能会横切多个对象。事务管理是J2EE应用中一个关于横切关注点的很好的例子。在Spring AOP中,切面可以使用基于模式或者基于@Aspect注解的方式来实现。
连接点(Joinpoint)
在程序执行过程中某个特定的点,比如某方法调用的时候或者处理异常的时候。在Spring AOP中,一个连接点总是表示一个方法的执行。
通知/增强(Advice)
在特定的连接点,AOP框架执行的动作。各种类型的通知包括“around”、“before”和“throws”通知。通知类型将在下面讨论。许多AOP框架包括Spring都是以拦截器做通知模型,维护一个“围绕”连接点的拦截器链。spring aop advice的类型:
- 前置通知(before advice),在目标方法执行之前执行。
- 返回后通知(after returning advice),在方法正常执行结束之后的通知,可以访问到方法的返回值。
- 抛出异常后通知(after throwing advice),在目标方法出现异常时执行的代码,可以访问到异常对象,且可以指定出现特定异常执行此方法。
- 后置通知:(after[finally] advice),在目标方法执行之后执行(无论是否发生异常)。
- 环绕通知:(around advice),可以实现上述所有功能。
切入点(Pointcut)
指定一个通知将被引发的一系列连接点的集合
织入(Weaving)
组装方面来创建一个被通知对象。这可以在编译时完成(例如使用AspectJ编译器),也可以在运行时完成。Spring和其他纯Java AOP框架一样,在运行时完成织入。
代理(Proxy)
AOP框架创建的对象,包含通知。 在Spring中,AOP代理可以是JDK动态代理或者CGLIB代理。
SpringMvc应用程序开发
Springmvc是一个基于mvc的web框架,它是spring框架的一个模块。
SSM
SSM(Spring+SpringMvc+Mybatis)框架的开发,只涉及 Spring 与 MyBatis 的整合以及 Spring MVC 与 MyBatis 的整合。
SpringMvc常用注解
- @Controller
负责注册一个bean到sprng上下文中 - @RequestMapping
注解为控制器指定可以处理那些URL请求 - @RequestBody
该注解用于读取Request请求的body部分的数据,使用系统默认配置的HttpMessageConvert进行解析,然后把相应的数据绑定到要返回的对象上 - @ResponseBody
该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConvert转化为指定格式后,写入到Response对象的body数据区
LayUI Table与SpringMVC综合应用
了解Table的语法
创建一个table实例最简单的方式是,在页面放置一个元素
<table id="demo" lay-filter="test"></table>
//引入layui.js
<script src="/layui/layui.js"></script>
<script>
//layui指定加载table模块
layui.use('table', function(){
var table = layui.table;
//第一个实例
table.render({
elem: '#demo'
,height: 312
,url: '/demo/table/user/' //数据接口
,page: true //开启分页
,cols: [[ //表头
{field: 'id', title: 'ID', 80, sort: true, fixed: 'left'}
,{field: 'username', title: '用户名', 80}
,{field: 'sex', title: '性别', 80, sort: true}
,{field: 'city', title: '城市', 80}
,{field: 'sign', title: '签名', 177}
,{field: 'experience', title: '积分', 80, sort: true}
,{field: 'score', title: '评分', 80, sort: true}
,{field: 'classify', title: '职业', 80}
,{field: 'wealth', title: '财富', 135, sort: true}
]]
});
});
</script>
需要从后端返回的数据类型:
"code": 0,
"msg": "",
"count": 1000,
"data": [
{
"id": 10000,
"username": "user-0",
"sex": "女",
"city": "城市-0",
"sign": "签名-0",
"experience": 255,
"logins": 24,
"wealth": 82830700,
"classify": "作家",
"score": 57
},
{
"id": 10001,
"username": "user-1",
"sex": "男",
"city": "城市-1",
"sign": "签名-1",
"experience": 884,
"logins": 58,
"wealth": 64928690,
"classify": "词人",
"score": 27
}
}
SpringMvc前后端数据交互
程序设计
使用ajax进行前后端数据交互
$.ajax({
type: "Get",
url: "/springmvcajax/getUsersInfo",
dataType: "json",
//如果需要向后端发送数据使用
//data: param
success: function(data){
console.log(data.msg);
},
error: function(err){
console.log(err.msg)
}
})
SpringBoot介绍和简单应用
SpringBoot的特点
- 搭建项目快
- 测试简单,内置了Junit,Spring Boot Test等多种测试框架
- SpringBoot让配置变的更简单
- 内嵌容器,省去了配置Tomcat的繁琐
- 方便监控,使用Spring Boot Actuator组件提供了应用的系统监控,可以查看应用配置的详细信息