JavaWeb学习

JavaWeb

JavaWeb 是指,所有通过Java 语言编写可以通过浏览器访问的程序的总称,叫JavaWeb。

web 资源按实现的技术和呈现的效果的不同,又分为静态资源和动态资源两种。

  • 静态资源: html、css、js、txt、mp4 视频, jpg 图片
  • 动态资源: jsp 页面、Servlet 程序

Tomcat

  • 什么是tomcat
  • 应用场景是什么
  • 怎么用

Servlet

servlet程序 是javaEE规范之一。规范就是接口 是Javaweb三大组件之一,三大组件分别是servlet, FIlter, Listener监听器 是运行在服务器上的一个Java小程序,可以接受反应client的请求

手动实现一个Servelet

jsp页面

jsp 的全称是 java server pages java, 代替servlet 回传html页面

jsp的本质是一个servlet程序

JavaBean

什么是 java bean 对象

所有的类必须放在一个包中; 所有的类必须声明为public,这样才能够被外部所访问; 类中所有的属性都必须封装,即:使用private声明; 封装的属性如果需要被外部所操作,则必须编写对应的setter、getter方法; 一个JavaBean中至少存在一个无参构造方法

IOC

IOC是什么:

inversion of Control 控制反转,就是具有依赖注入功能的容器,可以创建对象的容器,IOC容器负责实例化,定位,配置应用程序中的对象及建立这些对象间的依赖。

IOC对对象进行控制反转,也称为依赖注入。 把对象的控制权从业务的业务对象手中转交给平台或者框架

AOP

【详细】IntelliJ IDEA: 无法创建Java Class文件 https://blog.csdn.net/m0_37218227/article/details/109095112

POJO

pojo plain ordinary 简单的java对象,实际上就是普通的java beans

Java 知识点

  • 子类不能抛出比父类更大的异常

  • 接口没有抛出异常, 实现不能抛异常

  • 修饰符不允许缩小

  • 异常不允许扩大

  • 不抛出的话,就当场处理掉使用try catch

Class.forName 方法的作用,就是初始化给定的类

与DriverManager.registerDriver(new Driver());效果一致

写java的时候 有没有返回一定要很明确 没有返回值 就加void,有返回值就不要加,但是一定要return

重写与重载

  • Override 子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变。 即外壳不变,核心重写。

  • Overload 重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。 每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。 最常用的地方就是构造器的重载。

idea iml 文件

iml 是什么文件 information of module,模块的配置文件

JDBC

  • JDBC的常规操作
  • JDBC连接mysql数据库
  • JDBC对数据库进行增删改 查
  • 添加操作时 获取自增列主键值

水果库存系统

JDBC优化 数据源连接池 JDBC的优化

DAO

DAO是什么 data access object 负责跟数据进行通信 fruitDAO 数据访问对象,只负责与数据库进行通信,用来做增删改查 其中的方法都是单精度方法。 单精度是指方法不能在细分了,

业务方法添加不是单精度,需要先查询

数据库连接

数据库的常量信息很多都需要用到,访问同一个数据库的多张表 有很多DAO、 DAO需要进一步向上提取 类要进一步抽象

抽象类不能new 抽象类只能继承 抽象类允许有构造方法

protected 子类,包内部可以访问 public 公共访问

对impl中获取连接操作以及释放连接操作做了提取

新增数据的步骤: 增删改

  1. 获取连接
  2. 编写sql
  3. psmt
  4. 填充参数
  5. 执行更新
  6. 释放资源

Object… params 多个参数 ,不定参数,一个到多个参数,也可以传递一个数组

return super.executeUpdate()

jdbc 是 java 与数据库通信的一门技术 查询的话是结果集 rs ,一列一列获取数据

查询结果的优化

在BaseDAO中新增的一个方法 executeQuery 操作

设置参数 提取成一个方法 setObject

类继承 无参构造方法

T的class对象 entityClass

子类调用父类方法 会用到父类的 同名构造方法

genericType 泛型类 getClass() // 获取 Class对象

new一个类 调用父类的无参构造方法

获取全类名

entityClass.newInstance

通用代码只用写一次

bsaeDAO抽取成jar包

jar class的压缩包

psmt 批处理 任务

以前都是即时连接,会造成资源浪费,每次连接结束后会主动结束连接

用之前就建立很多连接放在 连接池中

底层的连接,是socket连接,本质就是tcp连接

pool 可借, 已借出

相应时间更快 连接对象的利用率会更高

市面上的数据连接池很多,本质上是一个map,可以使用阿里巴巴版本的 druid

jdbc细节 除了drivermanager以外,其他都是接口

加载驱动 获取连接

为什么要使用 PreparedStatement

拼接字符串 容易存在问题 后面 加 or 1=1 fname=‘‘注入式漏洞

  • statement 接口存在注入式漏洞,存储大数据二进制有问题 blob,clob
  • PreparedStatement 预处理命令对象
  • CallableStatement 执行存储过程的

字符串拼接 注意点:

  • 单引号引的数据 是char类型的,双引号引的数据 是String类型的;

  • 单引号只能引一个字符,而双引号可以引0个及其以上。

  • char只是一个基本类型,而String 可以是一个类,可以直接引用。

新增Thymeleaf、Vue、Axios、自定义SSM框架等企业实际开发流行技术

  • tomcat 是 java程序 运行还是需要java虚拟机, 要配置环境变量 JAVA_HOME

  • servlet 服务器端的小应用程,普通的类不能接收到http的请求

方法重写 访问范围只能放大不能缩小 protected 可以写成public

项目和模块的区分

新建一个项目会默认建一个模块 与项目名同名

把项目 当成一个文件夹 把src删掉 文件夹下新建一个module

新导入lib之后要 右键add to library

必须要把包部署到tomcat

一个压缩包解压之后的 war包解压缩的包

jar包

war包

Servlet 是JavaEE 规范之一。规范就是接口

javaweb 三大组件

编写一个去实现这个接口

ServletConfig ServletContext 是一个对象 域对象,存取对象的操作范围

先写后面 然后用提示信息 加类说明

上下文里面 获取不到 init-params,只能是ServletConfig对象获取 <Servlet-m 然后可以选择

报文: http协议中传输的数据称

a) HttpServletRequest 类有什么作用。 每次只要有请求进入Tomcat 服务器,Tomcat 服务器就会把请求过来的HTTP 协议信息解析好封装到Request 对象中。 然后传递到service 方法(doGet 和doPost)中给我们使用。我们可以通过HttpServletRequest 对象,获取到所有请求的 信息。

需要通过上述的Servlet的技术,完成一个基础版本的javaweb,功能 就按照b站的例子

1655045786359 JAVAweb 笔记

application context = context root

热部署: redeploy 和 update classes and resources

setting——> notification -> 关闭 enable system notification

一个普通的类是不能 必须继承一个类

第一个例子中的几个问题:

  1. 把表单 form 写成了 from
  2. add 的配置 没有错,但是会提示显示add 访问 Not Found,可以重启一下服务试试
  3. 在 java获取参数内部不能不出问题,前端传过来的name 是 count,后端写成 fcount,则也会报错

Servlet 生命周期

Servlet 会话 session session 换一个浏览器不能获取到原来的session,关闭浏览器 重新打开也不能获取到原来的session

服务器内部转发与客户端重定向 两种资源跳转方式

Thymeleaf

input type = “hidden” 用于传递隐藏数据 ,不需要用户知道

[] () {} <> 使用场景

1655168051082

在 setting build compiler -> java compiler 中新增parameters 1655219534017

build module build artifact

1655255876877

javaweb中 html文件在 webapp文件夹中,不能在web-inf中