• JSP学习笔记


         好久没写文章了,虽然大家现在都在说jsp可以不用学了,但是难免以后会遇到,所以我就学了。

      其实jsp我很早就学了,但是我忘了,所以决定写篇文章来复习巩固一下;

      下面先放一张jsp的主要知识点吧,关于EL表达式JSTL标签库的内容下次再补上;

    一、JSP是什么?有什么用?

      JSP的全称是Java Server Pages。也就是Java的服务器页面。

      其主要作用是:代替Servlet程序回传html页面的数据。因为Servlet回传html页面是一件非常麻烦的事情,所以就有了jsp。

    二、JSP的本质是什么?

      JSP的本质是一个Servlet程序。当我们在浏览器上第一次访问这个jsp页面的时候,Tomcat服务器会帮我们把所访问的jsp页面翻译成

    一个Java源文件,并且编译成.class字节码文件。

       打开Tomcat的解压目录,apache-tomcatworkCatalinalocalhostROOTorgapachejsp就会发现下面两个文件:

     

       接着打开index.java文件,我们惊奇的发现,jsp这个类继承了HttpJspBase类,而HttpJspBase类继承了HttpServlet类,这就是jsp的本质。

    三、JSP的三种语法

      (1)我们先讲头部的page指令。要想使用jsp得先写这个才行!

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>

      这个page有如下几个属性:

        i.    language:           表示jsp翻译过后是什么语言,目前为止只有Java语言支持。(看来曾经jsp还是很有野心的)

        ii.   contentType:      表示jsp返回的数据类型是什么,等同于response.setContentType()参数值。

        iii.   pageEncoding:  表示当前jsp文件的字符集。

        iV.   import:    和Java中的import一样,用于导包和导类。

        V.    autoFlush:   设置当out输出缓冲区满了以后是否自动刷新缓冲区的。默认值是true,也就是刷新。改为false当缓冲区满会报错。

        Vi.   buffer:    设置out缓冲区的大小,经过sun公司不停实验,默认值8kb是最好的。

        Vii.  errorPage:  设置当jsp页面运行出错时,自动跳转去的错误页面路径。

        Viii.  isErrorPage:   设置当前jsp页面是否是错误页面。默认为false,设置为true可获取异常信息。

        iX. session:   设置访问当前jsp页面是否会创建HttpSession对象,默认为true。

        X. extends:   设置jsp翻译出来的Java类继承谁。

      (2)常用脚本:

        1)声明脚本: <%!  声明类属性、static静态代码块、声明类方法、声明内部类  %>  (极少使用

        2)表达式脚本:<%= 表达式(整型、浮点型、字符串、对象) %>  

          作用:可以在jsp页面上输出数据 (常用,但是我们一般用EL表达式替换它)

          注意:  1、所有的表达式脚本都会被翻译到_jspService()方法中,该方法在jsp翻译出来的类中。

               2、表达式脚本都会被翻译到out.print()输出到页面上。

               3、被翻译到_jspService()方法中,所以该方法中的所有对象都可以直接使用。

               4、表达式脚本不能用分号结尾。

             3)代码脚本:<% Java语句 %>  (常用,但是我们会用JSTL标签库替换它)

          作用:可以在jsp页面中,编写我们自己需要的功能。比如实现一个九九乘法口诀表。

          注意:1、2、点同上。

             3、可以由多个代码脚本组合在一起完成一个完整的Java语句(写出来的代码可读性差

             4、可以和表达式脚本组合起来使用。

      (3)三种注释

          i.  html注释  <!--  这是注释 -->

          ii. java注释  单行注释和多行注释都可以用,不过要写在代码脚本中

          iii.真正的jsp注释   <%-- jsp注释  --%>  可以注释掉上面两种注释

    四、九大内置对象

      ①request      请求对象     ②response   响应对象   ③pageContext   jsp的上下文对象    ④session    会话对象    ⑤application    ServletContext对象

      ⑥config      ServletConfig对象      ⑦out    jsp输出对象    ⑧page    指向当前jsp的对象      ⑨exception   异常对象

      这九个对象其中的四大域对象是比较重要的。从上到下为从小到大的范围顺序。

      可以通过   XX对象.setAttribute(key,value)的方式往域中保存数据,也可以通过getAttribute(key)得到数据

        pageContext    当前jsp页面内有效

        request             一次请求内有效

        session             一次会话内有效,关掉浏览器就没了

        application  整个web工程内有效,除非web工程停止或者服务器重新部署

    五、jsp中的out输出和response.getWriter输出的区别

      首先jsp的翻译文件都是通过out来进行输出的,所以我们一般也用out

      这里一共牵扯到三种方法:

        ①out.write()   输出字符串没问题,但是其他数据类型有问题。翻译的源码中也是用的这个

        ②out.print()   输出任意数据都没有问题都是通过转换成为字符串以后调用的write()方法输出

        ③response.getWriter().write()  

          当jsp中的所有代码执行完成后会执行out.flush()操作,然后将out缓冲区中的数据追加写入到response缓冲区末尾,

          然后执行response的刷新操作,把所有数据写给客户端。所以会导致response的输出内容总在out的输出内容前面

    六、jsp常用标签

      a)jsp静态包含    

      <%@  include  file="/include/footer.jsp" %>

        特点:

           1、静态包含不会翻译被包含的jsp页面

           2、静态包含其实就是把被包含的jsp页面的代码拷贝到包含的位置执行输出。

           3、file属性指定要包含的jsp页面的路径,其中的第一个/映射到你的web目录。

      b)jsp动态包含   

          <jsp:include page="/include/footer.jsp">

            <jsp:param name="username" value="root"/>

          </jsp:include>

        特点:

          1、page属性是你要包含的jsp页面,也翻译成Java代码。也把被包含的内容执行输出到包含位置。

          2、动态包含底层调用如下代码去调用被包含的jsp页面执行输出。

     

    JspRuntimeLibrary.include(request,response,"/include/footer.jsp",out,false);

          3、动态包含可以传递参数,如上面代码所示。

      c)请求转发标签

        <jsp:forward page=""></jsp:forward>

        page里面写你要转发的路径。

    以上就是本期jsp的全部内容啦,感谢大家查看。

  • 相关阅读:
    【转】用Linux命令行获取本机外网IP地址
    【转】5 Best Place to Learn Linux – Linux Tutorial Sites
    【转】linux shell 逻辑运算符、逻辑表达式详解
    ftp
    修改/创建计算机用户名、密码
    SCRIPT429: Automation 服务器不能创建对象
    Tomcat 加载外部dll时如何配置
    查看电脑MAC地址
    访问windows共享无法分配内存问题解决
    打包
  • 原文地址:https://www.cnblogs.com/xzhm/p/12629179.html
Copyright © 2020-2023  润新知