JavaWeb
数据库
关系型数据库

  1. 关系型数据库是建立在关系模型基础上的数据库,简单说,关系型数据库是由多张能互相连接的二维表组成的数据库

SQL分类

  • DDL(Data Definition Language) 数据定义语言,用来定义数据库对象:数据库,表,列等
  • DML(Data Manipulation Language) 数据库操作语言,用来对数据库中的表进行增删改
  • DQL(Data Quert Language) 数据查询语言,用来查询数据库中表的记录
  • DCL(Data Control Language) 数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户

DDL操作数据库语句

  • 查询:SHOW DATABASES;
  • 创建:CREATE DATABASE 数据库名称;或者(判断,如果不存在则创建)CREATE DATABASE IF NOT EXISTS 数据库名称;
  • 删除:DROP DATABASES 数据库名称;或者(判断,如果存在则删除)DROP DATABASE IF EXISTS 数据库名称;
  • 使用数据库:(查看当前使用的数据库)SELECT DATABASE();或者(使用数据库)USE 数据库名称;

JDBC

  • JDBC就是使用Java语言操作关系型数据库的一套API。

步骤

  • 创建工程,导入驱动jar包
  • 注册驱动Class.forName("com.mysql.jdbc.Driver");
  • 获取连接Connection conn = DriverManager.getConnection(url, username, password);
  • 定义SQL语句String sql = "";
  • 获取执行SQL对象Statement stmt = conn.createStatement();

执行SQLstmt.executeUpdate(sql);
urlPattern配置规则
精确匹配

  • 配置路径@WebServlet("/user/select")
  • 访问路径localhost:8080/web-demo/user/select

目录匹配

  • 配置路径@WebServlet("/user/*")
  • 访问路径localhost:8080/web-demo/user/aaa、localhost:8080/web-demo/user/bbb

扩展名匹配

  • 配置路径@WebServlet("*.do")
  • 访问路径localhost:8080/web-demo/aaa.do、localhost:8080/web-demo/bbb.do

任意匹配

  • (/*和’/'的效果一样,但/*的优先级更高,会优先拦截请求)(tomcat服务器中有一个默认的servlet,其配置路径是"/",它会访问项目中的静态资源,如果被自己写的Servlet覆盖,就访问不了了,所以请不要覆盖)
  • 配置路径@WebServlet("/")
  • 访问路径localhost:8080/web-demo/hehe、localhost:8080/web-demo/haha、localhost:8080/web-demo/haha/hehe
  • "/“和”/*"的区别
  • 当我们的项目中的Servlet配置了"/",会覆盖掉tomcat中的DefaultServlet,当其它的url-pattern都匹配不上时都会走这个Servlet
  • 当我们的项目中配置了"/",意味着匹配任意访问路径

Cookie
客户端会话技术,将数据保存在客户端,以后每次请求都携带Cookie数据进行访问
Cookie基本使用

  • 创建Cookie对象,设置数据
  • Cookie cookie = new Cookie("key", "value");
  • 发送Cookie到客户端:使用response对象
  • response.addCookie(cookie);
  • 获取客户端携带的所有Cookie,使用request对象
  • Cookie[] cookies = request.getCookies();
  • 遍历数组,获取每一个Cookie对象:for
  • 使用Cookie对象方法获取数据
  • cookie.getName();
  • cookie.getValue();

Cookie原理

  • Cookie的实现是基于HTTP协议的
  • 响应头:set-cookie
  • 请求头:cookie

Cookie使用细节

  • Cookie存活时间
  • 默认情况下,Cookie存储在浏览器内存中,当浏览器关闭,内存释放,则Cookie被销毁
  • setMaxAge(int seconds):设置Cookie存活时间
  • 正数:将Cookie写入浏览器所在电脑的硬盘,持久化存储。到时间自动删除
  • 负数:默认值,Cookie在当前浏览器内存中,当浏览器关闭,则Cookie被销毁
  • 零:删除对应Cookie

Cookie存储中文

  • Cookie不能直接存储中文
  • 如需要存储,则需要进行转码:URL编码URLEncoder.eccode("需要编码的内容", "UTF-8");

Session
服务端会话跟踪技术:将数据保存到服务端
JavaEE提供HttpSession接口,来实现一次会话的多次请求间数据共享功能
Session基本使用

  • 获取Session对象
  • HttpSession session = request.getSession();
  • Session对象功能
  • void setAttribute(String name, Object o)存储数据到session域中
  • Object getAttribute(String name)根据key,获取值
  • void removeAttribute(String name)根据key,删除该键值对

Session原理

  • Session是基于Cookie实现的

Session使用细节

  • Session钝化、活化
  • 服务器重启后,Session中的数据是否还在?
  • 钝化:在服务器正常关闭后,Tomcat会自动将Session数据写入硬盘的文件中
  • 活化:再次启动服务器后,从文件中加载数据到Session中

Session销毁

  • 默认情况下,无操作,30分钟自动销毁(在web.xml中配置)
  • <session-config>
  • <session-timeout>30</session-timeout>
  • </session-config>
  • 调用Session对象的invalidate()方法即可自我销毁

Cookie和Session总结

  • Cookie和Session都是来完成一次会话内多次请求间数据共享的
  • 区别
  • 存储位置:Cookie实践爱那个数据存储在客户端,Session将数据存储在服务端
  • 安全性:Cookie不安全,Session安全
  • 数据大小:Cookie最大3KB,Session无大小限制
  • 存储时间:Cookie可以长期存储,Session默认30分钟
  • 服务器性能:Cookie不占服务器资源,Session占用服务器资源