zoukankan      html  css  js  c++  java
  • JSP入门

    一、什么是JSP?

      JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。

    1)为什么说,Servlet是一个动态Web开发技术呢?
      Servlet是基于服务端的一种动态交互技术,
      HttpServletRequest表示客户端到服务端的对象
      HttpServletResponse表示服务端到客户端的对象

    2)JSP是SUN公司开发的一个基于服务端的一种动态WEB开发技术

    3)JSP的代码结构/内容=HTML+JSP所有元素内容

    4)在IDE工具中,开发JSP,pageEncoding有二层含义:
      a)指明当前JSP中的中文采用什么方式编码(如果在IDE工具外)
      b)指明当前JSP页面保存时采用什么方式编码

    5)项目中,JSP最佳实践模式:

       Servlet:适合控制器

      JSP:适合显示

      JavaBean:模型

    二、JSP工作原理

      1)Web容器根据客户端访问的资源类别(Web容器会根据资源的第一行代码确定),如果你访问的是JSP资源,就交由JSP引擎处理如果你访问的是Servlet资源,就交由Servlet引擎处理

      2)如果是JSP资源,JSP引擎会将其翻译成Servlet资源,传入相关的对象,如果是静态资源,以out.write()形式输出,如果是动态资源,以out.print()形式输出

      3)此时JSP引擎在翻译正确后,将其输出给Servlet引擎,当作Servlet处理。

      4)如果再次访问同一个.jsp文件,翻译工作依然进行,Servlet引擎工作可以减化,所以这是为会么第N次较第1次快的原因

    三、JSP基本语法

      1)JSP模版元素 

        JSP页面中的HTML内容称之为JSP模版元素。
        JSP模版元素定义了网页的基本骨架,即定义了页面的结构和外观。
        模版元素就是HTML中的静态内容,即<body>,<table>,<form>等标签。。。

      2)JSP脚本表达式 

        JSP脚本表达式(expression)用于将程序数据输出到客户端

        a)语法:<%="字符串变量或表达式"%>
        b)结束无分号
        c)默认输出到浏览器

        [注意]JSP引擎在翻译脚本表达式时,会将程序数据转成字符串,然后在相应位置用out.write(…) 将数据输给客户端。
           JSP脚本表达式中的变量或表达式后面不能有分号(;)

       3)JSP脚本片断

        a)语法:<% ...java代码; %>
        b)脚本片断中的注释符号与java代码一致
          注意:JSP修改后,无需重新部署,直接刷新,Web容器会自动比较新旧二个版本的JSP
        c)多个JSP脚本片断中定义的变量,本质是_jspService()方法中的局部变量,可以访问           

        JSP脚本片断(scriptlet)用于在JSP页面中编写多行Java代码。语法:
        <%
          多行java代码
         %>
        1)JSP脚本片断中只能出现java代码,不能出现其它模板元素, JSP引擎在翻译JSP页面中,会将JSP脚本片断中的Java代码将被原封不动地放到Servlet的_jspService方法中。JSP脚本片断中的Java代码必须严格遵循Java语法,例如,每执行语句后面必须用分号(;)结束。
        
        2)在一个JSP页面中可以有多个脚本片断,在两个或多个脚本片断之间可以嵌入文本、HTML标记和其他JSP元素。
        举例:
        <%
          int x = 10;
          out.println(x);
        %>
        <p>这是JSP页面文本</p>
        <%  
          int y = 20;
          out.println(y+””+x);
        %>
        多个脚本片断中的代码可以相互访问,犹如将所有的代码放在一对<%%>之中的情况。如:out.println(x);
        3)单个脚本片断中的Java语句可以是不完整的,但是,多个脚本片断组合后的结果必须是完整的Java语句,例如:
          <%
            for (int i=1; i<5; i++)
            {  
          %>
          <H1>www.itcast.cn</H1>
          <%
            }
          %>

      4)JSP声明

        JSP页面中编写的所有代码,默认会翻译到servlet的service方法中, 而Jsp声明中的java代码被翻译到_jspService方法的外面,即实例变量。

        a)语法:<%! ...java代码 %>
        b)JSP声明的变量或方法,会成为Servlet的实例变量或实例方法或普通方法
        c)JSP脚本片断中不能定义局部方法,方法只能定义在JSP声明中

        所以,JSP声明可用于定义JSP页面转换成的Servlet程序的静态代码块、成员变量和方法 。
        多个静态代码块、变量和函数可以定义在一个JSP声明中,也可以分别单独定义在多个JSP声明中。
        JSP隐式对象的作用范围仅限于Servlet的_jspService方法,所以在JSP声明中不能使用这些隐式对象。
        例如:
    <%!
    static
    {
    System.out.println("loading Servlet!");
    }
    private int globalVar = 0;
    public void jspInit()
    {
    System.out.println("initializing jsp!");
    }
    %>
    <%!
    public void jspDestroy()
    {
    System.out.println("destroying jsp!");
    }
    %> 

      5)JSP注释    

        1)语法<%-- 注释的内容 --%>
        2)对于HTML注释来说,JSP引擎会将其翻译成servlet内容,对于JSP注释来说,JSP引擎不会将其翻译成servlet内容
        3)注释不能嵌套使用

       6)JSP指令

        JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。在JSP 2.0规范中共定义了三个指令。

         1)指令是程序员控制JSP引擎做什么的依据

        2)有三类:

          a)page
          b)include
          c)tablib

       下篇继续,,,

  • 相关阅读:
    无符合条件的记录,SUM函数返回NULL。返回0而不是Null
    Java中的堆栈,队列,链表
    Java集合类的问题
    2014.7.30日结
    我的CSS之路1
    2014.7.27-7.28日结
    LeetCode解题源代码链接集锦一
    2014.7.23日结
    C++之数组声明与初始化
    系统结构之指令
  • 原文地址:https://www.cnblogs.com/hacket/p/2951855.html
Copyright © 2011-2022 走看看