Java Web基础需要掌握知识

本文深入讲解Java基础语法、数据类型、面向对象等核心概念,并覆盖集合框架、异常处理、多线程、网络编程等关键领域,同时介绍了Java Web开发及数据库操作的相关知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Shiro
WebService
Spring Data JPA
BootStrap
LayUI/VUE.js
Echarts
Struts2
SVN
Git


S2SH  Struts2+Spring+Hibernate
SSH   SpringMVC+Spring+Hibernate
SSM   SpringMVC+Spring+MyBatis
SSS   SpringMVC+Spring+Spring Data


今日内容:
如何看待编程语言?
可以开发一些系统,简化日常的工作


JAVA体系知识点:
基本语法:
数据类型:
基本类型:byte short int long float double char boolean
引用类型:String 集合 数组 枚举 等,除了上述的八种基本类型之外,剩下的都是引用类型
int[] arr1
Integer[] arr2


long  8个  
float 4个    可以存储科学记数法
基本类型的转换是按照数据存储的范围
long可以自动转换为float
byte\short\char参与运算的时候,被转为int


运算符:
赋值运算符:= += -= *=
算术运算符:+  ++ -- %
比较运算符:> < >=  == !=
逻辑运算符:| || & &&
位运算符:^  & | << >>> >>
三目运算符:X?Y:Z
字符串连接运算符:+




Dog dog1=new Dog();
Dog dog2=new Dog();
输出:dog1+dog2


程序结构:
1、顺序结构
2、分支结构:if\switch
3、循环结构:for\while\do/while
请写出2*4的效率最高的写法:2<<2


面向对象:万事万物皆对象  OOP和AOP
2大核心:
1、类   
2、对象
面向对象的特征:
1、封装
2、继承----
3、多态
1、编译时多态
重载
2、运行时多态
1、重写
2、对象造型
1、子--父类  向上转型  自动  
2、父类--子  向下转型  强制


4、抽象

java中内部类:
1、匿名内部类
2、静态内部类
3、成员内部类
4、局部内部类


JAVA中的非持久化(内存存储)存储:
1、数组
算法:排序、查找
一维数组
二维数组
2、集合
List<E>:有序且可重复
1、ArrayList: 底层:数组  特点:新增和删除 慢  查询和修改快
2、LinkedList<E>:底层:链式结构  特点:新增和删除 快 查询和修改 慢
Set<E>:无序且不可重复
1、HashSet:底层:哈希散列存储   需要重写:hashcode和equals
2、TreeSet:底层:红黑二叉树 需要实现比较器接口:Comparable  Comparator 
Map<K,V>:key不允许重复,Value可以重复
HashMap
HashTable---Properties


IO流:
划分:
1、按照单位
1、字节流
2、字符流
2、按照流向分:
1、输入
2、输出
3、按照功能:
1、节点流:直接操作数据的流   文件流和内存流
2、过滤流:操作流的流
常用IO流类
节点流
1、文件流:4个  FileXXX
2、内存流:2个  ByteArrayXXX
过滤流
1、缓存流:4个 BufferedXXX
2、转换流:2个

1、打印流
2、数据流
3、对象流  --序列化/反序列化

1、随机读取文件类
RandomAccessFile:可以用于:多线程下转或多线程读取

线程:是CPU处理程序的最小单位
线程就是用来执行代码


Lambda表达式:简化的表达式,用来实现接口中只有一个抽象方法的接口的实例化
语法格式:(参数名)->{代码块}


Eclipse




1、创建方式:

2、线程的生命周期:
1、新建   new
2、就绪   start
3、运行  
4、阻塞    sleep\wait
5、死亡  
3、用户线程和守护线程
用户线程销毁的时候,会将守护线程一起销毁
主线程和GC线程
4、多线程的安全
当多个线程共同操作同一资源的时候,可能会引发线程安全
5、锁
互斥锁
lock
读写锁
6、死锁
多个线程因为资源无法彼此拥有的时候,线程都进入了阻塞状态导致程序无法正常结束
7、生产者消费者模型


这种模型就是为了平衡多线程间的交互
wait/notify/notifyall
wait:释放锁,并将当前线程在对应的锁上进行阻塞
notify:唤醒在对应锁上因为wait而陷入阻塞的任意一个线程
notifyall:唤醒所有的线程 

线程A用来爬取数据---数据的生产者
线程B用来存储数据---数据的消费者

网络编程:
Socket
用在及时通讯
TCP:
面向连接
数据交互没有大小的限制
数据安全
效率低


HTTP协议


UDP
无需连接
数据交互大小有限制 64KB
数据不安全
效率高


网络会议室
翻墙软件


前端:
HTML+CSS+JavaScript


HTML:显示数据   标签

表单标签:
<form>
<input type="">
<select>
<textarea>

<a>
<img>
<hr>
<video>
<audio>
<canvas>






CSS:样式,美化页面
格式:选择器 {
属性名:值
}
选择器:
1、id选择器  #id名称
2、class选择器 .class名称
3、标签选择器  标签名称
4、属性选择器  [属性名=值]
CSS引入方式:
1、嵌入  在标签上使用style
2、内部:写在<head> <style>
3、外部:<link>
常用属性:
1、文字
2、位置
绝对定位
相对定位
3、盒子模型
margin---外边距
padding--内边距
4、背景

JS:动态改变html内容和css样式
JavaScript:面向对象语言

浏览器脚本语言,浏览器进行解释


基本语法
变量:
var 变量
局部变量和全局变量
运算符:

分支
循环语句

== 比较的是值
=== 比较的是值和类型
函数格式: function 方法名(参数){
函数体
[return 返回值]
}
事件:
onclick  单击事件
onchange 内容变化
onblur 失去焦点
onfocus 获取焦点
onmoveorver
onmoveout
onkeydown
onkeyup
ondbclick

JS内置对象
数组
Number
String
Math
Regex
Date


JS的BOM
浏览器对象:
window
location
screen


JS的DOM

document:文档
getElementById
getElementsByName
createElement




MySQL数据库:
数据存储的仓库
关系型数据库:SQL92
MySQL
Oracle:

SQL:结构化查询语言
专门操作数据库的语言
SQL语言的分类:
1、DDL:数据定义语言
create
alter
drop
2、DML:数据操作语言
insert
update
delete
3、DQL:数据查询语言
select    order by  group by having limit(MySQL)
4、DCL:数据控制语言
对用户权限的分配 grant


5、TPL:事务处理语言
对事务的管理
6、CCL:控制指针语言




MySQL数据类型
int
char
varchar
date
datetime
time
double
blob
text


MySQL约束条件
主键约束 primary key
非空约束 not null
默认约束 default
唯一约束 unique
外键约束 foreign key


--创建 表、数据库、视图、触发器
CREATE TABLE 表名 (字段 数据类型 约束条件);


--修改
ALTER TABLE 表名 add 字段名称 数据类型
--删除
DROP TABLE 表名

--新增数据
INSERT INTO 表名 (字段名称) values(值);
--修改数据
UPDATE 表名 SET 字段=值 [WHERE 条件]


--删除数据
DELETE FROM 表名 [WHERE 条件]
--查询
SELECT 字段 FROM 表名 [WHERE 条件] [GROUP BY 字段] [HAVING 条件] [ORDER BY 字段 ASC|DESC] [LIMIT 行索引,数量]

关系型数据库的联合查询:
1、union  将多条查询结果 纵向排列
2、子查询 
3、笛卡尔积查询
4、连接查询
1、内连接
inner join  on
2、外连接
1、左外连接
2、右外连接

JDBC:java DataBase Connection
java操作数据库的api
使用步骤:
1、导入jar---数据库驱动jar
2、注册驱动  Class.forName
3、获取连接对象 Connection
4、创建Statement/PreparedStatement
5、执行SQL语句
6、处理查询结果:ResultSet
7、关闭数据库连接
SQL注入:
select * from user where username='' ;
select * from user where username=''or 1=1 ;



XML解析
DOM---
Dom4j---SAXReader---Document----Element----
SAX---DefaultHandler--SAXParser

XML:
组成:
1、声明区  标记版本和编码格式和对应的约束文档等
2、数据区  以根标签开始和结尾
XML语法:
1、严格区分大小写
2、标签有开始有结尾
3、属性的值必须使用双引号
4、特殊字符使用特殊符号代替







JSON:
就是符合一定格式的字符串
语法:
{}  对象
[]  数组
,   多个属性或多个元素的分隔符
:   连接属性和值
""  属性名称或者字符串类型的值



常用的JSON解析技术:
1、FASTJSON   ---JSON
2、GSON   
解析数组格式的数据
new TypeToken<new ArrayList<E>>(){}.getType()
3、JSON  JSONObject/JSONArray
4、Jackson---ObjectMapper----SpringMVC内置的JSON解析器  @ResponseBody和@RequestBody


JS解析json:
1、JSON.parse()
2、eval('('++')')
3、设置消息头







["id":2,3]  x


XML和JSON:
跨平台
跨网络
跨编程语言

B/S:浏览器/服务器    :无需消耗用户的电脑性能
C/S:客户端/服务器----APP:移动桌面程序开发




B/S+APP


Servlet:java语言编写的专门运行在服务器软件上的api


生命周期:
1、初始化
2、服务---service----doGet/doPost
3、销毁


Servlet的页面跳转:
1、转发     1次请求
2、重定向   2次请求
HttpServletRequest
HttpServletResponse




get和post的区别?
1、信息敏感  get的参数是在url上  post
2、大小      get跟在url上,url是长度限制  post没有
3、性能      get快  post慢

用户状态跟踪技术
Cookie:  浏览器保存数据技术
数据存储在客户端

HttpSession:
数据存储在服务器


HttpSession的销毁条件:
1、时间超时
2、invalidate
3、服务器宕机

如果说Cookie禁止了,如何跟踪用户?
1、URL重写
response.encodingURL()


JSP:页面  动态页面

JSP脚本语法:
1、<%!  %>  声明全局变量或定义方法
2、<%  %>   定义局部变量、调用代码块
3、<%=  %>  赋值  
4、<%--注释--%>


JSP三大指令:
1、page    页面设置  import 
2、taglib  引用标签库  JSTL
3、include  静态加载页面


JSP六大动作:
include
forward
param
usebean
setproperty
getproperty



JSP九大内置对象
pageContext
out
session
application
request
response
exception
page
config

JSP四大域
application
session
request
pageContext


EL表达式:从四大域、Cookie中获取值
格式:${对象}

JSTL标签库
核心库  core
<c:forEach>
<c:if>
<c:choose>


Filter:过滤器
可以对请求进行预处理和后处理
应用场景:
1、编码
2、未登录拦截
3、权限分配
4、全站压缩---gzip





Linsener:监听器
分类:
1、监听ServletContext
2、监听HttpSession
3、监听HttpServletRequest
应用场景:
1、统计在线人数
2、在访问高峰期进行动态的Session失效



Ajax:异步网页刷新技术

$.ajax({
url:"路径",data:"请求参数",datatype:"参数的格式",type:"请求方式",contentType:"内容的格式",success:function(data){}
});
jQuery:对JS的封装
语法格式:$("选择器").行为(function(){});
事件:click\change
改变内容:val(),html()
改变样式:css()
动画:hide\show\fadeIn\fadeOut\slideUp\slideDown\animate
jquery-validate



数据库的事务
事务:保证操作的一致性
事务的特性:
A:原子性
C:一致性
I:隔离性
D:持久性


事务可能会出现的问题:
1、脏读:读取到了未提交的内容
2、虚读:读取的数据前后不一样:insert \delete
3、不可重复读:读取的数据内容不一致:update


事务的隔离级别:
1、串行化  全部避免
2、Repeatable Read  避免脏读和不可重复读
3、Commited Read  避免脏读
4、UnCommited Read 什么都没有避免


数据库连接池
Dbcp----
C3P0----
Druid---德鲁伊




DbUtils------


//反射+注解




Hibernate:
ORM(对象关系映射)
配置文件:
1、全局配置文件:hibernate.cfg.xml
四本一言
四个基本项:驱动、url、用户名、密码
一言:方言   根据数据库生成sql
二级缓存
查询缓存
DDL语句的执行
映射文件


2、映射配置文件:类名.hbm.xml
类----表
主键
属性---字段
多表关系


Hibernate的检索方式:
1、OID  update\delete\get\load
2、HQL  面向对象查询语言   表---类  字段---属性  数据--对象   Query
3、SQL NativeQuery    SQLQuery
4、对象导航图:多表关系  <one-to-one> <many-to-one><one-to-many><many-to-many>
5、QBC  5.2.x版本过时   JPA 
openSession和getCurrentSession?

getCurrentSession:一个线程就一个Session
默认关闭,要求增删改查都需要开启事务
使用步骤:
1、在全局配置文件中,使用<property name="hibernate.current_session_context_class">thread</property>



ThreadLocal---Map<Thread,E>
Hibernate的懒加载:
1、类
lazy=true
2、多表关系
Hibernate的多表关系的配置
一对一
1、主键关联  <one-to-one name constrained=true> 
2、外键关联  <many-to-one name  unique=true column=>
一对多
<set name>
<key column="外键名称">
<one-to-many class>
</set>
多对一
<many-to-one name column="外键名称">
多对多
隐式:
<set>
<key column="当前表在关联表中的外键名">
<many-to-many class column="另一张表在关联表中的外键名称">
</set>
显式:
使用一对多和多对一代替


<one-to-one> 
<many-to-one>
<one-to-many>
<many-to-many>
Hibernate的对象状态:
1、瞬时态  跟Session无关------------- 未追上   
2、持久态  跟Session有关-------------- 追上  evict/clear
3、游离态  之前跟Session有关---------- 前任


持久态的对象的属性发生变化的时候,当事务提交会自动更新到数据库




Hibernate的缓存机制:
1、一级缓存 存储在Session  默认有
2、二级缓存 存储在SessionFactory  默认无
3、集群缓存    Redis


Hibernate注解:

@Entity
@Table
@Column
@Id
@Basic
@Transient  标记属性不是字段
@JoinColumn
@JoinTable
@OneToOne
@OneToMany
@ManyToOne
@ManyToMany
@Cache











Spring
IOC:控制反转 DI:依赖注入
Spring的IOC的使用:
<bean class id >
Bean的实例数量:
singleton   当前Bean的实例在Spring的IOC容器中只有一个
prototype   每次调用就是创建新的实例
request
session

AOP:面向切面编程
What:做什么   ----通知
When:在什么时候---配置通知出现的时机
Where:在哪里------切入点表达式  
动态代理:
1、jdk----要求目标类 实现接口
2、cglib--
Spring的事务的类型:
1、声明式事务
2、编程式事务

Spring:SpEL表达式
格式:#{表达式}
Spring的#和$的区别
#:SpEl表达式
$:外部文件的key的值  properties

Spring Jdbc模板







SpringMVC:
Web的MVC框架
SpringMVC的前端控制器:
SpringMVC的控制器的方法的定义
SpringMVC对JSON数据的解析和创建:@RequestBody,@ResponseBody
SpringMVC实现文件上传和下载   
SpringMVC的拦截器
SpringMVC的自定义转换器---日期转换器
SpringMVC的标签
SpringMVC的标签验证:1、自带验证 2、JSR 303   Hibernate 
SpringMVC异常处理:
局部处理和全局处理
SpringMVC国际化  基本不用


MyBatis
ORM框架的实现
半自动框架  现在最火的框架
配置文件:
全局配置文件
接口配置文件
MyBatis的缓存机制
1、一级缓存
存储在SqlSession


2、二级缓存
MyBatis自身实现了二级缓存
缓存策略:
1、LRU:最近最少使用原则
2、FIFO:先进先出  队列存储   栈:先进后出
3、Weak:弱引用
4、Soft:软引用


Java四种引用关系:
1、强引用
new 类名()
只要引用存在,那么哪怕内存不足GC也不会回收
2、弱引用
如果内存不足时,GC会回收弱引用的内存
3、软引用
只要GC运行,都有可能回收内存
4、虚引用
想收就收,回收对象时,会调用finalize
MyBatis实现多表关系
<ResultMap>
MyBatis动态SQL
<if>
<where>
<set> <trim><choose><when><foreach>
MyBatis的注解
@Insert
@Update
@Select
@Delete
@ResultMap






Maven:
1、管理jar
2、构建项目

Maven的命令:
clear
package
install
build
state
Maven生命周期:
1、清空
2、构建
3、站点
Maven允许依赖的传递
jar的范围:
scope:
test:测试
compile:编译、测试、运行、打包
provided:编译
runtime:编译、测试、运行
system:系统,非Mavenjar包

Maven的打包方式:
1、jar
2、war
3、pom
Maven项目允许继承
Maven的聚合:Maven Project+Maven Module



JVM-Sandbox

四阶段目标:
1、掌握技术点
2、解决问题的能力
3、主动学习能力
4、表达能力




毕业的目标:独立开发项目


 













































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值