J2EE——Jsp的学习

           JSPJava  Server PageJava服务端网页,是一种动态的网页技术,这和.NET中的ASP的功能是一样的。JSP是由sun规定的一套标准一套规范,也是J2EE13规范之一。说一句不太正确的话“JSP是对HTML的一种升级,一种扩展,即由静态——>动态”。

 

          一,好,简单了解JSP概念以后,我们来看看JSP的原理和本质:


                1,先看一个实例,我们在访问主页这个Index.jsp时,程序的执行顺序:



             2,由上边这个实例得出的JSP的原理和本质:

                上例中的index_jsp.class类继承了HttpJspBase,HttpJspBase继承了HttpServlet,所以JSP本质就是一个Servlet,和Servlet完全相同。Jsp有三个阶段:翻译(一次),编译(一次),运行(多次)。这也就说明了,为什么我们第一次访问Jsp页面的时候运行的比较慢,而以后访问速度都非常快的原因。但是两者是有很大的区别的:JSP提取数据做页面展示,也就是所谓的View(展示层),而Servlet主要完成业务逻辑处理和资源跳转,也就是所谓的Controller(控制层)

 


          二,既然是J2EE13规范之一,那么JSP有哪些规定的基础语法呢?



              这几个都是需要我们来来遵循的规范,而其中九大内置对象尤其非常的重要,下边我简单介绍一下,这几块的知识点:


          1scriptlet(小脚本):就是在jsp文件中使用<% %>,出现在该符号中的Java程序翻译之后会被放在ServletService方法中。也就是说这里边可以放我们想要知识的java程序。


          2declaration(声明):就是在jsp文件中使用<%  %>出现在该符号内的java程序翻译之后会被存放在和Servletservice方法并列的位置上。所以可以在该符号内声明静态变量、静态方法、静态代码块、实例代码块、实例变量、实例方法。


          3expression(表达式):就是在jsp文件中使用<%= %>,相当于out.print();,一般需要我们打印变量是需要在这里,因为JSP里边的全部是字符串。


          4,指令(directive:JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分,例如一些编码方式,响应方式等。

           a,最常见的page指令<%@page  %>

  • import属性(翻译生成java语言中的import语句)
    • <%@page import=”java.util.Date,java.util.ArrayList”%>
  • contentType属性(指定JSP页面响应内容类型)
    • <%@page contentType=”text/html”%>
  • pageEncoding属性(指定JSP页面响应的页面字符编码)
    • <%@page pageEncoding=”GB18030”%>
  • session属性(指定当前JSP页面是否可以使用session这个内置对象)
    • <%@page session=”false”%> session内置对象不可用
    • <%@page session=”true”%> session内置对象可用(缺省的
  • errorPage属性(指定当前JSP页面发生错误之后跳转的资源路径)
  • isErrorPage属性(指定当前JSP页面是一个错误页面,这样才能使用内置对象exception
  • isELIgnored属性指定当前页面中如果有EL表达式是否忽略,true表示忽略,false表示不忽略

 

         binclude指令<%@include  %>:

      include指令表示静态包含,例如在a.jsp中编写了<%@include file=”b.jsp”%>,就表示将a.jsp翻译之后的java源程序和b.jsp翻译生成的java源程序合并在一起,然后将其编译生成一个.class文件。我们通常采用这种方式做到页面的重复使用。有点类似.NET中的母版页。

        

          c,taglib指令 <%@taglib%>:

               为了让JSP看起来更加的专业(只做页面展示),减少jsp页面中java代码的数量,我们引入了标签库。这里的标签库可以是JSTL函数库,也可以是我们自己编写的。关于JSTL参考JSTL百度

 

         5,动作(Action

             aforward动作:

        <jsp:forward page=”/2.jsp” />

         转发:等同Servlet

        request.getRequestDispatcher(/2.jsp).forward(req,resp)方法。


    b,include动作(注意和include指令的对比,一个是静态包含,一个是动态包含)  

   <jsp:includepage="/b.jsp"></jsp:include>

   include动作表示动态包含,假如在a.jsp页面中编写了以上代码,运行原理是将a.jsp文件 翻译成java源程序并且将其编译生成a.class文件,将b.jsp文件翻译生成java源程序,编译生成b.class文件,然后通过a.class去动态包含b.class


  c,useBeansetPropertygetProperty动作

 <useBean id=”c” class=”完整类名”scope=page/request/session/application />

 <setProperty name=”c” property=”name” value=”jack” />

 <getProperty name=”c” property=”name” />

 

    useBeansetPropertygetProperty动作是为了简化在JSP页面中的java代码,创建java对象为useBean动作.分别为在某个范围对象中创建某个usebean类,给摸个属性赋值,读取摸个属性的。

 


6,来看一下JSP中的九大内置对象吧,既然是内置对象也就是说这些对象在JSP底层的java程序中已经声明了这几个对象,我们可以直接使用的:更多九大内置对象


 

          7ELExpression   Language)表达式:主要也是为了减少JSP页面中的JAVA代码,使之更加专业做起页面显示作用:

             表达式:${}

            作用:主要是从范围对象中取数据,用来显示在JSP页面上

            例子:

         request.setAttribute(sysTime,new Date()); //

<%=request.getAttribute(“sysTime”)%>//取数据并输出到浏览器

       ${sysTime} //使用EL表达式取数据并输出到浏览器

 具体的EL表达式的用法,参看这篇博客:EL表达式

 

 

    综上为JSP的简单总结,JSP就是Java Web程序中的动态页面显示层,起到了与用户交互的作用,而里边这些语法也好,规范也好,都需要我们按照这些来编写。

 


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。