day17
EL表达式
- 概念:Expression Language 表达式语言
 - 作用:替换和简化jsp页面中java代码的编写
 - 语法:${表达式}
 - 注意: 
  
- jsp默认支持el表达式的,如果要忽略el表达式 
    
- 设置jsp中page指令中:isELIgnored=“true” 忽略当前jsp页面中所有的el表达式
 - \${表达式}:忽略当前这个el表达式
 
 
 - jsp默认支持el表达式的,如果要忽略el表达式 
    
 - 使用: 
  
- 运算 
    
- 运算符: 
      
- 算术运算符:+ - * / (div) %(mod)
 - 比较运算符:> < >= <= == !=
 - 逻辑运算符:&&(and) ||(or) !(not)
 - 空运算符:empt 
        
- 功能:用于判断字符串、集合、数组对象是否为null并且长度是否为0
 - ${empty list}
 
 
 
 - 运算符: 
      
 - 获取值 
    
- el表达式只能从域对象中获取值
 - 语法: 
      
- ${域名称.键名}:从指定域中获取指定键的值 
        
- 域名称: 
          
- pageScope -->pageContext
 - requestScope -->request
 - sessionScope -->session
 - applicationScope -->application(ServletContext)
 
 - 举例:在request域中存储了name=张三
 - 获取:${requestScope.name}
 
 - 域名称: 
          
 - ${键名}:表示一次从最小的域中查找是否有该键对应的值,直到找到为止
 - 获取对象、List集合、Map集合的值 
        
- 对象:${域名称.键名.属性名} 
          
- 本质上回去调用对象的getter方法
 
 - List集合:${域名称.键名[索引]}
 - Map集合: 
          
- ${域名称.键名.key名称}
 - ${域名称.键名[“key名称”]}
 
 
 - 对象:${域名称.键名.属性名} 
          
 
 - ${域名称.键名}:从指定域中获取指定键的值 
        
 - 隐式对象: 
      
- el表达式中有11个隐式对象
 - pageContext: 
        
- 获取jsp其它八个内置对象
 - ${pageContext.request.contextPath}:动态获取虚拟目录
 
 
 
 
 - 运算 
    
 
JSTL
- 概念:JavaServer Pages Tag Library JSP标准标签库 
  
- 是由Apache组织提供的开源的免费的jsp标签 <标签>
 
 - 作用:用于简化和替换jsp页面上的java代码
 - 使用步骤: 
  
- 导入jstl相关jar包
 - 引入标签库:taglib指令:<%@ taglib %>
 - 使用标签
 
 - 常用的JSTL标签 
  
- if :相当于java代码的if语句 
    
- 属性: 
      
- test 必须属性,接受Boolean表达式 
        
- 如果表达式为true,则显示if标签体内容,如果为false,则不显示标签体内容
 - 一般情况下,test属性值会结合el表达式一起使用
 
 
 - test 必须属性,接受Boolean表达式 
        
 - 注意:c:if标签没有else情况,想要else情况,则可以再定义一个c:if标签
 
 - 属性: 
      
 - choose :相当于java代码的switch语句 
    
- 使用choose标签声明 相当于switch声明
 - 使用when标签做判断 相当于case
 - 使用otherwise标签做其他情况的声明 相当于default
 
 - foreach :相当于java代码的for语句
 
 - if :相当于java代码的if语句 
    
 - 练习: 
  
- 需求:在request域中有一个存有User对象的List集合。需要使用jstl+el将list集合数据展示到jsp页面的表格table中
 
 
三层架构:软件设计架构
- 界面层(表示层):用户看到的界面。用户可以通过界面上的组件和服务器进行交互
 - 业务逻辑层:处理业务逻辑的
 - 数据访问层:操作数据存储文件
 
案例:用户信息列表展示
-  
需求:用户信息的增删改查操作
 -  
设计:
-  
技术选型:Servlet+JSP+MySQL+JDBCTemplate+Duird+BeanUtilS+tomcat
 -  
数据库设计:
create database day17; use day17; create table user( id int primary key auto_increment, name varchar(20) not null, gender varchar(5), age int, address varchar(32), qq varchar(20), email varchar(50) ); -  
开发:
- 环境搭建 
      
- 创建数据库环境
 - 创建项目,导入需要的jar包
 
 - 编码
 
 - 环境搭建 
      
 -  
测试
 -  
部署运维
 
 -  
 
day 18
综合练习
- 简单功能 
  
- 列表查询
 - 登录
 - 添加
 - 删除
 - 修改
 
 - 复杂功能 
  
- 删除选中
 - 分页查询
 - 复杂条件查询
 
 
day 19
Filter:过滤器
-  
概念:
- 生活中的过滤器:净水器,空气净化器,土匪x
 - web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能
 - 过滤器的作用: 
    
- 一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤
 
 
 -  
快速入门:
-  
步骤:
- 定义一个类,实现接口Filter
 - 复写方法
 - 配置拦截路径 
      
- web.xml
 - 注解
 
 
 -  
代码:
 -  
过滤器细节:
-  
web.xml配置
<filter> <filter-name>demo1</filter-name> <filter-class>cn.itcast.web.filter.FilterDemo1</filter-class> </filter> <filter-mapping> <filter-name>demo1</filter-name> <!-- 拦截路径 --> <url-pattern>/*</url-pattern> <filter-mapping> -  
过滤器执行流程
- 执行过滤器
 - 执行放行后的资源
 - 回来执行过滤器放行代码下边的代码
 
 -  
过滤器生命周期方法
- init:在服务器启动后,会创建Filter对象,然后调用init方法。只执行一次。用于加载资源
 - doFilter:每一次请求被拦截资源时,会执行,且执行多次
 - destroy:在服务器关闭后,Filter对象被销毁。如果服务器是正常关闭,则会执行destroy方法。只执行一次,用于释放资源
 
 -  
过滤器配置详解
- 拦截路径配置: 
        
- 具体资源路径:/index.jsp 只有访问index.jsp资源时,过滤器才会被执行
 - 拦截目录:/user/* 访问/user下的所有资源时,过滤器都会被执行
 - 后缀名拦截:*.jsp 访问所有后缀名为jsp的资源时,过滤器都会被执行
 - 拦截所有资源:/* 访问所有资源时,过滤器都会被执行
 
 - 拦截方式配置:资源被访问的方式 
        
- 注解配置: 
          
- 设置dispatcherTypes属性 
            
- REQUEST:默认值。浏览器直接请求资源
 - FORWARD:转发访问资源
 - INCLUDE:包含访问资源
 - ERROR:错误跳转资源
 - ASYNC:异步访问资源
 
 
 - 设置dispatcherTypes属性 
            
 - web.xml配置 
          
- 设置<dispatcher></dispatcher>标签即可
 
 
 - 注解配置: 
          
 
 - 拦截路径配置: 
        
 -  
过滤器链(配置多个过滤器)
- 执行顺序:如果有两个过滤器:过滤器1和过滤器2 
        
- 过滤器1
 - 过滤器2
 - 资源执行
 - 过滤器2
 - 过滤器1
 
 - 过滤器先后顺序问题: 
        
- 注解配置:按照类名的字符串比较规则比较,值小的先执行 
          
- 如:AFilter和BFilter,AFilter就先执行了
 
 - web.xml配置:<filter-mapping>谁定义在上边,谁先执行
 
 - 注解配置:按照类名的字符串比较规则比较,值小的先执行 
          
 
 - 执行顺序:如果有两个过滤器:过滤器1和过滤器2 
        
 
 -  
 -  
案例:
- 案例1_登录验证 
      
- 需求: 
        
- 访问day_17case案例的资源。验证其是否登录
 - 如果登录了,则直接放行
 - 如果没有登录,则跳转到登录页面,提示"您尚未登录,请先登录"
 
 
 - 需求: 
        
 - 案例2_敏感词汇过滤 
      
- 需求: 
        
- 对day_17case案例录入的数据进行敏感词汇过滤
 - 敏感词汇参考《敏感词汇.txt》
 - 如果是敏感词汇,替换为 ***
 
 - 分析: 
        
- 对request对象进行增强。增强获取参数相关方法
 - 放行。传递代理对象
 
 - 增强对象的功能: 
        
- 设计模式:一些通用的解决固定问题的方式 
          
- 装饰模式
 - 代理模式 
            
- 概念: 
              
- 真实对象:被代理的对象
 - 代理对象:
 - 代理模式:代理对象代理真实对象,达到增强真实对象功能的目的
 
 - 实现方式: 
              
- 静态代理:有一个类文件描述代理模式
 - 动态代理:在内存中形成代理类 
                
- 实现步骤: 
                  
 
 - 实现步骤: 
                  
 
 
 - 概念: 
              
 
 
 - 设计模式:一些通用的解决固定问题的方式 
          
 
 - 需求: 
        
 
 - 案例1_登录验证 
      
 
 -  
 










