知识梳理加项目优化

技术的语言表达

JavaSE

程序逻辑流程

面向对象(OOP):编程思想;编码量,使用一些封装继承,工作后理解会越来越深

API:后面学的都是API(servlet和后面的框架也是API),不可能从底层开始写代码,要调用方法

如:
类.属性.方法()

System.out.println()

二阶段

数据库:最大优点为查询方便

JDBC:一个用java连接数据库的api

开启数据库服务:net start mysql

知识梳理加项目优化

装软件是安装MySQL的服务

前端:HTML CSS JavaScript jQuery

只写前端中小型公司做不到

我们要求把前端页面做规整,稍微美化一下,看到舒服一些

JavaWeb:和服务器具有交互功能的动态网站

一、数据库

知识梳理加项目优化

retrieve检索,查询

DBA:大型公司有的数据库管理员

权限:grant授予 revoke收回 deny拒绝

transaction:事务

CRUD

知识梳理加项目优化

约束:保证数据完整性(真实有效)

​ 主键

​ 唯一键

​ 外键:引用完整性,降低冗余(把表分出去),查询变慢(传统项目,三界范式)

​ 默认值

​ 非空

​ 检查约束:MySQL

公司不差钱,都放一个表里面,但也不是一个外键都没有,会变少:

知识梳理加项目优化

单表查询

知识梳理加项目优化

顺序不可更改

知识梳理加项目优化

标准写法

知识梳理加项目优化

多表查询

外连接

知识梳理加项目优化

完全外连接(项目里没什么意义)

UINON:自动去重;可以用UINON来模拟效果

知识梳理加项目优化

知识梳理加项目优化
子查询(最灵活,什么都可以用)

用外连接查询,内连接是查询不出来的

知识梳理加项目优化

用子查询

知识梳理加项目优化

相关子查询(用函数):括号内用到外层的东西,不能单独执行

exists 嵌套子查询,有数据为真,没有就为假

知识梳理加项目优化

不用函数的相关子查询

知识梳理加项目优化

知识梳理加项目优化

临时表必须有别名

知识梳理加项目优化

知识梳理加项目优化

解决乱码

乱码本质:编码和解码不一致

编码和解码设置成一样的就不会乱码

知识梳理加项目优化

数据库设置一下编码格式

知识梳理加项目优化

练习:

4题.

知识梳理加项目优化

6题:两张临时表

知识梳理加项目优化

9题

知识梳理加项目优化

知识梳理加项目优化

函数替换null

知识梳理加项目优化

二、JDBC

2.1 Eclipse使用详讲

还有很多公司在用Eclipse(免费)

1.test不能有参数和返回值

知识梳理加项目优化

2.2 打jar包

java只设计了接口,但不实现,让数据库生成厂商去实现

知识梳理加项目优化

把工具项目打成包,不要选择test包

右键打成jar包,搜索jar

ctrl+shift+o自动优化包

测试类,和src同级别

知识梳理加项目优化

​ 每一个方法对应一个测试类

知识梳理加项目优化

2.4 配置连接池

知识梳理加项目优化

C3P0管理连接池

知识梳理加项目优化

类路径就是src下

知识梳理加项目优化

配置成自己的信息

知识梳理加项目优化

理解含义,不用改

知识梳理加项目优化

用连接池获取连接

知识梳理加项目优化

2.5 封装CRUD

JMeter;Maven后面要学的;都是apache阿帕奇的

beanUtils明天用;DBCP也是连接池

我们用dbutils

以后数据库增删改这么写

后获取连接源

知识梳理加项目优化

先获取连接源

知识梳理加项目优化

  • 查询自己上网查怎么写

2.6 使用JDBC连接MySQL数据库需要的jar包

知识梳理加项目优化

A都要自己写

B连接不需要自己写

C增删改查不需要自己写

D都不需要自己写

2.7 关闭数据源

执行test方法之前创建TxQueryRunner对象

知识梳理加项目优化

基本类型都用包装类型

知识梳理加项目优化

一个类的对象就是一个bean

知识梳理加项目优化

2.8 查询

1.查询一个

知识梳理加项目优化

2.查很多

alt+shift+L;

知识梳理加项目优化

3.单行单列查询

知识梳理加项目优化

4.转map

知识梳理加项目优化

5.转ListMap

知识梳理加项目优化

6.连表查询

知识梳理加项目优化

用map接收

在把map转成bean,使用工具包

知识梳理加项目优化

知识梳理加项目优化

知识梳理加项目优化

teacher封装的类(就这么写)

知识梳理加项目优化

里面帮你新建了对象,而且帮你抛了异常,直接用new对象接受就可以了

知识梳理加项目优化

7.三表查询

增加一个中间表,转换成两个多对多

知识梳理加项目优化

知识梳理加项目优化

知识梳理加项目优化

查询一门成绩

知识梳理加项目优化

所有成绩

知识梳理加项目优化

知识梳理加项目优化

查询某号课程和选择这门课程的所有学生

后面连表查询可不可以用map来写?

知识梳理加项目优化

查询所有课程,和选择这门课程的所有学生

知识梳理加项目优化

查询指定的学生和该学生选修的所有课程

查询所有学生和该学生选修的所有课程

敲熟,就这么点事

知识梳理加项目优化

  • 练习:

知识梳理加项目优化

1.查询所有员工

知识梳理加项目优化

2.不能用连表(用Map做),查出来是两个bean,应该是一个bean

知识梳理加项目优化

知识梳理加项目优化

3.查询所有部门及部门里的所有员工

知识梳理加项目优化

2.9 分层建包

建立外键关联关系:

关系模型:数据库中体现关系的只有一个字段;子表体现关系,主表中没有

对象模型:一般不写id(如private Integer sid),而是写对象,用的时候就查,不用可以不查;多对一就是一个集合

一对一:在外键类新建一个主键对象

一对多:在主键类建立一个外键类对象的集合

多对多:转成一对多或多对一

知识梳理加项目优化

2.10 规则

属性指的是get和set,起名要规范,属性和字段要对上,

如name对应getName和setName,否则或报各种错误

知识梳理加项目优化

创建有参,一定把无参的构造器写上

知识梳理加项目优化

注意:对象名和列名不能一样:score一样,赋值时会报错

知识梳理加项目优化

三、JavaWeb

知识梳理加项目优化

3.1 Eclipse配置tomcat环境

3.2 创建JavaWeb项目

2.5没有注解,3.0有注解

连接源码

3.3 Servlet

知识梳理加项目优化

3.3.1三个生命周期方法两个使用方法

知识梳理加项目优化

把封装好的config接收一下,返回就不为null了

知识梳理加项目优化

知识梳理加项目优化

3.1.2.servlet继承HttpServlet

1.约束文件和配置

知识梳理加项目优化

知识梳理加项目优化

2.init方法

调用父类GenericHttp中,给定义好了,就不为空了

知识梳理加项目优化

知识梳理加项目优化

要自己定义用下面的模板方法(重载方法)

知识梳理加项目优化

知识梳理加项目优化

初始化:第一次惩罚,现在一般都配上

默认第一个用户访问的时候初始化,配置好这个默认启动tomcat时全部加载好

知识梳理加项目优化

3.配置自定义初始化参数

知识梳理加项目优化

获取自定义参数(获取一个和获取所有)

知识梳理加项目优化

4. doGet知识梳理加项目优化

重写service,里面会强转servletrequest,然后调用doget和dopost

知识梳理加项目优化

5. doPost知识梳理加项目优化

6.状态码

302重定向

知识梳理加项目优化

3.4 XML

html:浏览器显示效果

xml:存储数据,配置文件

1.基本语法规范

知识梳理加项目优化

2.约束文件:用别人的框架,去配资文件要遵循一定的规则

知识梳理加项目优化

有两种:.dtd和.xsd

3.5 MVC模式

3.5.1 Module(逻辑层+数据层)

数据

3.5.2 View(表示层)

页面

3.5.3 Controller(表示层)

Servlet

三层

表示层:UI用户界面(控制台,Windows,Web)

业务逻辑层:处理特定业务需求:中间层,实际商业项目最复杂的是业务

数据访问层:执行数据库CRUD

3.6 分层—注册

3.6.1 控制层(service+dao)

uid主键

​ 自动增长

​ 业务主键 学号 学员代码-系代号-入学年份-班级编号-01

三个方法

按规范建立test类

知识梳理加项目优化

dao层直接操作数据库

知识梳理加项目优化

登录,注册判断没必要返回boolean值,抛个异常就好了,新建一个userexception类

其实没必要打印异常信息,这里是为了方便开发者自己查看,加了个打印

知识梳理加项目优化

具体逻辑

知识梳理加项目优化

1.三个异常是平级的,但前两个是用户异常,捕获的是dao异常,不会捕获到用户异常,最终都抛给调用者来处理

知识梳理加项目优化

2.或者在dao层直接抛系统异常

知识梳理加项目优化

捕获抛的对应的异常,抛出自定义异常

知识梳理加项目优化

3.或者test测试:最上层的调用者(跟service是同层的)来处理异常(测试,获取异常信息)

知识梳理加项目优化

在spring框架里非受查异常最简单,受查异常有一套处理方法,平时还是写非受查异常

最复杂的是业务,要求越多,逻辑越复杂;业务要去公司去了解,根据客户的需求来分析业务,没做过这个行业根本不懂其中的细节怎么用业务实现,首先要去理解客户的专业名词,搞清楚客户行业的流程

如借书,每个业务都需要操作好几张表

知识梳理加项目优化

如论坛发帖

知识梳理加项目优化

3.6.2 表示层

1.数据验证

前端验证:js或jQuery,验证插件

​ οnsubmit=“boolean”

​ 不要相信前端,传过来的信息是有问题的,用户可以绕过前端

​ 前端也要有验证,可以减轻服务器的压力,例如格式,长度,一致等这些验证

​ 内网部署可以不写后端,都是自己人,没人攻击网络

后端验证:Servlet使用Java代码验证

​ 确保执行业务之前,数据有效

​ 部署到外网的必须有后端

ajax验证:提高用户体验,还是靠

​ js(XmlHttpRequest)请求服务器

2.注册验证

同步请求流程

知识梳理加项目优化

知识梳理加项目优化

验证格式用正则表达式:

知识梳理加项目优化

没有通过

知识梳理加项目优化

通过验证

知识梳理加项目优化

回显一个验证的信息到注册页面

知识梳理加项目优化

数据回显:通过el

知识梳理加项目优化

添加数据回显

知识梳理加项目优化

3.7 登录

知识梳理加项目优化

知识梳理加项目优化

验证码,要给一个流,传图片用字节流,传文本一般用字符流

知识梳理加项目优化

流程

知识梳理加项目优化

得到验证码文本,要先调用getImage,才有getText

知识梳理加项目优化

切换图片验证码

changeImage():

知识梳理加项目优化

调用登录

知识梳理加项目优化

3.8 分页

3.8.1 sql语句

3.8.2 pageBean<T>

知识梳理加项目优化

totalPage的set可以不要,get是算出来的

知识梳理加项目优化

知识梳理加项目优化

知识梳理加项目优化

知识梳理加项目优化

jsp页面

知识梳理加项目优化

知识梳理加项目优化

页面控制

知识梳理加项目优化

页码数量的控制,把begin和end加入pageBean,也不需要get和set,写一个方法进行赋值

知识梳理加项目优化

这个注意要放在最后,要用到前面的值

知识梳理加项目优化

把totalpage改成getTotalPage()

知识梳理加项目优化

3.9 多条件组合查询(分页)

关键拿到dao层的条件,在外面拿到一个sql

方法为进行sql的拼接

知识梳理加项目优化

因为不知道有多少个参数,用数组也不好用,所以用集合转成数组来传参

知识梳理加项目优化

知识梳理加项目优化

在params里面再添加两个参数,limit后面的

画红线的写错了,要接收一个新的sql,不然语句没有变,还是原来的

知识梳理加项目优化

封装成一个完整的pageBean,跟前面分页是一样的

3.10 uuid加密

uuid:可以按照特定的算法,生成一个不重复的32位

的字符串,算上-是36位

数据库里:(有是有,但是最终用java来做)

知识梳理加项目优化

知识梳理加项目优化

java

知识梳理加项目优化

知识梳理加项目优化

MD5加密,做了一个转换,核心方法是diget()

知识梳理加项目优化

下面是CommomUtils里

知识梳理加项目优化