衆籌

一級標題宋體小二加粗
二級標題宋體小四加粗html

一.衆籌FirstDay
  在環境搭建的過程中,先要分析清楚各個數據表之間的關係。 只有把這些表的關係搞清楚了,才能更好地創建出相應的Java工程。
  1.創建一個總的set工做集合,之後的全部的該項目的工程都放入該set集合當中來,要分析清楚有哪些須要創建的工程,在衆籌項目中有:
    ①用於管理bean的atcrowdfunding-bean 的工程----->>>>>jar
    ②用於管理工具類,常量的atcrowdfunding-common工程----->>>>>jar
    ③用於管理各類接口,以及mapper接口的工程atcrowdfunding-api----->>>>>jar
    ④用於管理各類實現類的工程atcrowdfunding-manager-impl----->>>>>jar
    ⑤用於程序執行的總入口,atcrowdfunding-main工程----->>>>>war
    ⑥用於管理各類jar包衆籌項目的父工程atcrowdfunding-parent----->>>>>打包方式:pom
  2.將各個工程之間的依賴關係分析清楚,在衆籌項目中:
    main工程-->>impl工程-->>api工程-->>bean工程-->>common工程
    parent父工程用於管理總的jar包,以及對各個工程之間進行相應的聚合管理。
  3.父工程與其餘的工程不大同樣,須要對工程自己進行相應的Tools做用建,以創建相應的web.xml配置文件。在父工程的pom.xml 裏配置了許多在工程中所須要用到的jar包
   <dependencies>
    <dependency>
      <groupid></>
      <artifactid></>
      <version></>
    <dependency>
  <dependencies>
父工程除了能夠管理相應的jar包以外,還能夠進行相應的聚合管理
    <modules>
      <modelu>
      <modelu>
    </modelus>
聚合管理可使用OverView進行相應的生成。前端

  4.main的pom.xml裏面有如下內容
  <parent>
    <groupId>com.atguigu.atcrowdfunding</groupId>
    <artifactId>atcrowdfunding.parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../atcrowdfunding.parent/pom.xml<relativePath>
  </parent>java

  ../用於回到上級目錄,指定上級目錄下-->>set工做集合,由set工做集合向下找,找到atcrowdfunding.parent父工程mysql

  指的是用於聚合管理的工程除了parent 工程之外,全部的工程都須要 父工程來聚合管理。web

  5.其餘工程的pom.xml工程裏面。除了用於聚合管理的parent工程之外,就是相應的依賴jar包。redis

  6.web.xml的具體配置
    ①用於進行處理亂碼的CharacterEncodingFilter過濾器,還有用於處理表單沒法提交的HiddenHttpFilter過濾器
    ②初始化Spring容器的Listener
    ③用於Web工程的主要部件springDispatcherServlet
    ④/ :放行jsp,攔截其餘的 /*:攔截全部的
  7.mybatis-config.xml用來書寫mybatis的全局配置文件
  8.spring-mybatis.xml用來書寫SwlSessionFactory與MapperScanner接口的掃描器。
    用於初始化mapper接口和sqlSession的建立。
二.衆籌項目SecondDay
  1.跳轉到登陸頁面
  在頁面原型裏面找到相對應的登陸頁面,在登陸的href屬性裏修改相應的地址名,使得服務器在解析時將其找到相應的Controller進行解析
  經過Controller進行頁面的跳轉,從而進入登陸頁面
  2.完成登錄的前端代碼
  經過給form表單添加屬性值,來獲取相應的表單的輸入內容,而且將其提交至服務器
  $("form").prop("action" , "${PATH}/doLogin").submit();//用於獲取該表單的提交內容,而且上傳至服務器。算法

  attr用於獲取自定義的表單屬性值。prop用於獲取自帶的表單屬性值。spring

  3.完成登錄的後端代碼sql

  在服務器解析到對應的地址以後,由攔截器找到相對應的方法,在方法裏面調用Service,implement實現類,mapper接口來相繼實現到數據庫裏查找的功能數據庫

  三.衆籌項目day03-09

  1.當異步請求和同步請求同時出現時,必須採起動態委派

  2.動態委派注意事項

  當js代碼中有相關的同步請求中包含了異步操做,則在綁定單擊事件是須要使用事件委派

  3.綁定單擊事件由兩種方式

  ①.在相對應的表單項裏面添加onclick 對應的函數()

  例:onclick="dologin()"

  對應的函數: function dologin() {
  var type = $(":selected").val();
  if ( type == "user" ) {
  //window.location.href = "main.html";不只要跳轉到該頁面,還要處理相應的請求。
  //prop爲jQuery的語法prop(name,value)
  $("form").prop("action" , "${PATH}/doLogin").submit();
  } else {
  window.location.href = "index.html";
  }
  }


注:
  對於HTML元素自己就帶有的固有屬性,在處理時,使用prop方法。

  對於HTML元素咱們本身自定義的DOM屬性,在處理時,使用attr方法。

注:
  $("#updateRoleModal input[name='name']").val(role.name);

  對應的函數在外部進行相應的說明,在onclick裏面只是對應的調用

  ②.對class進行相應的綁定 (普通的事件綁定,即綁定相對應的按鈕)

  4.全部的程序的執行過程

    先由按鈕觸發事件-->>若是有須要提交的詳情,就在前端代碼中獲取對應的數據-->>在由相應的請求方式發送給服務器進行後端代碼的執行


    -->>若是沒有對應的提交的詳情,就直接響應對應的事件--


  5.同步請求與異步請求的區別

  同步請求:在同步請求中,頁面給瀏覽器發送請求,由瀏覽器進行解析,再將解析完的頁面展示出來
  異步請求:而在異步請求中,頁面給瀏覽器發送請求,由jsp頁面進行解析(至關於在執行程序的同時又打開了一個線程來處理請求。)
  異步請求中只須要局部刷新

 

 

 

 

  四.衆籌項目-springsecurity框架
  1.SpringSecurity核心功能:
    ①認證 :你是誰
    ②受權 :你能幹什麼
    ③攻擊防禦 :防止僞造身份

  2.springsecurity的環境搭建

  ①.建立普通的maven-war工程,在其pom文件中引入依賴(在往sts中引入工程時,先將整個springsecurity的包copy到maven倉庫中去)


<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>4.3.20.RELEASE</version>
</dependency> <!-- 依賴的WEB類庫 -->
<dependency>
  <groupId>javax.servlet.jsp</groupId>
  <artifactId>jsp-api</artifactId>
  <version>2.2</version>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>
  <version>2.5</version>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>jstl</artifactId>
  <version>1.2</version>
</dependency>
②.配置相應的web.xml


<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

3.在往本身的項目中引入springsecurity時

①先在pom.xml中添加依賴

<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>4.2.10.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>4.2.10.RELEASE</version>
</dependency>
<!-- 標籤庫 -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>4.2.10.RELEASE</version>
</dependency>

②.在web.xml中配置相應的Filter過濾器(既是攔截下全部的請求先交由springsecurity來受權並檢查權利是否足夠)
<filter>
<filter-name>springSecurityFilterChain</filter-name><!--名稱固定,不能變-->
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
③.編寫對應的配置類

@Configuration 標緻是配置類
@EnableWebSecurity 開啓SpringSecurity功能
public class AppWebSecurityConfig extends WebSecurityConfigurerAdapter {
 
}


在此第一次訪問本身的項目時 可能什麼都訪問不到,由於並未開啓權限


4.項目與springsecurity的整合

①.先在整合的程序的web.xml當中去配置過濾器。
②.在對應的pom文件中去配置相應的依賴。
③.寫本身的配置類和實現類來實現功能

 

五.衆籌項目SpringBoot框架

1.簡介
SprignBoot框架是Spring的微服務框架,他將每一個項目的每一個內容能夠獨立運行起來。
①不用編寫繁雜的配置文件了,在boot項目建立初期,已經選擇了所要集成的內容,在框架中會自動引入,
mysql鏈接驅動以及spring web,thymeleaf模板引擎。
②springboot 是spring的升級版,spring容器能作的事情她均可以完成,
並且更便捷,配置形式簡單,而且本來繁瑣的xml文件配置方式,
使用註解及yml等方式實現。
③若是是連外網的狀態下,則能夠本身生成所須要的jar包, 若是沒有聯網的狀況下,則須要本身手動配置pom依賴
2.運行
項目中會自動生成Application的主程序入口

六.衆籌項目SpringCloud框架


①.分佈式

·概念:分佈式是若干獨立計算機系統的集合。這些計算機對於用戶來講就是一個系統,spring並無製造輪子,只是給用戶提供了 一套現對於更爲整合的框架
·分佈式系統(distributed system)是創建在網絡之上的軟件系統。

②.分佈式與集羣的關係:

1.集羣是指將幾臺服務器整合在一塊兒用於實現一個業務

2.而分佈式的每個節點均可以用來作集羣關係,而集羣不必定就是分佈式的。
③.RPC

RPC---Remote Procedure Call 遠程調用,是一種進程間通訊方式,他是一種技術的思想,而不是規範。

1.他來解決分佈式系統的各個服務之間互相交互問題

2.RPC思想原理

④.@RestController//使用它的意義與在每一個方法前寫上@ResponseBody同樣

因爲該項目是使用SpringCloud,因此底層實現是由Restful風格來實現的,要求返回類型爲Http+JSON,因此使用

@RestController,就至關於在每一個具體的方法上寫上了@ResponseBody同樣

⑤.在springcloud中經常使用的名詞

1.Ribbon負載均衡:利用實現類RestTemplate來實現功能。指的是由註冊中心來分配對應的處理方法的服務器,經常使用的有,輪詢和加權輪詢

<1>Ribbon使用方法:

1)在對應的工程中加入pom依賴文件

2)給容器中注入RestTemplate @Bean @LoadBalamced用來開啓負載均衡

  <2>Feign與Ribbon的區別

  1)Feign裏面已經包含了Ribbon

  2)Feign面向接口的編程方法


2.服務雪崩:指的是在服務裏面,每一個服務器中有關聯,當一個服務器宕機以後,其餘的服務器也相繼淪陷,可是在幾分鐘後,當服務器穩定以後,就會處理該雪崩事件,會給用戶迴應相對應的狀態碼,但這樣顯然不合理,因而就有了熔斷

3.熔斷:就是在雪崩發生以後,爲了使用戶不那麼直接的看到狀態碼,因而給了一個熔斷機制,在熔斷以後會自動調用指定的兜底函數,來將寫好的假數據傳遞給用戶。

a)服務雪崩的具體解決方法:等待服務器穩定以後,即可以繼續訪問,
b)開啓Hystrix的斷路保護功能
⑥.項目與SpringCloud的整合

  1)分析項目的模塊,須要哪些地方,肯定依賴以及對應的Common關係。

  2)在項目中整合對應的Durid,mybatis,redis模塊

    a)先引入對應的依賴

    b)在對應的使用模塊中建立對應的application.yml文件用於書寫配置文件

    c)在父工程中依賴對應的Swagger ui和Swagger 2 的依賴,用於書寫實時對應的api文檔。

 

支付寶
RSA加密處理算法:
  a):客戶a要給客戶b傳遞信息,爲了保證客戶b的信息的安全性,由客戶b經過算法來建立一個公鑰一個私鑰,公鑰交由客戶a來處理,私鑰交由客戶b來處理,當客戶a要給客戶b傳遞消息時,由客戶a用對應的公鑰對數據進行加密,由客戶b用私鑰來進行解密,這樣有效的保證了客戶的信息安全問題。
  b):當客戶b要給客戶a傳遞消息時,也怕信息泄露,因而由客戶b經過算法來進行私鑰和公鑰的建立,將私鑰交由客戶a來保管,由本身保管公鑰。當客戶b要傳遞消息時,先由本身的公鑰對其進行加密處理,再由本身上次的私鑰(這裏的私鑰是在客戶a給客戶b傳遞消息時建立的)進行加簽處理,消息發出時,由客戶a用上次的公鑰來進行驗籤處理,再用本身的私鑰來進行解密處理。

外網訪問原理

  1.用戶經過訪問一個域名。
  2.由DNS域名解析服務對用戶返回一個對應的IP。
  3.用戶經過IP地址找到對應的地址進行訪問服務器。

內網穿透的目的:讓外網訪問你本地的應用

微服務中共有兩個大問題:

  1.數據不能共享:解決方法是使用 SpringSession來進行數據共享。引入依賴便可用。

  2.事務

WEBUI跳轉到指定頁面的方法

  1.利用配置類實現WebMvcConfigurer的方法

  2.在對應的Controller中進行處理。

遠程調用失敗:


  1.先檢查傳遞多個參數時有沒有添加@RequestParam(在參數上)

  2.檢查自定義類型是否實現了序列化。

  3.消費者必須有生產者響應數據的類型。

登陸失敗用重定向,登錄成功用轉發:防止表單的重複提交

用戶使用支付寶的支付流程:

  1.用戶在客戶端頁面選中要結帳的商品,點擊付款,由瀏覽器將所要購買的商品的詳細信息獲取而且提交給服務端

  2.在服務端,由Alipay的SDK對數據進行對應的加簽驗籤,返回一個表單給客戶端

  3.客戶端瀏覽器接收到響應的報文以後,直接執行js提交表單給支付寶的網關,

  4.由支付寶進行驗籤以後,將支付頁面提交給客戶端

  5.由客戶端輸入密碼,用戶名進行支付

  6.響應支付成功的頁面給用戶,而且要跳轉回支付前的頁面

  7.由客戶端的瀏覽器給服務端瀏覽器發送請求,服務端瀏覽器驗證是否支付成功,若是支付成功則給其響應一個return-URL地址

  8.最終的支付是否成功是由支付寶最後給服務端發送notify請求,本次結果才表明支付成功或者失敗

相關文章
相關標籤/搜索