JavaWeb笔记(持续更新)
day00综述
需要学习SpringBoot,但是JavaWeb是基础,来补一下
JavaWeb就是将数据库中的数据用好看的样式在网页上呈现出来
day01MySQL基础
接下来就是MySQL的安装什么的
1 | mysqld --initialize-insecure |
至此我的电脑上已经安装了MySQL服务,我的电脑也就成了MySQL服务器,那么既然它可以提供服务,我得访问它呀,那就得连接上,其实也就是自己连接自己,所以接下来要修改账户默认密码:
在黑框里敲入mysqladmin -u root password 1234
,这里的1234
就是指默认管理员(即root账户)的密码,可以自行修改成你喜欢的。
1 | mysqladmin -u root password 1234 |
进入到mysql:mysql -uroot -p
接下来就是连接数据库, 可以连自己的,也可以连自己同桌的,把命令中的root和密码还有IP换为同桌的可以了:
1 | mysql -uroot -p1234 -h127.0.0.1 -P3306 |
关系型数据库,说白了就是二维表相互连接组成的数据库
SQL通用语法:
- 语句用分号结尾
- sql语句不区分大小写
- 注释,单行用
-- 注释内容
两个短杠后面一定要加一个空格,或者#注释内容
,多行注释与Java一致
例:
接下来是SQL语句的分类
DDL:操作数据库和操作表,比如新建库啊,新建表啊这一类
DML和DQL:是对表中的数据进行操作。增删改查
DCL:对数据库进行权限控制
创建数据库:
其中对于double类型的数据,在定义的时候要指定它的总长度与小数点后几位这两个参数。
例如:我们要定义一个分数的字段,要求它的数据表示0-100,并且保留小数点后两位,100是三位,小数点是两位,所以总长度就是5位,那么我们就可以这样写:
1 | score double(5,2); |
上图,对于字符串类型有char是定长,varchar是变长,区别就是如果我们要存储“张三”,用name char(10),系统就会安排10个字符空间,而张三只需要两个字符空间,所以剩下八个就用空格补齐了,比较浪费空间。
所以一般我们用户名用varchar,性别用char
来一个小案例:
sql语句中的modify是修改为什么什么
change是修改…为…再修改数据类型为…
day02-Maven&MyBatis
maven简述
每个IDE都有自己的项目结构,所以eclipse中的项目无法导入到IDEA中时,因为结构不一致,但如果IDE都使用maven来创建项目,那项目结构都相同,长这样
其中的pom.xml文件,就是maven特有的配置文件,可以这样理解,当看到pom.xml文件,我们就可以断定,这个项目是用maven构建的
用maven构建的项目结构详细解读:
以往我们的Java项目需要编译、测试、打包、发布…,这一系列的流程操作起来比较麻烦,而maven用来统一的命令来代替:
可以看到maven这个构建工具是相当方便啊
在pom.xml文件中输入我们要引入的依赖的坐标,就可以导入jar包,那整个流程是什么?
maven的安装配置:
IDEA配置maven:
mybatis是用来简化jdbc开发的
它是一个持久层框架,持久层就是把数据保存到数据库中的那一层代码,并且JavaEE的三层架构就是表现层(controller)、业务层(service)、持久层(dao)
数据库的增删改查在mybatis这里是用配置文件或者注解的方式完成的
在UserMapper.xml中写SQL语句(map的意思是映射)
操作什么表就用什么Mapper.xml,操作用户表就用UserMapper.xml,操作订单表就用OrderMapper.xml,
增删改查对应的便是xxxMapper.xml中的insert delete update select 标签
整个流程就是:pojo——mybatis-config.xml——InputStream——SqlSessionFactoryBuilder的build方法——SqlSessionFactory——SqlSessionFactory的openSession方法——SqlSession对象——调用selectList方法,参数为SQL语句的id——执行SQL语句
SqlSessionFactoryBuilder的build方法会返回一个SqlSessionFactory对象(看了一眼源码)
SqlSessionFactory的openSession方法会返回一个 SqlSession对象
[今天就到这](https://www.bilibili.com/video/BV1Qf4y1T7Hx?p=48&spm_id_from=pageDriver&vd_source=829c06bc26 8bb81296178a37d18537e1)
xml中的配置项目是有顺序的。
注解开发就是将sql语句写在注解当中,所以注解开发将更加方便,但是也不一定总是方便的
day03-DOM
dom:将来浏览器加载html文档的时候,会把html中的各个组成部分封装为dom对象,同时在浏览器的内存当中会形成一颗dom数树,如下图:
使用js来操作html,融合了面向 对象思想
我们主要学两点:
对象的使用可以查阅文档
day04正则表达式
正则表达式定义了字符串组成的规则。也就是判断指定的字符串是否符合指定的规则,如果符合返回true,如果不符合返回false。
正则表达式是和语言无关的。很多语言都支持正则表达式,Java语言也支持,只不过正则表达式在不同的语言中的使用方式不同,js 中需要使用正则对象来使用正则表达式。
可以用正则表达式判断用户名起的是否符合规则
day05Web核心
可Java中使用会话技术(cooki、session)来解决多次请求间不能共享数据的问题
day06Servlet
Web服务器是一个软件,对http协议进行了封装,tomcat就是一个web服务器。
Servlet
servlet就是一个接口,这个接口最重要的一个方法就是 public void service(ServletRequest req, ServletResponse res)
servlet的执行很特殊,是有web服务器tomcat来帮我们创建servlet对象,并且调用servlet方法的。
既然servlet由web服务器管理,那servlet在加载和实例化的时候当servlet被第一次访问的时候,web服务器创建servlet对象,如果是在被访问的时候才创建,那势必会等待一段时间,影响用户体验,所以一般是在web服务器启动的时候就创建servlet对象,那如何来配置呢?
1 | @WebServlet(urlPatterns = "/demo1",loadOnStartup = 1) |
然后init方法只调用一次,在创建servlet对象时调用。只要servlet被访问,servlet方法会被调用,所以会被多次调用,。
当服务中指的时候会调用destroy方法
在使用servlet时,每次都要实现五个方法,其中四个还不太常用,太费事了,为了方便开发,我们可以用继承HttpServlet的方式,重写doGet和doPost方法。
在浏览器输入url的请求是get请求的方式,要是使用post请求方式,应该用提交表单的方式(提交方式选择post)
自己配/
和/*
会把tomcat中的defaultservlet配置给覆盖掉,若是覆盖掉,则无法访问静态资源,所以我们一般不覆盖。
AJAX(异步的JavaScript和xml)
这是一种为了前后端分离而产生的技术,现在属于前端技术了
在搜索框中输入“奥运”,下面就会联想出各种关键词,这些关键词就是在输入奥运之后,立马访问数据库,把奥运相关的关键词也返回在页面上,这不就是吧服务器端的数据展示在页面上了嘛,我并没有刷新网页就更新了部分页面的内容。
用户名是否可用校验就是,在我注册用户名时,光标离开输入框的时候就访问数据库并查询看是否有重合的,然后就立马在前端的页面给到我提示信息(xxx用户名已存在或不符合要求)。
之前我们之用HTML和普通的JavaScript做不到从服务器获取数据,比如说服务器查询了一个数据列表,我怎么通过JavaScript的方式给到前端的页面,以前是做不了这个事的,以前是通过jsp来做的,现在我们有两ajax就不用jsp了,