• JSP


    JSP

    JSP简介

    • 什么是JSP
      • JSP全名为Java Server Pages
      • 中文名叫java服务器页面
      • 它是在传统的页面HTML文件(.htm,.html)中插入Java程序段和JSP标记
      • 后缀名为(*.jsp).
      • 其根本是一个简化的Servlet设计
    • 为什么要有JSP
      • 直接使用Html文件是没办法输出Java当中的信息
      • 使用servlet来去输出一个网页是非常麻烦的
      • 于是就出现了jsp,又能写html,又能写Java代码
    • JSP的工作原理
      • 设置JSP创建时的编码 -

      • 本质就是一个servlet

      • jsp在第一次被访问时会被Web容器编译成servlet

        • 第一次访问

        • index.jsp

        • index_jsp.java -

        • 编译成index_jsp.class运行 -

        • 可以在Tomcat的Work目录中可以找到

        • 下次访问时,会看到里面得到内容没有发生变化,如果变化了,从新翻译加载

        • 整个过程是全局web.xml当中有一个叫

      - 
    

      - 翻译过程就是jspServlet做的
    
    • JSP的组成部分
      • 静态数据,如HTML
      • JSP脚本元素和变量
      • JSP指令,如include指令
      • JSP标签动作

    JSP脚本元素和变量

    • 在JSP当中写Java代码
      • <%java代码%> - 内部的java代码翻译到service的内部
      • <%=java变量或表达式> - 会被翻译成service方法内部out.print()
      • <%!java代码> - 会被翻译成servlet的成员的内容
    • JSP注释
      • HTML注释: - 可见范围jsp源码 翻译后的servlet,页面中看不到
      • Java注释://单行注释/多行注释/ - 可见范围 jsp源码 翻译后的servlet,页面中看不到
      • Jsp注释:<%--注释内容--%> - 可见范围 jsp源码可见

    JSP指令

    • 什么是指令
      • JSP指令用于设置整个JSP页面的相关信息
      • 以及用于JSP页面与其他容器之间的通信
    • 有哪些指令
      • page指令
        • 用于设定整个JSP页面的属性和相关功能
        • page指令共有11个属性
          • contentType - contentType属性指定JSP页面MIME和编码格式
          • pageEncoding - pageEncoding属性来指定JSP文件的编码格式
          • import - 在JSP中引入Java的包和类,多个包之间以逗号隔开
          • session
            • 指定当前页面是否能获得当前用户的session对象
            • 缺省是true
            • 如果指定为false,那么在该页面中无法使用session,使用的话会提示500错误
          • errorPage
            • 如果当前页面发生异常
            • 网页会重定向到errorPage所指定的页面进行处理
          • isErrorPage - 允许指定的JSP页面为错误处理页面
          • language属性
            • 指定页面中使用的脚本语言种类
            • 目前只支持java
          • extends
            • 用于指定该JSP生成的servlet继承自哪个父类
            • 必须指定包名加类名
          • buffer
            • 用来设置输出流缓冲区
            • 缓冲区的作用就是为了提高IO性能
            • 也就是说减少write的次数
          • autoFlush - 用来指定当输出流缓冲区满了的时候,是否自动刷新缓冲区
          • isThreadSafe
            • 缺省值为true
            • 指定该JSP文件是否支持多线程访问
          • info - 用来设置该jsp文件的介绍信息
          • isELIgnored - 用来标示是否支持EL表达式
        • 多个属性之间使用空格隔开
      • include指令
        • 作用

          • 表示在JSP编译时插入一个包含文件或者代码文件
          • include指令所包含的文件名不能是一个变量url,只能是静态文件名 -
        • 静态包含 - 将两个jsp页面连接到一起,然后再翻译成servlet

      • taglib指令
        • 作用 - 声明JSP文件使用了标签库
        • 有哪些标签库
          • JSP标准标签库
          • 第三方标签库
          • 自定义标签库

    标签动作

    • 页面包含

      • 被包含 - 各自翻译自己的页面,然后再引入
    • 请求转发 -

    隐式对象

    • jsp被翻译成servlet之后,service方法中有9个对象定义并且初始化完毕 -

    • 可以直接使用这9个对象

      • out
        • out的类型:JSPWrite
        • out作用就是向客户端输出内容 out.write()
        • out缓冲区默认8kb
        • 可以设置0 代表关闭out缓冲区内容直接写到response缓冲区
        • out写的内容写到out缓冲区当中
        • 最后再把out缓冲区当中的内容合并到response缓冲区当中
      • request - 得到用户请求信息对象
      • response - 服务器向客户端的响应对象
      • config - 服务器配置,可以取得初始化参数
      • session - 用来保存用户会话得到信息
      • application - 所有用户的共享信息,就是servletContext
      • page - 指当前页面转换后的Servlet类的实例
      • pageContext
        • jsp页面的上下文对象
        • 是一个域对象
          • setAttribute(String name,Object obj)
          • getAttribute(String name)
          • removeAttribute(String name)
        • 可以向指定的其它域中存取数据
          • setAttribute(String name,Object obj,int scope) : setAttribute(“name”,"lk",PageContext.REQUEST_SCOPE);
          • getAttribute(String name,int scope) : getAttribute("lk",PageContext.REQUEST_SCOPE)
          • removeAttrbute(String name,int scope)
          • findAttribute(String name)
            • 自动到所有的域当中找数据
            • 从小到大的范围搜索数据
            • 依次从pageContext域,request域,session域,application域中获取属性
            • 在某个域中获取后将不在向后寻找
        • 可以获取其他8大隐式对象
          • pageContext.getRequest()
          • pageContext.getSession()
      • exception
        • 表示JSP页面所发生的异常,在错误页中才起作用
        • 只有是错误页的时候,才会有改对象

    商品列表

    • 需求
      • 从数据库当中取出对应商品展示到页面当中
    • 步骤
      • 件表

      • 建立ORM

      • 把相关jar拷贝到工程当中

      • 建立servlet

        • 1.连接数据库
        • 2.从数据库中获取数据
        • 3.把从数据库当中取出的数据存放到request域当中
        • 4.转发到商品列表页面,转发时把request对象传入 -
      • 转发到jsp

        • 1.从请求域当中把数据获取出来
        • 2.从集合当中获取每一个商品,展示到页面当中 -

    此处为从零玩转java之无web服务器课堂笔记,方便复习.

    最后推荐一个博客主 蚂蚁小强:https://www.cnblogs.com/myxq666/

    • 全栈视频学习网站:撩课学院(www.itlike.com)
  • 相关阅读:
    【2020-08-15】人生十三信条
    【2020-08-14】何太生气的第三天
    【中间件】MyCat读写分离、分库分表
    sort()方法的用法,参数以及排序原理
    理解Object.defineProperty的作用
    VMware Workstation 11 中 Ubuntu 14.04 的 VMware Tools 问题 :没有显示共享文件夹
    VMware Workstation 11 中 Ubuntu 14.04 的 VMware Tools 问题 :没有显示共享文件夹
    如何提高编程能力?
    如何提高编程能力?
    Xshell用鼠标选中一段文字后自动换行的问题
  • 原文地址:https://www.cnblogs.com/zhou-shi-yuan-ISO8859-1/p/9795530.html
Copyright © 2020-2023  润新知