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

       下篇继续,,,

  • 相关阅读:
    184. Department Highest Salary【leetcode】sql,join on
    181. Employees Earning More Than Their Managers【leetcode】,sql,inner join ,where
    178. Rank Scores【leetcode】,sql
    177. Nth Highest Salary【leetcode】,第n高数值,sql,limit,offset
    176. Second Highest Salary【取表中第二高的值】,sql,limit,offset
    118. Pascal's Triangle【LeetCode】,java,算法,杨辉三角
    204. Count Primes【leetcode】java,算法,质数
    202. Happy Number【leetcode】java,hashSet,算法
    41. First Missing Positive【leetcode】寻找第一个丢失的整数,java,算法
    删除
  • 原文地址:https://www.cnblogs.com/hacket/p/2951855.html
Copyright © 2011-2022 走看看