1、技术栈总览
学习要搞清楚你的目标;先学C++/JAVA;搞程序不要太浮躁;
java基础:计算机基础、写博客、java基础语法、流程控制和方法、数组、面向对象、异常、常用类、集合框架、IO、多线程、GUI、网络编程、注解与反射、JUC编程、JVM探究、设计模型/xml/数据结构/正则表达式。
数据库:Mysql、JDBC、UML类图、数据库设计
前端:html、css、js、bootstrap/layui、vue
javaweb:Tomcat、http、maven、servleet、session、cookie、jsp、三层架构、EL表达式、过滤器、监听器、文件上传、邮件收发、富文本编辑器。
SSM框架:git、mybatis、spring、springmvc(代替javaweb)。
LINUX:基础、redis、nginx、docker
Springboot:基础、配置、持久层操作、web开发、缓存、消息、检索、任务、安全、DUBBO+ZOOKEEPER分布式开发
Springcloud:微服务及微服务架构、SpringCloud、Eureka服务注册于发现、Feign+Ribbon负载均衡、Hystrix熔断机制、Zuul路由网关、Config配置中心
2、Java基础
JDK开发、JRE运行,JVM最底层。
编译型:通过编译器一次编译为整本书,快;解释型:一次翻译一小部分,边执行边翻译。
Java是预编译为字节码然后解释为操作系统。
多行注释:/**/
基本类型+引用类型(类、接口、数组)。
包机制:package pkg1. 域名导致;手动导包:import java.util.Date;
3、MySQL
3.1 前端(展示页面-->>数据)、后台(连接数据库jdbc-mybatis,连接前端(控制视图跳转、给前端传递数据):servlet、mvc) 、数据库(存数据,excel、word)
数据库(管理系统)分类:用SQL语言 5.7/8.0
关系型(SQL):Mysql、oracle、sql serserver、sqlite;表、行;
非关系(No SQL):key:value;;redis、mongdb,以对象存储。
安装:尽可能用压缩包安装,方便卸载。
3.2 数据库设计
设计三大范式(信息重复、更新异常、删除异常)(第一:列不可再分;第二范式:在满足前面基础上,每一个其他列必须与主键相关,而不是只和联合主键的一部分相关;第三:消除传递依赖,即每一列由主键直接决定-->>直接决定,而不能是间接相关)
规范性和性能的问题,规范:关联查询不能超过三张表---->>.考虑用户体验,有时候被迫打破规则,不能太规范,故意增加冗余字段。
3.3 举例
IDEA可以直接导入数据库,双击查看数据库表。
-
分析业务和需要处理的数据库需求
-
概要设计:设计E-R图
-
举例:博客
-
用户表(用户登录、注销、用户个人信息、写博客
-
分类表(文章分类、谁创建的)
-
文章表(文章的信息)
-
友情链接表
-
-
标识实体(开始设计)
-
数据库不区分大小写,建议_分割。
-
4、javaweb
1、web开发:web,网页的意思
-
静态web:html、css;始终不变提供给所有人的;
-
动态web:因人而异的返回结果----->>淘宝/京东------>>技术栈:SEVLET/JSP、ASP、PHP。
在java中,动态web资源开发的技术称为javaweb。
2、web应用程序:提供浏览器访问的程序。
-
a.html、b.html 。。。 这些web资源给外界访问。
-
访问到的页面/资源一定存在于世界中的某一个角落的计算机上----URL。
-
统一的web资源放在于同一个文件夹下,web应用程序-->>TOMCAT服务器。
-
静态web、动态web
-
html、css、js
-
jsp、servlet ---->>Sun公司主推的B/S架构:
-
基于JAVA语言
-
可以承受三高带来的影响
-
-
java程序
-
jar包
-
配置文件
-
-
web程序编写后,提供给外界需要一个服务器统一管理
3、静态web
-
一次请求、一次响应 请求-->>服务器的web service-->>静态资源
-
缺点:web页面无法动态更新、千人一面
-
变动:轮播图、点击特效
-
JS-->>居多
-
VBS
-
-
缺点2:无法和数据库交互,数据无法持久化,用户无法交互
4、动态web
-
缺点:假如服务器动态web出现错误,需要重新编写后台程序。
-
停机维护
-
-
优点:动态更新、可以与数据库交互(注册、商品持久化、购物订单)。
5、web服务器
5.1 服务器是一种被动的操作,处理用户的请求并给出响应信息。
分类:
-
IIS:微软的
-
Tomcat:支持最新的Servlet和JSP规范,稳定、免费的web应用服务器,最新9.0版本。
-
标志:猫
-
工作后可以手写Tomcat
-
下载:安装/解压,了解配置文件/目录结构、了解东西的作用
5.2 Tomcat服务器
(1)安装下载-->官网
(2)启动关闭:startup、shutdown;IDEA中添加即可tomcat local+工件设置(目录);
(3)配置:config/server.xml可修改访问tomcat的主机名、端口、默认进入的文件夹。localhost等价于127.0.0.1。
(4)浏览器访问过程:输入域名-->>本机hosts查询--->>DNS服务器--->>IP地址-->>发出请求。
(5)自定义网站:新建web文件夹,放入index.html,映射域名即可。
(6)webapp结构:
5.3 HTTP
(1)多媒体资源传输
(2)请求、响应
(3)1.0版本和持久连接的2.0版本
(4)请求头、响应头:
(5)请求方式:get、post
6、Maven(POM是核心文件)
(1)有什么用?
- javaweb中,需要使用大量的jar包手动导入
-
需求:东西帮我导入和配置jar包,由此maven诞生了
-
如tomcat内部的大量jar包
-
-
maven是一个jar包管理,是一个项目架构管理工具
-
核心思想:约定大于配置
-
有约束不要违反
-
-
(2)安装、解压
(3)配置:
-
-
建议所有环境放在一个文件夹
-
config-mirrors-配置镜像下载
-
-
-
修改为阿里云镜像
-
配置本地仓库-config同步设置
(4)IDEA配置Maven
其中,bundled(3)是IDEA自带的Maven。
(5)两种创建方式
* 原型创建:
* 白板创建:
* 建议做法:
(6)Maven结构和生命周期
(7)设置配置资源类无法导出问题
<build>
<finalName>maven_demp</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
(8)IDEA配置Tomcat
7、servlet
(1)SUN开发的动态web技术,SUN提供了API接口,称为Servlet
(2)开发步骤:
-
编写一个类实现Servlet接口
-
部署实现类到web服务器中
(3)实验
- 构建普通的Maven项目(可以删除SRC文件),以后的学习可以建立module,这是主工程,以后就在这里开发
-
编写servlet
-
编写一个普通类
-
实现servlet接口,默认实现类:HttpServlet、GenericServlet
-
servlet接口--.>GenericServlet实现类-->>HttpServlet实现类--->>自己写的类
-
重写doPost和doGet类
-
-
-
Maven环境优化:
-
修改web.xml为最新
-
将maven 的结构搭建完整
-
-
添加java、resources文件夹标记
-
关于父子工程:添加module后,pom有module标识;子项目的pom有父标记parent,可以使用父项目所有依赖。
-
public class helloServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter writer = resp.getWriter();
writer.print("你好啊");
}
}
* 编写Servlet的映射(为啥?我们写的是java程序,浏览器需要web服务地址,故需要在web服务注册Servlet并给出访问地址。 )
<servlet>
<servlet-name>zhangs</servlet-name>
<servlet-class>com.zhang.servlet.helloServlet</servlet-class>
</servlet>
<!--映射servlet-->
<servlet-mapping>
<servlet-name>zhangs</servlet-name>
<url-pattern>/hi</url-pattern>
</servlet-mapping>
-
配置TOMCAT:配置路径
-
启动测试
(4)servlet原理
8、JavaBean
9、MVC三层架构(微服务之前的架构)
(1)架构
(2)作用
-
MODEL
-
业务处理:业务逻辑 service
-
数据持久层:CRUD(DAO)
-
-
VIEW
-
展示数据
-
提供链接发起Serclet请求(Form表单)
-
-
Controller
-
接收用户请求:req:
-
交给业务层处理对应的代码
-
控制视图跳转:登录-->接收用户登录请求-->处理用户请求(获取账号,密码)-->>交给业务层处理00>.DAO层查询用户名密码是否正确-->>数据库。
-
有时业务层没有代码,直接调用DAO层。
-
但是有时候业务有特殊的,如事务回滚,让业务层处理。
-
-
(3)过滤器Filter(处理乱码、登录验证)
-
只要实现filter接口即可。
-
实现下列接口并重新方法:
-
javax.servlet.*;
-
过滤器用<.filter配置>,配置即可。
10、文件上传与下载:
javaweb-39:文件上传及拓展鸡汤_哔哩哔哩_bilibili