一级标题宋体小二加粗
二级标题宋体小四加粗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请求,本次结果才表明支付成功或者失败