Java框架
2022-10-17 11:29:27 13 举报
AI智能生成
coco博
作者其他创作
大纲/内容
简介:为了解决项目中jar包冗余,难以管理的问题
bin ---mvn运行脚本
conf---含有settings.xml配置文件
lib: 含有Maven运行所需的类库
将文件解压后放到没有中文和空格的目录下
注意:依赖于Java的环境变量
mvn -v:查看maven版本
mvn -package 打包项目
mvn -clean 清理编译后的项目
mvn -deploy 上传私服
配置环境变量,与JavaJDK相同
下载Maven
概念:存储项目jar包和依赖的本地目录--管理每个依赖的唯一标识GAV
配置:在settings.xml配置文件中添加本地仓库位置
<localRepository>D:\\666\epository</localRepository>
本地仓库
公司范围内的共享仓库,不对外开放
Nexus安装 启动 开启服务 登录
1在settings.xml中设置nexus中的用户名密码
2配置私服仓库和插件仓库
3启用私服
私服的配置
在pom.xml中配置私服仓库地址
项目上传到私服
私服
阿里的仓库,提供各种jar包的下载
在settings.xml中配置
公共仓库
阿帕奇的仓库,默认不允许修改
中央仓库
远程仓库
仓库分类
setting->build Tools中设置此项目的maven安装目录和setting.xml目录
以及所有项目的maven配置
idea关联maven
创建maven指定GAV标识
src/main/java 存放源代码
src/main/resources 书写配置文件
src/test/java 书写测试代码
src/main/webapp/WEB-INF 书写前端页面,和web.xml文件
打包方式
导入依赖包
目根/pom.xml (project object model) maven项目核心文件
Mavenweb项目结构
与Java项目相同
tomcat 服务器
Maven项目
生命周期
依赖的生命依赖
Maven
概念:版本控制工具
安装
设置用户名和密码
配置
编写文件,项目的目录
工作区
文件通过 git add . 将工作区的全部文件放到暂存区
暂存区
通过 git commit -m\"描述\" 将暂存取的文件放到 分支上
分支
不属于工作区,管理所有Git
.git版本库
架构
对应的就是一个[目录](),这个目录中的所有文件被git管理起来。以后会将一个[项目的根目录],作为仓库。
创建仓库 git init
查看工作区中文件状态 git status
暂存文件 git add .
提交文件 git commit -m\"描述\"
多人之间共享代码,合并代码 就需要一个远程仓库
gitee
git Hub
分类
创建账号
创建仓库
git remote add origin \"远程仓库地址\"
git remote -v 查看远程仓库地址
关联远程仓库
git push origin master
第一次会需要输入gitee账号密码
推送到远程仓库
git clone \"远程仓库地址\"
克隆远程仓库
git pull origin master
远程仓库拉取
基本操作
两个用户对同一个远程仓库的同一文件进行修改时,都要推送到远程到仓库时会发生冲突
解决:后者先进行一次拉取项目进行解决
冲突
概念:一个项目版本的存储位置,一条时间线
查看分支 git branch
创建分支:git branch 分支名
切换分支: git checkout 分支名
当前在那个分支上,commit项目就提交到那个分支
快速合并 git merge \"合并分支\"
三方合并
冲突解决
分支合并
操作:
settings version Control 自动关联
要在建仓库前,设置[忽略文件 \".gitignore\"]()---在项目根目录下
新建项目后,将项目目录创建为git仓库
add到暂存区
commit到本地仓库,添加描述信息
提交commit
创建分支
要求是裸库,且建议库名和项目名同名。
上传到远程仓库
复制到本地仓库
更新本地项目(拉取项目)
解决冲突
关联idea
Git
ORM对象关系映射
将对持久化到数据库中
ORM框架
解决JDBC存在大量冗余代码,封装了JDBC操作
不需要手工创建Connection,Statement对象
自动将结果集封装成实体类对象,自动完成ORM
概念
在maven 中的pom文件中引入MyBatis核心依赖 Mysql驱动依赖
mybatis配置(连接数据库)
实体类别名配置
注册mapper
创建、配置mybatis-config.xml配置文件
创建实体类和Dao层接口
<!--namespace = 所需实现的接口全限定名--><mapper namespace=\"com.qf.dao.UserDao\">
<select id=\"selectUserById(dao接口的方法名)\" resultType=\"com.qf.pojo.User(返回类型)\">//查询的sql语句-------#{arg0}:第一个形参</select>
编写对应的Mapper.xml文件
注册mapper文件
环境搭建
//1.获得读取MyBatis配置文件的流对象
//2.构建SqlSession连接对象的工厂
//3.通过工厂获得连接对象
//4.通过连接对象获得接口实现类对象
//5.调用接口中的方法
测试
MyBatis
概念:一个项目管理框架,是众多设计模式的组合(工厂、单例、代理、适配器。。。。)
IOC控制反转
DI注入依赖
数据绑定
AOP面向切面编程
核心技术:
spring架构组成
项目resources目录下创建bean.properties文件
自定义工厂---》加载配置文件--》获取类路径---》反射创建对象
使用:创建工厂对象---》使用方法获取目标对象
自定义工厂类
pom.xml中引入Spring常用依赖 jar包
<bean id=\"userDao\" class=\"com.my.dao.UserDao>
子主题
创建Spring核心配置文件spring-context.xml、applicationContext.xml、beans.xml
测试:创建ApplicationContext ctx = new ClassPathXmlApplicationContext(\"spring-context.xml\");ctx.getBean(\"userDao\")--得到对象,可以调用方法
创建Maven项目
解决了使用NEW关键字实现组件之间的依赖管理,通过容器来管理创建对象和依赖
创建Dao和Service对象,在和spring核心配置文件中配置实例化(IOC)
在Service中注入Dao---DI
IOC控制反转DI注入依赖
基本类型
数组
集合
Map
Properties
对象
对象集合
Spring实例化对象并赋值
Spring的加载方式饿汉式---实例化时就创建对象
单例:所有的getBean都是一个对象
多例: 每次getBean都创建一个新的对象
模式
Bean细节
创建容器
静态代码块
构造器(构造方法)
set注入
初始化前---后构造器
初始化
初始化后
执行对象方法
销毁
单例
概念:业务的核心功能和辅助功能分离,实现核心业务更加的纯粹,辅助业务能够复用
1租房接口
2房东实现类
3中介实现类(代理类)
5在代理对象中实现方法,写辅助功能,调用目标类的核心功能
静态代理
性能高
功能少
依赖于接口,目标类和代理比喻有同一个接口
JDK动态代理
性能低
功能多
继承关系,可以没有接口
CGlib动态代理
动态代理
代理设计模式
概念:底层源码时jdk和cglib动态代理
切入点:目标类切入切面(代理类)的方法
连接点:切面返回目标类的方法的参数
切入点表达式:指定切入点的坐标
目标对象
切面
前置通知
后置通知
异常通知、
环绕通知
通知,增强
开发术语
在对象的的初始化前后添加
作用全局
后处理器
druid监控中心(了解)
创建maven项目
导入依赖
开启二级缓存
嵌套对象
开启自动全局映射
mybatis-xml配置settings
引入jdbc.properties文件
配置druid数据源
注入数据源
注入mybatis.xml配置文件
pojo别名包
实例SqlSessionFactoryBean工厂对象
Mapper基本包扫描
applicationContext.xml配置
事务管理器
id
表达式
切入点
切入点id和通知id的组装
组装
<tx:advice id=\"txManager\" transaction-manager=\"tx\">
关联事务管理器
<tx:attributes>
通知内容
事务隔离级别
传播行为
超时
在runtimeexception的基础上添加
在runtimeexception的基础上减少
异常
执行添加、删除、修改时报错
只读
通知增强细节
通知增强
spring-tx.xml
Spring整合Mybatis(重点)
事务
spring-context.xml配置文件中设置开启注解使用
@Service
@Controller
@Component通用
@Scope控制bean的创建模式(单例,多例)
在对应类上生命注解
@Autowired基于类型自动注入
@Resource基于名称自动注入
@Qualifier(\"userDAO\") 限定要自动注入的bean的id,一般和@Autowired联用
自动注入DI
appication.xml中<tx:annotation-driven transaction-manager=\"tx\"/>
打在类上---每个方法都执行事务
打在方法上---对应的方法执行事务
@Transactional
事务注解
@Aspect----切面类
@Pointcut(\"execution(* com.qf.service.UserServiceImpl.*(..))\")---定义切入点
@Before(“方法名”)---前置通知
@AfterReturning(value=\"pc()\
@Around(\"pc()\") // 环绕通知
@AfterThrowing(value=\"pc()\
AOP注解
注解式开发
Spring
创建maven工程
注解扫描
注解驱动
安装FastJson转换器
前缀
返回值后缀
视图解析器
创建springmvc.xml配置文件
配置前端控制器
加入核心配置springmvc.xml
配置拦截路径
配置web.xml文件
@Controller注解
请求方法@RequestMapping注解
@Getmapping
@PutMapping
controller
开发流程
原生Servlet方式
直接在方法参数中添加(类型 参数名)--参数名与请求的名字相同
参数类型可以为int、string、boolean(传递0或1)、Date。。。
基本数据类型
单个---参数类型为对象pojo---实际为对象的属性
集合(了解)
pojo类型
数组类型----请求的key值相同即可
集合类型(了解)
Rest开发风格@Requestmapping(\"/url / {id}\")public void method()
接收请求参数
原生Serblet方式
方法2 public ModelAndView method( ...)mv=new ModelAndView();mv.setViewName(\"forward:/index.jsp\"); // 增加数据 mv.addObject(\"age\
方法3 public String method(Model model)model.addAttribute(\"name\
转发
方法 4 public String method(font color=\"#ff0000\
@SessionAttributes({\"gender\
@SessionAttributes
重定向
跳转视图
设置拦截路径
<mvc:default-servlet-handler/>---全部放行
<mvc:resources mapping=\"/html/**\" location=\"/hhh/\"/>--指定路径放行
静态资源
使用@ResponseBody注解---将对象以json串发送给前端界面
使用@RestController注解---(相当于给每一个方法前加上了@ResponseBody)
使用@RequestBody注解---接受前端的json串参数
注意:与AJAX技术一同使用
日期格式化
属性名修改
属性忽略、属性排除
自定义序列化
jackson常用注解
spring-mvc中安装fastjson
* 日期格式化:@JSONField(format=\"yyyy/MM/dd\")* 属性名修改:@JSONField(name=\"birth\
常用注解
使用fastjson
json处理(前后端分离)
统一处理全部异常
定义异常跳转的页面
自定义异常类、异常处理器类
spring-mvc中声明异常解析器(异常处理器)
注解方式@ExceptionHandler({RuntimeException.class})//异常类型
异常解析器
取代之前的filter过滤器--抽取hander(处理器--controller)的冗余部分---编码集日志等
方法前
方法后
渲染后
实现了拦截器接口
定义拦截器类
spring-mvc中实例化拦截器类
配置拦截路径---全部拦截、指定拦截
拦截器
spring-mvc中实例上传解析器,上传文件最大限制
1获取上传文件的原始名称
2生成一个唯一文件名
3获取文件后缀名
4拼接成唯一的完整文件名
5获取上传文件的类型
6保存文件
上传controller
上传
下载链接
下载controller
下载
文件的上传/下载
web.xml中声明验证码组件
验证码
核心要求:每个资源都有唯一的url、不同的行为对应不同的方法
@RequestMapping(value=\"/users\
定义rest风格的controller
REST开发风格
概念:**域 = 协议+IP+端口**
解决方法:在被访问及controller上添加注解
//@CrossOrigin(\"http://localhost:8081\") //允许来自8081服务器发来的请求
跨域请求
SpringMVC的执行流程
整合SSM
SpringMVC
概念: 定时任务调度框架
导入jar包
创建工作类实现job接口
创建调度器对象
创建触发器
创建工作详情类
将工作详情类和触发器放入调度器中
创建一个测试类
入门程序
扩展
Spring整合Quartz
Quartz
vue简介:是一个mvvm的前端框架,构建用户界面的渐进式js框架
model模型
VIew视图
MVVM双向数据绑定模式
{{}}
new vue({数据})
插值表达式
<input v-model=\"name\">
双向绑定
v-if(将元素删除)
v-else-if
v-else
v-show=true(将元素隐藏)
判断标签
v-for
v-for=
对象数组
循环
v-model双向绑定
v-bind绑定
v-on点击
属性变化
方法变化
计算属性
属性绑定
Vue的组件化设计思想借鉴了Java的面向对象思想。Java认为万物皆对象,在Vue中,万物皆组件。
组件的全局注册
组件的本地注册
组件化
Vue
简介:是一个安全权限框架、密码的密文存储,用户的访问管理
认证
授权
会话管理
加密
shiro的主要功能
Subject----当前用户
SecurityManager---安全管理员,管理上方用户
Realm----访问安全数据
shiro的架构图
创建DefaultSecurityManager实现类
创建Realm realm =new IniRealm(classpath:shiro.ini)
设置realm给SecurityManager
测试类
Subject
异常捕获
Shiro的入门程序
加盐
迭代
MD5
MD2
Sha。。。
Shiro的加密
SSM整合
web.xml Filter过滤器-----名称<bean id>与拦截规则名字一致
注入realm
注入记住我
注入session回话管理
DefaultWebSecurityManager
创建自定义Realm<bean>实例化
记住我配置
会话配置
注入securityManager
<property name=\"loginUrl\" value=\"/login.jsp\"></property>--拦截内容转发到登录界面
拦截静态资源
拦截登录
必须登录
未登录可以转发到登陆页面
拦截规则shiro+spring拦截工厂
spring-shiro.xml
继承AuthorizingRealm
取出用户输入的用户名、密码
通过sevice业务判断
AuthenticationInfo info = new SimpleAuthenticationInfo(userfont color=\"#3e9a3e\
实现认证方法doGetAuthenticationInfo(AuthenticationToken token)
通过principals获得用户id
List perms = sysUserService.findPerms(id);
service业务逻辑得到用户角色和权限
SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
创建SimpleAuthorizationInfo对象
authorizationInfo.addStringPermissions(perms);
将查询到的字符串权限集合加入shiro框架
将查询到的字符串角色集合加入shiro框架
实现授权方法doGetAuthorizationInfo(PrincipalCollection principals)
原理:将用户信息转成base64加密存入cookie中
代码:
记住我
自定义Realm类
创建subject对象
获取前端网页输入的数据---用户名、密码、记住我
密码进行加盐加密
封装成usernamePasswordToken对象
subject.login(token对象)---进入realm
session.setAttribute(\"username\
登录
subjec.logout();
注销
controller类
整合Shiro
SSSM整合
细节解释
注解开发
shiro
简介:基于mybatis的封装框架
通用CRUD
or
and
no and
逻辑查询
eq
gt
ne
lt
le
ge
between
in
like 值
likeleft
likeright
querywrapper
lambdaquerywrapper
条件查询
功能
导入mybatisplus包
创建mybatis核心配置文件
引入jdbc.propertise数据源,德鲁伊连接池,font color=\"#ff0000\
创建dao、mapper
resource对象
通过stream流获取输入流对象
创建sqlsessionfactory工厂对象
工厂获得sqlsession对象
获得mapper接口,调用方法
编写测试类
整合Mybatis+Mybatispuls
读取jdbc配置文件
定义德鲁伊数据源
别名包
分页插件
二级缓存等
使用mp提供的整合sqlsessionfactory实例
mapper映射
创建applictionContext.xml配置文件
对象类上加上@TableName(表名)
user Mapper继承Base Mapper<User>
AUTO数据库自增长
NONE自己写
UUID
雪花算法
主键生成方式
可以使用通用crud
整合mybatis+spring+mp
MybatisPlus
继承默认会话管理类
重写方法
自定义shirohi会话权限管理类
controller解决跨域打注解
shiro拦截在浏览器和controller之间,所以也要解决跨域问题
预请求options:不应拦截
真请求get、post等方式
跨域请求两次
跨域问题
问题一
记住我:shiro中不需要,vue实现功能
问题二
前端给后端:上行数据
后端给前端:下行数据
功能一验证码
功能二,认证授权
oss数据存储---阿里云存储图片
考核项目
三阶段框架
0 条评论
回复 删除
下一页