过滤器、监听器和mysql

回顾

EL

  1. 语法 ${ 表达式 }
  2. EL 域对象,以及查找规则
    • pageScope
    • requestScope
    • sessionScope
    • applicationScope
  3. EL 中 pageContext 对象有啥作用
    • 可以获取其它对象
    • ${ pageContext.request.contextPath }
  4. EL 如何显示 Student 的属性、list 中的元素、map 的元素
    • ${ 学生对象.属性名 }
    • ${ list[索引] }
    • ${ map.key }${ map["key"] }
      • name-abc
      • 1
  5. EL 中的 empty 运算符
    • 判断变量是否 null
    • 字符串 “”
    • 集合没有元素

JSTL

  1. <%@ taglib uri=".../jsp/jstl/core" prefix="c" %>

  2. 条件判断标签

    <c:if test="${条件}"></c:if>
    
  3. 循环标签

    <c:forEach items="${ 集合或数组 }" var="每个元素对应的临时变量名">
    	${临时变量名}
    </c:forEach>
    

mvc 概念

  • model 模型(数据)例如 student
  • view 视图(展示数据) 例如 jsp
  • controller 控制器 (联系模型和视图)例如 servlet
  • 它们如何结合

过滤器

  1. 定义和配置过滤器

    @WebFilter("/过滤的资源路径")
    public class 过滤器类 implements Filter {
        
        public void doFilter(request, response, FilterChain chain) {
            // 放行
            chain.doFilter(request, response);
        }
        
    }
    
  2. 如何放行请求,如何拦截请求

  3. 多个过滤器的拦截顺序

    • 按过滤器的类名字排序,从小到大依次过滤(注解方式)

今日内容

1. 过滤器 xml 配置(*)

<filter>
	<filter-name></filter-name>
    <filter-class>类的全路径</filter-class>
    <init-param>
    	<param-name>初始化参数名</param-name>
        <param-value>初始化参数值</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name></filter-name>
    <url-pattern>/过滤资源路径</url-pattern>
</filter-mapping>
  • xml 方式的过滤器执行顺序就是 filter-mapping 的先后顺序(*)

  • FilterConfig.getInitParameter(“初始化参数名”) 返回 初始化参数值

2. 过滤器拦截位置(了解)

  • request
  • forward
  • include
  • error
  • async
<error-page>
    <exception-type>异常类型</exception-type>
    <location>/错误页面</location>
</error-page>

<error-page>
    <error-code>错误状态码(404,500)</error-code>
    <location>/错误页面</location>
</error-page>

3. 监听器的分类(了解)

事件(应用程序启动、应用程序停止、request对象创建,session对象创建,session对象销毁)

  • ServletContextListener(*)

    @WebListener
    public class 监听器类 implements ServletContextListener{
        public void contextInitialized(ServletContextEvent event) {
            // event 获取刚刚创建的 ServletContext 对象
            event.getServletContext();
        }
        public void contextDestroyed(ServletContextEvent event) {
            // event 获取即将被销毁的 ServletContext 对象
        }
    }
    

    合称 web 三大组件(servlet,filter,listener)也可以xml方式来配置监听器:

    <listener>
        <listener-class>监听器类全路径</listener-class>
    </listener>
    
  • HttpSessionListener

  • ServletRequestListener

  • ServletContextAttributeListener

  • HttpSessionAttributeListener

  • ServletRequestAttributeListener

    • 当 调用 setAttribute、removeAttribute 时就会触发以上监听器相应的事件
  • HttpSessionBindingListener

// Student stu = new Student()
// session.setAttribute("student", stu);
// session.removeAttribute("student");
public class Student implements HttpSessionBindingListener {

    @Override
    public void valueBound(HttpSessionBindingEvent event) {
        // 当此对象被放入 session 域时执行
    }

    @Override
    public void valueUnbound(HttpSessionBindingEvent event) {
        // 当此对象从 session 域移除时执行
    }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IxaBoZmz-1597661201142)(imgs/image-20200817113039273.png)]

类似于 Student 这样的对象如果要存入 session,必须实现 Serializable 接口,否则不能配合钝化和活化的功能使用了(了解)

mysql

sql 结构化 structured 查询 query 语言

  • oracle
  • mysql
  • sql server

1. 介绍及安装

mysql 客户端软件

  • sqlyog
  • navicat

database 数据库

table 表

row record 行

column 列

data 数据

dba database administrator

2. SQL 语句

ddl - 创建库表,修改库表,删除库表
create database [if not exists] 库名 [character set 字符集];

alter database 库名 character set 新字符集

drop database [if exists] 库名;

show databases;  -- 查看所有库表

show create database 库名; -- 查看某个库建库语句

use 库名;

查看表的字符集

show create table user \G

表数据类型(*)

int - 4个字节的整数

tinyint - 1个字节 - byte

smallint - 2个字节 - short

bigint - 8个字节 - long

varchar(最大长度) - 字符串 例如 varchar(10) 意思就是最多能存储10字符

datetime 范围较大

timestamp 不推荐,范围小

重点

create table 表名 (1 类型 [约束],2 类型 [约束],
    ...
	列n 类型 [约束]
) [character set 字符集];

了解(都可以通过图形界面完成)

alter table 表名 rename to 新表名;  -- 修改表名
alter table 表名 add 新列名 类型 [约束];  -- 添加列
alter table 表名 modify 列名 新类型 [新约束];  -- 修改列
alter table 表名 drop 列名;  -- 删除列
alter table 表名 change 旧列名 新列名 新类型 [新约束];  -- 修改列

desc 表名; -- 查看表中有哪些列

drop table [if exists] 表名; 

show tables; -- 查看有哪些表

show create table 表名; -- 查看建表语句(包括字符集)
dml - 增删改数据(*)
dql - 查询数据(*)
dcl - 权限管理

3. 约束

dify 列名 新类型 [新约束]; – 修改列
alter table 表名 drop 列名; – 删除列
alter table 表名 change 旧列名 新列名 新类型 [新约束]; – 修改列

desc 表名; – 查看表中有哪些列

drop table [if exists] 表名;

show tables; – 查看有哪些表

show create table 表名; – 查看建表语句(包括字符集)

6. 多表

  • 多表关系
    • 一对一 外键加在哪一边都可以,但是外键必须配合唯一约束一起使用
    • 多对一 外键必须加在多的的一方
    • 多对多 引入一张中间表,中间表中有两个外键,分别引用另两张表的主键(被拆分为两个一对多关系)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值