知识整理
JavaScript
3月2日 周四
js概述
-
一种客户端脚本语言,以前的网速慢,现在的可以直接在网页显示处理结果,让页面有了逻辑处理功能,大大提升处理速度
-
js之所以带java,(是因为蹭java热度,与Java没关系),原本叫Netspace,现如今成为因特网的必备组件
-
html/css/JavaScript三者区别
- HTML超文本标记语言,做页面展示
- css是层叠样式的语言,用来辅助修饰html,让html看起来更加丰富好看
- js是独立的编程语言,用来操作html节点以及css样式,达到网页动态效果,增强交互感
-
JavaScript是解释型语言,不需要编译,解析给浏览器,解析后被内置在浏览器软件中的JavaScript解释器解释执行
-
js和jsp(Javaserverpages,基于Java语言实现的服务器端页面)一毛钱关系没有
3月9日 周四 -
只要是浏览器开发都用js,vue等都是js的高级框架
-
jsp隶属于java语言的,运行在jvm中
语言特点
- 基于对象的编程语言,类似于c++和Java,既有对象又有过程
- 弱类型语言:任何变量在定义时不需要指定数据类型,但有类型的概念,值决定数据类型(动态数据类型)
- 解释性的脚本语言,不需要编译
- 动态性,基于事件驱动,一定操作引起某些动作
- 平台无关性,运行在浏览器里,只要安装浏览器,就能解释执行js代码;不同的浏览器对js代码解析不一样。这就是兼容性问题,
- 解决兼容性问题使用框架或通用性代码
- 安全性,安全是因为不允许做很多事,无法对磁盘操作
js组成
-
JS的标准名为ECMScript,一个标准(文档)
-
DOM,文档对象模型,元素对象,js可以操作对象,调用里面的属性和方法,操作网页页面(实际使用多)
-
BOM,浏览器对象模型,js能与浏览器进行对话,获取浏览器信息,操作浏览器
- DOM和BOM关系(DOM和document都包含在window里,document很重要)
- DOM和BOM关系(DOM和document都包含在window里,document很重要)
浏览器和开发工具
- 开发工具
- 文本编辑器EditPlus,写错了没有报错 ,不推荐
- Webstorm,集成开发工具,时Intellij IDEA开发工具中的一个插件
- HBuilder
JS基本使用及HelloWorld
-
js代码一般放在head里或者body里
<script></script>//标签必须成对出现,不能自闭合<script/> <script src="qw.js"></script>//外部引用
浏览器控制台的使用
基本语法
- 定义变量:
<script>var num=1;</script>//数据类型就这一个
//甚至num=1;也可以,且是全局变量,let num=1;是局部变量
"qinhuan"//直接也可以
- JS严格区分大小写
浏览器控制台操作
-
console.log(score) 在浏览器打印结果
-
alter()是弹窗
-
常用的几个选项,调试须知
数据类型浏览
-
数值、文本、图形、音频、视频
-
number:NaN是不是一个数。infinity极大的一个数
-
字符串:“abc” ’abc‘ '\n'
-
布尔值:true false
-
逻辑运算:&& || !
-
比较运算:=;== 类型不一样,值一样就可以; ===绝对相等,一般用这个就行(NaN与所有数都不等包括自己,只有isNaN(NaN)这个是true
-
尽量避免浮点运算,存在精度问题
- 不要(1/3)===(1-2/3),改为math.abs(1/3-(1-2/3))<0.0000001
-
null;undefined未定义
-
数组:不需要一系列相同类型的对象
- var arr=[1,2,3,4,'hello'];允许
-
对象使用大括号括起来
var person={ name:"qinjaing", age:23, tags:['js','java'] }
- 对象的值:甚至中文都可以,不要以数字开头
-
严格检查模式(strict)
- let 定义局部变量
- let i=1;//定义局部变量
- 'use strict'//用严格检查模式,前提是idea支持es6,写在第一行
数据类型详解
3月9日 周四
html嵌入JavaScript的第一种方法
- js是一门事件驱动型的编程语言,依靠事件去驱动,然后执行对应的程序。在js中有很多事件,其中有一个事件叫做:鼠标单击,单词是:click。并且任何事件都会对应一个事件句柄叫做:onclick。
- 事件句柄和事件的区别是,在事件前都要加一个on,而事件句柄是以HTML标签的属性存在
- onclick="js代码",执行原理
- 页面打开时,js代码不会执行,只是把代码注册到按钮的click事件上。等这个按钮发生click事件后,注册在onclick后面的js代码会被浏览器自动调用
- 使用js弹出消息框
- js中内置一个对象叫做window,全部小写,window代表浏览器对象。window的函数alert,window.alert("消息")
- js中的字符串用单引号双引号都行
3月14日 周二
html嵌入JavaScript代码
标签中加事件句柄
-
js的一条语句结束加不加;都行
-
onclick="window.alert('')" 可以不写window
-
document 文档,dom文档树,html中的每个元素都有id属性
-
div作用是布局,一个div将相当于一个图层(网页用div,div套div)
-
在html中嵌入css有三种方式
- 内敛定义,标签内部写style,可以写样式
- head标签中写style标签,样式块
- css代码写在独立的文件中,在需要的时候使用link
-
选择器:id #id,标签 标签名,类型 .class
-
事件句柄是以属性的方式存在
html嵌入JavaScript代码2
- 脚本块方式
- 样式块 对比
<style type="text/css">
/*
css代码
*/
</style>
脚本块:暴露在脚本块中的程序,当页面打开时执行,并遵循自上而下的顺序逐行执行,不需要事件
<script type="text/javascript">
window.alert("hello microsoft");
</script>
-
<script></script>
代码写在哪都行,哪怕放在html标签外 -
JavaScript脚本块在一个页面中可以出现多次,没有要求
-
html注释和Java一样,css是
<!--注释-->
/**
**javadoc注释,这里的注释信息会被javadoc.exe工具解析提取生成文档
*/
-
alert会阻塞页面加载的作用,指导用户点击确定按钮
html嵌入JavaScript代码3
单独写成一个文件,被推荐的
<html>
<head>
<title>第三种方式</title>
</head>
<body>
<!--在需要的位置引入js脚本文件-->
<!--js文件的代码还是顺序执行-->
<script type="text/javascript" src="ex.js"></script>
</body>
</html>
-
css中是<link href="" js中是src=
-
<script type="text/javascript" src="ex.js"/>//这种方式不行,结尾标签必须行
<script type="text/javascript" src="ex.js">
window.alert("test");//这里的代码不会执行,不引入src文件可以写alert代码
</script>
JS的标识符
- 和Java像。标识符的命名规则(必须这么写,否则错误):字母、数字、下划线、$,不能以数字开始,不能使用关键字
- 规范:
- 类名和接口名首字母大写,后面每个单词首字母大写
- 方法名和变量名驼峰命名,见名之意
- 常量名全部大写
- 单词之间是下划线
JS中的变量(非常重要)
-
Java是一种强类型语言:Java程序在编译阶段就已经确定了变量的数据类型,那么它直到最后内存释放,类型都不可能改变
byte short int long float double boolean char
-
声明 var 变量名;
-
赋值 变量名=值;
-
js是一种弱类型语言,没有编译阶段,一个变量可以随意赋值,什么值都可以
Maven
3月3日 周五
基本概念
第一个maven程序
- 插件创建maven程序
- idea版创建maven
- tomcat插件安装与web工程启动
- 问题很大,得出一个经验,把视频看完再操作
- 14点51分 解决了。web.xml中要删除大部分没用的东西,本来也是报红
- pom.xml中删除原有build的全部内容
- 问题很大,得出一个经验,把视频看完再操作
依赖管理
依赖配置与传递
-
依赖指当前项目运行所需要的jar包,一个项目可以有多个依赖
-
以来传递:使用别的project的jar包,直接依赖/间接依赖
- 冲突解决:路径优先,声明优先,特殊优先(同级配置,后面覆盖前面的)
-
可选依赖 加
true 即可 -
排除依赖,主动断开依赖的资源
<exclusions> <exclusion> <groupId></groupId> <artifactId></artifactId> </exclusion> </exclusions>//没有<version></version>
依赖范围
-
主程序范围
-
测试程序范围
-
是否参与打包
- 依赖范围的传递性
生命周期与插件
构建生命周期
运行的阶段
-
compile test-compile test package install
-
clean:清理工作
- cpre-lean
- clean
- post-clean
-
default:核心工作,编译测试打包
-
很多
-
-
site:产生报告,发布站点
- pre-site
- site
- post-site
- site-deploy
-
插件
-
与生命周期内的阶段绑定,执行到对应的生命周期时执行插件
-
默认maven在各个生命周期上绑定有预设的功能
-
通过插件可以自定义其他功能
- goal打包用的
- phase运行到什么阶段
JDBC
3月3日 周五
简单介绍
- JDBC就是用Java语言操作数据库的一套代码
Mybatis
3月3日 周五
什么是Mybatis
- 回顾
- JDBC
- mysql
- java基础
- Maven
- junit
- SSM框架:配置文件的。最好方式,看官方文档
spring boot项目
3月6日 周一
环境搭建
- 数据库连接池:DBCP、C3P0、Hikari
springmvc项目
3月6日 周一
SSM框架项目
- javase
- javaweb(java零基础)
- mysql
- html
- css
- js
- jquery
- ajax
- servlet
- jsp
- 框架(springmvc教程,王鹤)
- spring
- springmvc
- mybatis
- maven
- jdk动态代理
CRM项目
3月6日 周一
阶段简介
- 分析设计、编码、测试
技术架构
- 代码要分层
- 视图层(vivew):展示数据,和用户交互。html(仅展示),css(修饰),js(交互)。这些是基础的,虽然能实现功能,但是比较繁琐,效率低,因此引入框架技术,对他们进行封装。前台的框架有:jQuery(对js的封装,有选择器,调用元素数据,使用相应的选择器,标签选择器,类选择器)、bootstrap(对三门技术进行封装的框架,类似的几个ext|easyUI)、jsp(严格来讲属于后端,运行结果是网业)
- 控制层(controller):控制业务处理流程(接受请求,接收参数,封装参数,根据不同请求调用业务层处理相应的业务,根据处理结果,返回响应信息)。servlet(太老了,一个请求一个servlet,太慢了,淘汰了)、springmvc(控制层框架,对servlet进行封装;依赖注入,中央控制器接受某一规则的请求,根据url调不同的controller,整合的好,容器)、类似的struts1、struts2、webwork
- 业务层(service):处理业务逻辑,处理业务的步骤,操作的原子性。(1、添加学生,2、记录操作日志)Javase(调不同的方法)、工作流(仅对很复杂的业务,需要层层审批,政府中。activiti|JBPM)
- 持久层(Dao/Mapper):操作数据库。(jdbc,复杂,已被淘汰)mybatis(封装了jdbc)、类似( hibernate也是封装jdbc,以前是ssh。将表和类进行一一对应,只需要操作类就行,但是不灵活,效率低,无法操作优化sql语句)、ibatis
- 整合层:不同层调另一个个层就是controller new services,要new很多很多。new一个对象,谁用谁调,叫单例模式。保证单例模式,做工厂类,一个类一个services做一个工厂类,然后调的时候提供这个工厂类,以前就有大量的工厂类。spring,层和层之间并不是孤立存在的,互相有依赖调用关系。工厂类,单例模式。维护类的资源(IOC一个容器,生产各种对象,单例模式),维护数据库资源(AOP)。类似ejb(功能强大,不灵活)。spring全家桶,小巧灵活,有好多框架,即查即用,springboot
阶段教学目的
技术要用,永远学不会,要综合运用。对前期所学技术的回顾,熟练,加深和扩展
互联网基础课:Linux,redis,git
软件开发声明周期
回去看
CRM核心业务介绍
回去看
物理模型搭建
数据库的表和界面原型是由项目经理提供的,
- 登陆界面有一个用户表
- 每一个下拉页面的数据有一个表,数据字典值表存下拉页表数据,tb_dic_value
- 有很多下拉页表时,单独有一个表存储这些下拉页表类型的,tb_dic_type
- tb_acticity 市场活动表
- 市场活动备注表 tb_activity_remark
- tb_clue 线索表
- tb_clue_remark 线索备注表
- tb_customer 客户表
- tb_customer_remark 客户备注表
- 联系人表,交易表
- 表中重要的字段(满足范式)
- 主键字段:为什么设计,类型,长度。一组字段唯一确定一条记录,推荐使用一个字段做主键,推荐使用没有业务含义的字段,自己设计一个字段id。主键字段的类型和长度,由主键值的生成方式决定:
- 生成方式:自增(借助数据库自身主键生成机制,数值型,长度有数据量决定,多个会发生冲突,加锁雄效率低)、assighed(程序员自己生成主键值,必须唯一非空,不好写。算法:hi/low,生成数值型,长度由数据量决定。用的最多的算法,UUID,生成字符串的主键值,32位)、共享主键、联合主键
- 外键字段:
- 主键字段:为什么设计,类型,长度。一组字段唯一确定一条记录,推荐使用一个字段做主键,推荐使用没有业务含义的字段,自己设计一个字段id。主键字段的类型和长度,由主键值的生成方式决定:
3月13日 周一
物理模型设计1
-
需求分析,产品经理,产品进行,确定做成什么样
-
分析与设计
- 架构师,物理架构,逻辑架构,技术选型
-
项目设计:设计表,字段,程序操作的就是表,项目经理。逻辑设计,涉及哪些类,属性方法,程序员自己写,按照功能,功能涉及哪些类。
- 界面设计,算法设计(企业级应用不涉及算法,因为用户群体比较固定;金融方面会涉及)
- 实现某个功能前问项目经理要表和需求
-
具体表结构的分析
-
系统管理的表
- tb_user 用户表
- tb_dic_value 数据字典值的表(任何项目中都有),下拉列表的数据 1
- tbl_dic_type 存储下拉列表的类型 n
-
业务活动的表
- tb_activity 市场活动表,就是创建市场活动时需要的
- tbl_acticity_remark 市场活动备注表
- tbl_clue 线索表
- tbl_clue_remark 线索备注表
- tbl_customer 客户表
- tbl_customer_remark 客户备注表,这些备注表都是对客户查看明细信息,对客户进行备注
-
每个字段都加备注
-
常用字段,重要
-
主键字段:每张表都加id字段,类型和长度由主键值的生成方式。
生成方式
-
自增(借助数据库自身主键生成机制,数值型,长度有数据量决定,多个会发生冲突,加锁则会效率低)
-
assighed(程序员自己生成主键值,必须唯一非空,不好写。算法:hi/low,生成数值型,长度由数据量决定。用的最多的算法,UUID,生成字符串的主键值,32位。当id设计成 char 32位,则一般就是UUID生成的)
-
共享主键
-
联合主键
-
-
-
物理模型设计2
-
外键字段;确定表和表之间的关系,不同关系创建不同外键
外键class_id
只要外键的字段值来自另一个表中的主键值没那么都不会报错
-
表和表之间的关系
-
一对多:一张表A(父表)中的一条记录对应另一张表B中的多条记录,反过来,B(子表)中的一条记录只能对应一张表A中的一条记录
-
在多的表中引入主表的主键做外键
-
添加数据时,先添加父表中被引用的记录,再添加子表中的记录
-
删除时,先删除子表中的记录,再删除父表中的(一个统领多个)
-
查询时,可能进行关联查询
-
内连接,等值连接,把所有符合条件的结果都查出来,且在两张表中都有相对应的结果
-
左外连接,查询所有左侧表中符合条件的记录,哪怕右侧表中没有对应记录
-
全外连接
-
外键不可以为空,优先内连接
-
外键可以为空
- 假如需要查询的另一表中有相对应数据,则使用内连接
- 假如只需要查询左侧所有符合条件的记录,则使用左外连接
-
-
-
join指连接
from后面跟的是主表
-
一对一:设置共享主键(不推荐),条件苛刻,实际中比较少
-
添加时添加先产生的表,后添加后产生的表
-
删除时先删除后产生的表的记录,后删除先产生的表记录
-
查询数据:无需进行连接查询
-
加唯一外键,并进行唯一性约束(特殊的一对多):
-
连接查询,跟一对多的操作一样
-
-
多对多:
-
借助第三张表,引用两个表中的主键作为外键
-
添加数据时,先添加父表,再添加子表
-
删除时,先删除子表记录,在删除父表记录
-
查询数据时可能会进行关联查询
-
物理模型设计2
- 关于时间和日期的字段
- date 年月日(mysql中的)
- time 时分秒
- datetime 年月日和时分秒
- Date 是java中的。查询时需要转换,但是没人会去转,都是用字符串来定义日期时间,且是定长的
- 不管什么开发语言,字符串都是统一的
- char(10) yyy-mm-dd
- char(19) yyy-mm-dd hh:mm:ss
- 数据库相当重要,写代码就是在操作表
- utf8几乎是收录了所有国家的语言
搭建开发环境
-
idea有项目和工程的概念,一个项目可以有多个工程
-
创建好了项目new project——>创建工程new model
-
补全目录结构
-
添加依赖,看用什么技术
3月7日 周二 -
配置文件
- mybatis-config.xml
- applicationContext-datasource.xml
- web.xml
- applicationContext-mvc.xml
- applicationContext.xml
- pom.xml
-
localhost-127.0.0.1
-
规定的不能访问
-
外界通过url访问controller再进行访问,内部可以直接访问。web-inf中更安全
-
添加静态页面
-
将crm项目部署到tomcat上
3月8日 周三 -
添加配置文件,在webapp里添加,即静态资源,页面原型和所需图片。web-inf比webapp更加安全,多一层,需要访问controller层,一般放置系统设置页面等,而在webapp中则放置imagination等资源
-
把项目部署到tomcat上,就是把tomcat集成到idea上去
-
端口被占用的解决办法:查到PID号,然后在任务管理器的详细信息内结束进程
-
先做系统管理功能,被依赖的功能
- 登录退出,现有首页,然后跳转到登录
首页功能的分析与设计
3月8日 周三
- 分析需求:(出错怎么办),当用户输入地址跳转到首页
- 分析与设计:流程,类,参数方法,类的调用
- 编码实现:这是最简单的,前面已经设计好了
- 测试
- 编写代码,先写被依赖的。客户端调controller调service调mapper,先写mapper
首页功能实现controller层
3月9日 周四
首页功能实现页面层
-
html文件不可以直接重命名为jsp文件,会出现乱码,要先改为utf-8的格式
-
新建一个jsp文件,打开,取第一行复制过去
首页及登录功能的设计与实现
首页跳转到登陆页面功能的分析与设计
- 一个资源目录占一个controller
- 跳转、请求、重定向
- 浏览器发送请求,返回的是浏览器;Ajax请求返回的是json数据
- 首页跳转到登陆页面功能实现controller层
首页跳转到登陆页面实现controller层
- url要和controller方法处理完请求后,响应信息返回的页面的资源目录保持一致
首页跳转到登陆页面实现页面层
-
String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/";
自动获取url base地址
-
选中后按ctrl+r可以全部替换
-
<base href="<%=basePath%>"/>//将定义好的base地址给到href
-