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', width:80, sort: true, fixed: 'left'}
,{field: 'username', title: '用戶名', width:80}
,{field: 'sex', title: '性別', width:80, sort: true}
,{field: 'city', title: '城市', width:80}
,{field: 'sign', title: '簽名', width: 177}
,{field: 'experience', title: '積分', width: 80, sort: true}
,{field: 'score', title: '評分', width: 80, sort: true}
,{field: 'classify', title: '職業', width: 80}
,{field: 'wealth', title: '財富', width: 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組件提供了應用的系統監控,可以查看應用配置的詳細信息