知识整理

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很重要)
      image

浏览器和开发工具

  • 开发工具
    • 文本编辑器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()是弹窗

  • 常用的几个选项,调试须知
    image

数据类型浏览

  • 数值、文本、图形、音频、视频

    • 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日 周五

基本概念

image

第一个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>
    

依赖范围

  • 主程序范围

  • 测试程序范围

  • 是否参与打包

image

  • 依赖范围的传递性

image

生命周期与插件

构建生命周期

运行的阶段

  • compile test-compile test package install

    • clean:清理工作

      • cpre-lean
      • clean
      • post-clean
    • default:核心工作,编译测试打包

      • 很多

        image

    • site:产生报告,发布站点

      • pre-site
      • site
      • post-site
      • site-deploy

插件

  • 与生命周期内的阶段绑定,执行到对应的生命周期时执行插件

  • 默认maven在各个生命周期上绑定有预设的功能

  • 通过插件可以自定义其他功能

    • goal打包用的
    • phase运行到什么阶段

image

JDBC

3月3日 周五

简单介绍

  • JDBC就是用Java语言操作数据库的一套代码
    image

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位)、共享主键、联合主键
    • 外键字段:

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

  • image

    规定的不能访问

  • 外界通过url访问controller再进行访问,内部可以直接访问。web-inf中更安全

image

  • 添加静态页面

  • 将crm项目部署到tomcat上
    3月8日 周三

  • 添加配置文件,在webapp里添加,即静态资源,页面原型和所需图片。web-inf比webapp更加安全,多一层,需要访问controller层,一般放置系统设置页面等,而在webapp中则放置imagination等资源

  • 把项目部署到tomcat上,就是把tomcat集成到idea上去

  • 端口被占用的解决办法:查到PID号,然后在任务管理器的详细信息内结束进程

  • 先做系统管理功能,被依赖的功能

    • 登录退出,现有首页,然后跳转到登录

首页功能的分析与设计

3月8日 周三

  1. 分析需求:(出错怎么办),当用户输入地址跳转到首页
  2. 分析与设计:流程,类,参数方法,类的调用
  3. 编码实现:这是最简单的,前面已经设计好了
  4. 测试
  • 编写代码,先写被依赖的。客户端调controller调service调mapper,先写mapper

首页功能实现controller层

3月9日 周四
image

首页功能实现页面层

  • 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
    
  • image

posted @ 2023-05-10 09:56  無碍  阅读(42)  评论(0)    收藏  举报