jsp简介、jsp指令元素

 1.jsp是什么
       java server page(JSP)
       后缀名以.jsp结尾的页面文件.
       .html文件是静态页面.
       .jsp 文件是动态页面.
 
    
     2.jsp页面中可以写哪些内容
        1.html标签
    2.css
    3.javascript
    4.java代码
    5.EL表达式
    6.jstl标签库

     3.jsp是如何工作的以及jsp的特点.
     1.jsp页面其实就是一个servlet。
     2.jsp页面的运行需要服务器的支持。
     3.服务器中的jsp引擎可以帮我们去运行jsp页面。
(注意并不是所有服务器都有这样的引擎的.引擎其实就是别人写的
支持jsp页面运行的jar包或者代码)
     4.jsp页面在运行之前,要经过几个步骤:首先jsp页
面要被翻译成.java文件,然后再编译成.class文件,最后再运行
这个.class文件.(创建这个类的对象,调用指定方法_jspService
,方法中把页面里面要显示的内容用io流一行行的写给浏览器)
     5.jsp翻译成的.java文件中,其实就是写了
一个servlet,在这个类中的方法里面,用io流,把jsp页面
中的内容一行一行的输出给了浏览器。因为这是在java类中的
方法里面做的事情,所有很多数据我们都可以用变量来表示,同
时也可以调用其他类中的方法.(在这里,jsp动态页面的效果也就体现出来.)
     6.运行jsp页面过程中,jsp引擎帮我们去翻译或
者编译成的.java文件和.class文件都保存在了tomcat中的work目录里面。
     7.通过上述jsp的特点可知,写完一个项目之后,
第一次部署运行的时候,整个项目的运行jsp速度会慢一些,因
为第一次访问运行jsp的时候,需要先翻译成.java文件然后
再编译成.class文件,最后再运行,这个过程会耗费一些时间
,但是第二访问运行的时候就会比较快了.

     8.访问项目中的一个jsp页面的时候,服务器首先会检
查你所访问的这个jsp页面是否存在,如果不存在,服务器直接给你
返回404,如果存在,服务器会进一步检查有没有和这个jsp页面
对应的.class文件,如果有的话就直接运行这个.class,如果没
有的话,则先把这个jsp页面翻译成.java,然后再编译成.class
,最后再运行这个.class文件.

     9.jsp页面其实就是在html页面中直接写上java代码
.但是,在一个jsp页面中,可以没有任何html的代码而只有java代
码,也可以没有任何java代码只有html的代码.

     10.servlet能做的事情jsp全能做。

    4.如何写一个jsp页面以及在页面中如何写java代码.
       jsp页面中主要写的东西分为三部分:

    1.jsp的脚本元素
         1.1表达式(expression)
        形式:<%= %>
        例如:<%="hello" %>
             <%=1+1 %>
             <%=s.getName() %>

        将来翻译到java文件中的位置:
        _jspService方法中的
        out.print(..)里面的参数.
        例如上面那几个例子会翻译成
        out.print("hello");
        out.print(1+1);
        out.print(s.getName());
        
        所以System.out.prntln()这个方法的参数可以写什么,那么我们这个jsp页面中表达式里面就可以写什么.

        注意:在jsp中的表达式里面不需要加;号。

         1.2脚本(scriptlet)
        形式:<% ... %>
             <%
            ....
             %>
        例如:
             <%
             Student s = new Student();

             String name = "tom";

             String username = s.getName();

             List<String> list = new ArrayList<String>();
             list.add("hello")
             
             %>
         将来翻译到java文件中的位置:
         脚本中的代码将来会被直接翻译到_jspService这个方法中.
         
         在一个方法中我们可以写什么样的代码,那么在脚本中就可
以写什么样的代码.

         注意:在脚本中所写的代码,代码的最后是要加上;号的.因为我们在一个方法里面所写的没一句代码后面都是要加;号。
         在脚本声明的变量,我们是可以在表达式里面使用的,但是要注意要先声明变量再使用变量.只要查看脚本和表达式分别翻译到java文件中的位置,就可以很清楚的认识到这一点.

         1.3声明(declaration)
        形式:<%!
            .....
             %>
        例如:
         <%!
            private String address;
    
            public String go(){
                System.out.println("hello world jd1307");
                return "this is go()";
            }
         
         %>

         将来翻译到java文件中的位置:
          直接将声明中的代码翻译到java文件里面所定义的类中。
          所以我们直接可以在一个类中写什么,就可以在声明中写什么.(一般在声明中会去定义一些类中的成员变量或者方法)

        注意:这里面的代码,定义变量的时候要加;号,定义方法的时候不用加;号,这是和我们写一个java类语法是一样的。
        
    2.jsp的指令元素
        jsp的指令是给jsp引擎看的,让jsp引擎在翻译jsp页
面成java文件的时候,知道需要注意哪些地方的设置.比如页面中
的编码、页面中脚本里面所用的编程语言、翻译的java文件中需
要引入哪些其他包下的java类等等.
        
        写法:
        <%@指令名字  属性="值" ..  %>

        page指令
          //表示当前页面中的编程语言是java,目前这个属性值只能写java
          language="java"

          //在当前页面中要引入哪些包下的类.
          import="java.util.HashMap"
          import="java.util.HashMap,java.sql.Connection"
          
          //设置jsp页面文件保存时候所用的编码
          pageEncoding="UTF-8"
          //设置服务器将来使用io把jsp页面内容一行一行的输出给浏览器的时候,使用什么编码向浏览器输出.
          contentType="text/html; charset=UTF-8"
          
          //设置jsp页面被翻译成java文件的时候,java文件中的类要继承那个父类.这个属性不用设置,jsp引擎会给它一个默认的父类去继承的.
          extends=""
          
          //设置当前这个jsp页面是否支持session对象的使用.默认是支持的.
          session="true"
          
          //设置jsp页面是否是线程安全的.
          isThreadSafe="true"
          
          //如果a.jsp页面中设置了errorPage="b.jsp",那么a.jsp页面在运行的时候一旦出错,就会自动跳转到b.jsp里面.
          errorPage=""
          
          //如果一个页面中设置了isErrorPage="true",那么就表示这个页面是用来专门显示错误信息的页面.
然后在这个页面中就能够使用到隐藏对象exception来显示出错误的信息了.
          isErrorPage=""


        include指令
        <%@include file="" %>
        作用:在当前页面中使用include指令可以把另外一个页面的内容引入到当前页面。
        
        一个页面包含/引入另外一个页面有俩种方式:静态包含 动态包含。
        这个include指令就属于静态包含
        
        静态包含特点:例如a.jsp页面中静态包含了b.jsp页面,
那么在翻译期间,jsp引擎在翻译a.jsp成为一个a_jsp.java文
件的时候,发现jsp页面中有include指令,这时候jsp引擎就会把
被包含的页面b.jsp中内容原封不动的拿到a_jsp.java中,然后用io输出出去.


        taglib指令
        作用:在当前jsp页面中引入一些特殊的标签
库.比如jstl标签库、struts2标签库等等.
        
 

猜你喜欢

转载自blog.csdn.net/bifuguo/article/details/82965015