区块链技术博客
www.b2bchain.cn

黑马JavaWeb基础听课笔记(二)

这篇文章主要介绍了黑马JavaWeb基础听课笔记(二)的讲解,通过具体代码实例进行17720 讲解,并且分析了黑马JavaWeb基础听课笔记(二)的详细步骤与相关技巧,需要的朋友可以参考下https://www.b2bchain.cn/?p=17720

本文实例讲述了2、树莓派设置连接WiFi,开启VNC等等的讲解。分享给大家供大家参考文章查询地址https://www.b2bchain.cn/7039.html。具体如下:

JSP

    • JSP
      • 指令
      • 注释
    • MVC开发模式
    • EL表达式
    • JSTL
    • 三层架构
    • Filter
    • 增强对象的功能
    • Listener

JSP

指令

作用:用于配置JSP页面,导入资源文件

格式:

<%@ 指令名称 属性名1 = 属性值1 属性名2 = 属性值2 ... %>

分类:

  1. page:配置JSP页面

    • contentType:等同于response.setContentType()

      1. 设置响应体的mime类型及字符集

      2. 设置当前jsp页面的编码(只能是高级的IDE才能生效,如果使用低级工具,则需要设置pageEncoding属性设置当前页面的字符集)

    • import:导包

    • errorPage:当前页面发生异常后会自动跳转到指定的错误页面

    • isErrorPage:标识当前也是否是错误页面

      • true:是,可以使用内置对象exception
      • false:否,默认值。不可以使用内置对象exception
  2. include:页面包含的。导入页面的资源文件

    <%@include file="top.jsp"%>

  3. taglib:导入资源

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jsl/core" %>

    prefix:前缀,自定义

注释

  1. html注释:

    :只能注释html代码片段

  2. jsp注释:推荐使用

    <%– –%>:可以注释所有

  3. 内置对象

    • 在jsp页面中不需要创建,直接使用的对象

    • 一个有9个:

      变量名 真实类型 作用
      pageContext PageContext 当前页面共享数据,还可以获取其他八个内置对象
      request HttpServletRequest 一次请求访问的多个资源(转发)
      session HttpSession 一次会话的多个请求间
      application ServletContext 所有用户间共享数据
      response HttpServletResponse 响应对象
      page Object 当前页面的对象 this
      out JspWriter 输出对象,数据输出到页面上
      config ServletConfig Servlet的配置对象
      exception Throwable 异常对象

MVC开发模式

MVC(Model View Controller)

黑马JavaWeb基础听课笔记(二)

优点:

  1. 耦合性地,为方便维护,可以利于分工协作
  2. 重用性高

缺点:

  1. 使得项目架构变得复杂,对开发任意要求高

EL表达式

  1. 概念:Expression Language 表达语言

  2. 作用:替换和简化jsp页面中代码的编写

  3. 语法:${表达式}

  4. 注意:

    jsp默认支持EL表达式,如果要忽略EL表达式

    1. 设置jsp中page指令:isELIgnored="true"忽略当前jsp页面所有的EL表达式
    2. ${表达式}:忽略当前这个EL表达式
  5. 使用

    1. 运算

      1. 运算符
        1. 算术运算符
        2. 比较运算符
        3. 逻辑运算符
        4. 空运算符:empty
          1. 功能:用于判断字符串、集合、数组对象是否为null并且长度是否为0
          2. ${empty list}
    2. 获取值

      1. EL表达式只能从域对象获取值

        1. 域名称:

          pageScope pageContext
          requestScope request
          sessionScope session
          applicationScope application(ServletContext)
        2. 举例:在request域中存储了name=张三

        3. 获取:${requestScope.name}

      2. ${键名}:表示一次从最小的域中去查找是否有该键对应的值,直到找到为止。

    3. 获取对象、List集合、Map集合的值

      1. 对象:${域名称.键名.属性名}

      2. List集合:${域名称.键名[索引]}

      3. Map集合:

        ${域名称.键名.key名称}

        ${域名称.键名[“key名称”]}

JSTL

JSP标准标签库(JavaServer Pages Tag Library),由Apache提供的开源jsp标签

作用:用于简化和替换jsp页面上的java代码

使用步骤:

  1. 导入jstl相关jar包
  2. 引入标签库:taglib指令:<%@ taglib %>
  3. 使用标签库

常用JSTL标签

  1. if

    1. 属性
      1. test:必须属性,接受bool表达式,如果为true,则显示标签体内容;如果为false,则不显示标签体内容。
      2. 注意:c:if标签没有else情况,想要else可以再定义一个c:if标签
  2. choose:相当于java代码的switch语句

    <%  	request.setAttribute("number", 1) %> <c:choose>     <c:when test="${number == 1}">星期一</c:when>     <c:when test="${number == 2}">星期二</c:when>     <c:when test="${number == 3}">星期三</c:when>     <c:when test="${number == 4}">星期四</c:when>     <c:when test="${number == 5}">星期五</c:when>     <c:when test="${number == 6}">星期六</c:when>     <c:when test="${number == 7}">星期天</c:when> </c:choose> 
  3. foreach

    1. 完成重复操作

      属性:

      1. begin:开始值
      2. end:结束值
      3. var:临时变量
      4. step:步长
      5. varStatus:循环状态对象
      6. index:容器中元素的索引,从0开始
      7. count:循环次数,从1开始
    <c:forEach begin="1" end="10" var="i" step="1"> 	${i}<br> </c:forEach> 
    1. 遍历容器

      属性:

      1. items:容器对象
      2. var:容器中元素的临时变量
      3. varStatus:循环状态对象
      4. index:容器中元素的索引,从0开始
      5. count:循环次数,从1开始
      <% 	List list = new ArrayList(); 	list.add("aaa"); 	list.add("bbb"); 	list.add("ccc"); 	 	request.setAttribute("list", list); %>  <c:forEach items="{list}" var="str" varStatus="s">     ${s.index} ${s.count} ${str} <br> </c:forEach> 

三层架构

软件设计架构

  1. 界面层(表示层):用户看的界面。用户可以通过界面上的组件和服务器进行交互

  2. 业务逻辑层(service层)

  3. 数据访问层(dao层)

    黑马JavaWeb基础听课笔记(二)

Filter

过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能

过滤器的作用:

  1. 一般用于完成通过的操作。如:登录验证、统一编码处理、敏感字符过滤……

  2. 快速入门

    1. 步骤
      1. 定义一个类,实现接口Filter
      2. 复写方法
      3. 配置拦截路径
  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. 过滤器执行流程

    3. 过滤器生命周期方法

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

      1. 拦截路径配置

        1. 具体资源路径:/index.jsp 只有访问index.jsp资源时,过滤器才会被执行。
        2. 拦截目录:/user/* 访问/user下的所有资源时,过滤器都会被执行
        3. 后缀名拦截器:*.jsp 访问所有后缀名为jsp资源时,过滤器都会被执行。
        4. 拦截所有资源:/* 访问所有资源时,过滤器都会被执行。
      2. 拦截方式配置:资源被访问的方式

        1. 注解配置

          1. 设置dispatcherTypes属性

            1. REQUEST:默认值
            2. FORWARD:
            3. INCLUDE:
            4. ERROR:
            5. ASYNC:
        //浏览器直接请求index.jsp资源时,该资源会被执行 @WebFilter(value="/index.jsp", dipatcherTypes = DispatcherType.REQUEST) //只有转发访问index.jsp时,该过滤器才会被执行 @WebFilter(value="/index.jsp", dispatcherTypes = DispatcherType.FORWARD) //浏览器直接请求index.jsp或者直接转发访问index.jsp。该过滤器才会被执行。 @WebFilter(value="/*", dispatcherTypes = {DispatcherType.FORWARD, DispatcherType.REQUEST}) 
    5. 过滤器链(配置多个过滤器)

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

增强对象的功能

设计模式:一般用于解决固定问题的方式

  1. 装饰模式

  2. 代理模式

    1. 概念

      1. 真实对象:被代理的对象
      2. 代理对象:
      3. 代理模式:代理对象代理真实对象,达到增强对象功能的目的
    2. 实现方式

      1. 静态代理:有一个类文件描述代理模式

      2. 动态代理:在内存中形成代理类

        1. 实现步骤

          1. 代理对象和真实对象实现相同的接口

          2. 代理对象 = Proxy.newProxyInstance();

            newProxyInstance()方法的三个参数:

            1. 类加载器:真实对象.getClass().getClassLoader()
            2. 接口数组:真实对象.getClass().getInterfaces()
            3. 处理器:new InvocationHandler()
          3. 使用代理对象调用方法

          4. 增强方法

        public staic void main(String[] args) { 	//1.创建真实对象     Lenovo lenovo = new Lenovo();     //2.动态代理增强对象lenovo对象     SaleComputer proxy_lenovo = (SaleComputer)Proxy.newProxyInstance(lenovo.getClass().getClassLoader(), lenovo.getClass().getInterfaces(), new InvocationHandler() {         /*代理逻辑编写的方法:代理对象调用的所有方法都会触发该方法执行         	参数:         	1. proxy:代理对象         	2. method:代理对象调用的方法,被封装为的对象         	3. args:代理对象调用方法时,传递的实际参数         */         @Override         public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {             return null;         }     });          //3.调用方法     String computer = proxy_lenovo.sale();     System.out.println(computer); } 
        1. 增强方式:
          1. 增强参数列表
          2. 增强返回值类型
          3. 增强方法体执行逻辑

Listener

监听器,web的三大组件之一。

事件监听机制

  • 事件:一件事情
  • 事件源:事件发生的地方
  • 一个对象
  • 注册监听:将事件、事件源、监听器绑定在一起。当事件源上发生某个事件后,执行监听器代码。

ServletContextListener:监听ServletContext对象的创建和销毁

  • void contextDestroyed(ServletContextEvent sce)ServletContext对象被销毁之前会调用该方法。
  • void contextInitialized(ServletContextEvent sce)ServletContext对象创建后会调用该方法。

本文转自互联网,侵权联系删除黑马JavaWeb基础听课笔记(二)

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 黑马JavaWeb基础听课笔记(二)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们