众筹

一级标题宋体小二加粗
二级标题宋体小四加粗

一.众筹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>

../用于回到上级目录,指定上级目录下-->>set工作集合,由set工作集合向下找,找到atcrowdfunding.parent父工程

指的是用于聚合管理的工程除了parent 工程以外,所有的工程都需要 父工程来聚合管理。

5.其他工程的pom.xml工程里面。除了用于聚合管理的parent工程以外,就是相应的依赖jar包。

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用于获取自带的表单属性值。

3.完成登陆的后端代码

在服务器解析到对应的地址之后,由拦截器找到相对应的方法,在方法里面调用Service,implement实现类,mapper接口来相继实现到数据库里查找的功能

三.众筹项目day03-09

扫描二维码关注公众号,回复: 7665476 查看本文章

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仓库中去)


<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<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请求,本次结果才代表支付成功或者失败

使用支付宝的一些相关操作:


1.引入支付宝的相关依赖

2.对其配置类进行相关的操作

3.

①如果要创建一个分布式,则需要先创建一个注册中心,用来管理其他的微服务工程

在主程序上,添加注解@EnableEurekaServer,可以开启Eureka注册中心功能

使用OpenFeign的步骤:
1、导入Feign的依赖
2、在主程序上启用feign客户端扫描:@EnableFeignClients
3、创建接口:
3.1 在类名上使用 @FeignClient("CLOUD-PROVIDER-MOVIE")
3.2 拷贝需要远程调用的服务的controller方法到当前接口中改为抽象方法
4、在消费者需要使用远程调用的代码中自动装配feign

猜你喜欢

转载自www.cnblogs.com/code-cici/p/11752353.html