0
点赞
收藏
分享

微信扫一扫

20220424第9周JavaWeb学习笔记

迪莉娅1979 2022-04-24 阅读 32
javaweb

day17

EL表达式

  1. 概念:Expression Language 表达式语言
  2. 作用:替换和简化jsp页面中java代码的编写
  3. 语法:${表达式}
  4. 注意:
    • jsp默认支持el表达式的,如果要忽略el表达式
      1. 设置jsp中page指令中:isELIgnored=“true” 忽略当前jsp页面中所有的el表达式
      2. \${表达式}:忽略当前这个el表达式
  5. 使用:
    1. 运算
      • 运算符:
        1. 算术运算符:+ - * / (div) %(mod)
        2. 比较运算符:> < >= <= == !=
        3. 逻辑运算符:&&(and) ||(or) !(not)
        4. 空运算符:empt
          • 功能:用于判断字符串、集合、数组对象是否为null并且长度是否为0
          • ${empty list}
    2. 获取值
      1. el表达式只能从域对象中获取值
      2. 语法:
        1. ${域名称.键名}:从指定域中获取指定键的值
          • 域名称:
            1. pageScope -->pageContext
            2. requestScope -->request
            3. sessionScope -->session
            4. applicationScope -->application(ServletContext)
          • 举例:在request域中存储了name=张三
          • 获取:${requestScope.name}
        2. ${键名}:表示一次从最小的域中查找是否有该键对应的值,直到找到为止
        3. 获取对象、List集合、Map集合的值
          1. 对象:${域名称.键名.属性名}
            • 本质上回去调用对象的getter方法
          2. List集合:${域名称.键名[索引]}
          3. Map集合:
            • ${域名称.键名.key名称}
            • ${域名称.键名[“key名称”]}
      3. 隐式对象:
        • el表达式中有11个隐式对象
        • pageContext:
          • 获取jsp其它八个内置对象
          • ${pageContext.request.contextPath}:动态获取虚拟目录

JSTL

  1. 概念:JavaServer Pages Tag Library JSP标准标签库
    • 是由Apache组织提供的开源的免费的jsp标签 <标签>
  2. 作用:用于简化和替换jsp页面上的java代码
  3. 使用步骤:
    1. 导入jstl相关jar包
    2. 引入标签库:taglib指令:<%@ taglib %>
    3. 使用标签
  4. 常用的JSTL标签
    1. if :相当于java代码的if语句
      1. 属性:
        • test 必须属性,接受Boolean表达式
          • 如果表达式为true,则显示if标签体内容,如果为false,则不显示标签体内容
          • 一般情况下,test属性值会结合el表达式一起使用
      2. 注意:c:if标签没有else情况,想要else情况,则可以再定义一个c:if标签
    2. choose :相当于java代码的switch语句
      1. 使用choose标签声明 相当于switch声明
      2. 使用when标签做判断 相当于case
      3. 使用otherwise标签做其他情况的声明 相当于default
    3. foreach :相当于java代码的for语句
  5. 练习:
    • 需求:在request域中有一个存有User对象的List集合。需要使用jstl+el将list集合数据展示到jsp页面的表格table中

三层架构:软件设计架构

  1. 界面层(表示层):用户看到的界面。用户可以通过界面上的组件和服务器进行交互
  2. 业务逻辑层:处理业务逻辑的
  3. 数据访问层:操作数据存储文件

案例:用户信息列表展示

  1. 需求:用户信息的增删改查操作

  2. 设计:

    1. 技术选型:Servlet+JSP+MySQL+JDBCTemplate+Duird+BeanUtilS+tomcat

    2. 数据库设计:

      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)
      );
      
    3. 开发:

      1. 环境搭建
        1. 创建数据库环境
        2. 创建项目,导入需要的jar包
      2. 编码
    4. 测试

    5. 部署运维

day 18

综合练习

  1. 简单功能
    1. 列表查询
    2. 登录
    3. 添加
    4. 删除
    5. 修改
  2. 复杂功能
    1. 删除选中
    2. 分页查询
    3. 复杂条件查询

day 19

Filter:过滤器

  1. 概念:

    • 生活中的过滤器:净水器,空气净化器,土匪x
    • web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能
    • 过滤器的作用:
      • 一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤
  2. 快速入门:

    1. 步骤:

      1. 定义一个类,实现接口Filter
      2. 复写方法
      3. 配置拦截路径
        1. web.xml
        2. 注解
    2. 代码:

      
      
    3. 过滤器细节:

      1. 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>
        
      2. 过滤器执行流程

        1. 执行过滤器
        2. 执行放行后的资源
        3. 回来执行过滤器放行代码下边的代码
      3. 过滤器生命周期方法

        1. init:在服务器启动后,会创建Filter对象,然后调用init方法。只执行一次。用于加载资源
        2. doFilter:每一次请求被拦截资源时,会执行,且执行多次
        3. destroy:在服务器关闭后,Filter对象被销毁。如果服务器是正常关闭,则会执行destroy方法。只执行一次,用于释放资源
      4. 过滤器配置详解

        • 拦截路径配置:
          1. 具体资源路径:/index.jsp 只有访问index.jsp资源时,过滤器才会被执行
          2. 拦截目录:/user/* 访问/user下的所有资源时,过滤器都会被执行
          3. 后缀名拦截:*.jsp 访问所有后缀名为jsp的资源时,过滤器都会被执行
          4. 拦截所有资源:/* 访问所有资源时,过滤器都会被执行
        • 拦截方式配置:资源被访问的方式
          • 注解配置:
            • 设置dispatcherTypes属性
              1. REQUEST:默认值。浏览器直接请求资源
              2. FORWARD:转发访问资源
              3. INCLUDE:包含访问资源
              4. ERROR:错误跳转资源
              5. ASYNC:异步访问资源
          • web.xml配置
            • 设置<dispatcher></dispatcher>标签即可
      5. 过滤器链(配置多个过滤器)

        • 执行顺序:如果有两个过滤器:过滤器1和过滤器2
          1. 过滤器1
          2. 过滤器2
          3. 资源执行
          4. 过滤器2
          5. 过滤器1
        • 过滤器先后顺序问题:
          1. 注解配置:按照类名的字符串比较规则比较,值小的先执行
            • 如:AFilter和BFilter,AFilter就先执行了
          2. web.xml配置:<filter-mapping>谁定义在上边,谁先执行
    4. 案例:

      1. 案例1_登录验证
        • 需求:
          1. 访问day_17case案例的资源。验证其是否登录
          2. 如果登录了,则直接放行
          3. 如果没有登录,则跳转到登录页面,提示"您尚未登录,请先登录"
      2. 案例2_敏感词汇过滤
        • 需求:
          1. 对day_17case案例录入的数据进行敏感词汇过滤
          2. 敏感词汇参考《敏感词汇.txt》
          3. 如果是敏感词汇,替换为 ***
        • 分析:
          1. 对request对象进行增强。增强获取参数相关方法
          2. 放行。传递代理对象
        • 增强对象的功能:
          • 设计模式:一些通用的解决固定问题的方式
            1. 装饰模式
            2. 代理模式
              • 概念:
                1. 真实对象:被代理的对象
                2. 代理对象:
                3. 代理模式:代理对象代理真实对象,达到增强真实对象功能的目的
              • 实现方式:
                1. 静态代理:有一个类文件描述代理模式
                2. 动态代理:在内存中形成代理类
                  • 实现步骤:
举报

相关推荐

0 条评论