JavaWeb
数据库
关系型数据库
- 关系型数据库是建立在关系模型基础上的数据库,简单说,关系型数据库是由多张能互相连接的二维表组成的数据库
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占用服务器资源