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)
posted @ 2018-10-17 00:20  周世元ISO8859-1  Views(184)  Comments(0Edit  收藏  举报