JavaWeb重点笔记

本文详细介绍了JavaWeb开发中的重要概念,包括JDBC、数据库连接池、Maven、MyBatis、HTTP协议、Servlet、JSP以及会话跟踪技术。通过JDBC的API详解,展示了如何操作数据库,讲解了预编译SQL以防止SQL注入。接着介绍了数据库连接池的使用,如Druid,并阐述了Maven的依赖管理和构建流程。进一步探讨了MyBatis简化数据库操作的原理和使用,以及Mapper代理开发。此外,文章还涵盖了HTTP协议的特点、GET和POST请求的区别。对于Web服务器,讲解了Tomcat的使用和Servlet的生命周期。最后,讨论了会话跟踪技术,包括Cookie和Session的原理、使用细节及其区别。
摘要由CSDN通过智能技术生成

JDBC

 概念:JDBC就是使用java语言操作关系型数据库的一套API

全称:(Java DataBase Connectivity)Java 数据库连接

本质

  • 官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口
  • 各个数据库厂商去实现这套接口,提供数据库驱动jar包
  • 可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类

JDBC的好处

  • 各数据库厂商使用相同的接口,java代码不需要针对不同的数据库分别开发
  • 可随时替换底层数据库,访问数据库的Java代码基本不变

JDBC快速入门

  1. 创建工程,导入驱动jar包
  2. 注册驱动

Class.forName("com.mysql.jdbc.Driver");

  1. 获取连接

Connection conn=DriverManager.getConnection(url,username,password);

  1. 定义SQL语句

String sql = "update ...";

  1. 获取执行SQL语句

Statement stmt=conn.createment();

  1. 处理返回结果
  2. 释放资源

API详解

DriverManager

1.注册驱动

Class.forName("com.mysql.jdbc.Driver");

  • 查看Driver类源码

static{ try{ DriverManager.registerDriver(new Driver()); } catch(SQLException var1){ throw new RuntimeException("Can't register driver!"); } }

提示:

  • Mysql 5 之后的驱动包,可以省略注册驱动的步骤
  • 自动加载jar包中META-INF/services/java.sql.Driver文件中的驱动类

2.获取连接

static Connection getConnection(String url,String username,String password);

  • 参数
  1. url:连接路径
  • 语法:jdbc:mysql://ip地址(域名):端口号/数据库名称?参数键值对1&参数键值对2...
  • 实例:jdbc:mysql://127.0.0.1:3306/db1
  • 细节:

如果连接的是本机mysql服务器,并且mysql服务默认端口是3306,则url可以简写为:jdbc:mysql:///数据库名称?参数键值对

配置useSSL=false参数,禁用安全连接方式,解决警告提示

  1. user:用户名
  2. password:密码

Connection

Connection(数据库连接对象)作用:

1.获取执行SQL的对象

  • 普通执行SQL对象

Statement creatStatement()

  • 预编译SQL的执行SQL对象:防止SQL注入

PreparedStatement prepareStatement(sql)

  • 执行存储过程的对象

CallableStatement prepareCall(sql)

2.管理事务

  • MYSQL事务管理

开启事务:BEGIN; / START TRANSACTION;

提交事务:COMMIT;

回滚事务:ROLLBACK;

MYSQL默认自动提交事务

  • JDBC事务管理:Connection接口中定义了3个对应的方法

开启事务:setAutoCommit(boolean autoCommit)

提交事务:commit()

回滚事务:rollback()

Statement

作用:

1.执行SQL语句

int executeUpdate(Sql):执行DML,DDL语句

返回值:

  • DML语句影响行数
  • DDL语句执行后,执行成功也可能返回0

ResultSet executeQuery(Sql):执行DQL语句

  • 返回值:ResultSet 结果集对象

ResultSet

Statement 是 Java 执行数据库操作的一个重要接口,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句。Statement对象,用于执行不带参数的简单SQL语句(用于执行静态 SQL 语句并返回它所生成结果的对象。

即结果集对象,作用:

1.封装了DDL查询语句的结果

ResultSet stmt.executeQuery(sql):执行DQL语句,返回ResultSet 对象

2.获取查询结果

boolean next():

  • 将光标从当前位置向前移动一行
  • 判断当前行是否为有效行

返回值:

  • true:有效行,当前行有数据
  • false:无效行,当前行没有数据

xxx getXxx :获取数据

  • xxx:数据类型 如: int getInt(参数);String getString(参数)
  • 参数:int: 列的编号,从1开始 String : 列的名称

使用步骤

  1. 游标向下移动一行,并判断该行是否有数据:next()
  2. 获取数据:getXxx(参数)

//循环判断游标是否是最后一行末尾 while(rs.next()){ //获取数据 rs.getXxx(参数); }

PreparedStatement

作用:

1.预编译SQL语句并执行:预防SQL注入问题

  1. 获取PreparedStatement对象

//SQL语句中的参数值,使用?占位符替代 String sql="select * from user where username = ? and password = ? "; //通过Connection对象获取,并传入对应的sql语句 PreparedStatement pstmt=conn.prepareStatement(sql);

  1. 设置参数值

PreparedStatement对象 :setXxx(参数1,参数2):给?赋值 Xxx:数据类型;如setInt(参数1,参数2) 参数: 参数1:? 的位置编号,从1开始 参数2:? 的值

  1. 执行SQL

executeUpdate();/executeQuery(); :不需要再传递sql

SQL注入

SQL注入是通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法

好处:

1.预编译SQL,性能更高

2.防止SQL注入:将敏感字符进行转义

原理:

  • PreparedStatement预编译功能开启:useServePrepStmts = true
  • 配置MySQL执行日志(重启mysql服务后生效)

log-outpot=FILE general-log=1 general_log_file="D:\mysql.log" slow-query-log=1 slow_query_log_file="D:\mysql_slow.log" long_query_time=2

  1. 在获取PreparedStatement对象时,将sql语句发送给mysql服务器进行检查,编译(这些步骤很耗时)
  2. 执行时就不用再进行这些步骤了,速度更快
  3. 如果sql模板一样,则只需要进行一次检查,编译

数据库连接池

简介

  • 数据库连接池是个容器,负责分配,管理数据库连接(Connection);
  • 它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个;
  • 释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏

好处

  • 资源重用
  • 提升系统响应速度
  • 避免数据库连接遗漏

实现

标准接口:DataSource

  • 官方(SUN)提供的数据库连接池标准接口,由第三方组织实现此接口
  • 功能:获取连接

Connection getonnection()

常见的数据库连接池

  • DBCP
  • C3P0
  • Druid

Druid(德鲁伊)

  • Druid连接池是阿里巴巴开源的数据库连接池项目
  • 功能强大,性能优秀,是Java语言最好的数据库连接池之一

使用步骤

  • 导入jar包 druid-1.1.12.jar
  • 定义配置文件
  • 加载配置文件
  • 获取数据库连接池对象
  • 获取连接

alt+insert 快捷键打开

查询所有数据

  1. 获取Connection
  2. 定义SQL:select * from tb_brand;
  3. 获取PreparedStatement对象
  4. 设置参数:不需要
  5. 执行SQL
  6. 处理结果:List
  7. 释放资源

Maven

Apache Maven是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建,报告和文档

官网:http://maven.apache.org/

作用

  • 提供了一套标准化的项目结构
  • 提供了一套标准化的构建流程(编译,测试,打包,发布...)
  • 提供了一套依赖管理机制

标准化的项目结构

Maven提供了一套标准的项目结构,所有的IDE使用Maven构建的项目结构完全一样,所有的IDE创建的Maven项目通用

标准化的构建流程

Maven提供了一套简单的命令来完成项目构建

依赖管理机制

  1. Maven使用标准的坐标配置来管理各种依赖
  2. 只需要简单的配置就可以完成依赖管理

Maven模型

  • 项目对象模型(Project Object Model)
  • 依赖管理模型(Dependency)
  • 插件(Plugin)

仓库

本地仓库(Local Repository)

自己计算机上的一个目录

中央仓库(Central Repository)

由Maven团队维护的全球唯一的仓库

地址:https://repo1.maven.org/maven2/

远程仓库(私服)(Remote Repository)

一般由公司团队搭建的私有仓库

当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应jar包:

  • 如果有,则在项目中直接引用
  • 如果没有,则去中央仓库中下载对应的jar包到本地仓库

安装配置

  1. 解压apache-maven-3.6.1rar既安装完成
  2. 配置环境变量 MAVEN_HOME为安装路径的bin目录
  3. 配置本地仓库:修改conf/setting.xml中的为一个指定目录
  4. 配置阿里云私服:修改conf/setting.xml中的标签,为其添加如下子标签

<mirror> <id>al

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值