zoukankan      html  css  js  c++  java
  • Java Web总结九JSP

    一、什么是JSP?

      1、为什么说,Servlet是一个动态Web开发技术呢?

        Servlet是基于服务端的一种动态交互技术,HttpServletRequest表示客户端到服务端的对象,HttpServletResponse表示服务端到客户端的对象。

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

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

      4、在IDE工具中,开发JSP,pageEncoding有二层含义:

        1)指明当前JSP中的中文采用什么方式编码(如果在IDE工具外)。

        2)指明当前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、如果再次访问同一个date.jsp文件,翻译工作依然进行,Servlet引擎工作可以减化,所以这是为会么第N次较第1次快的原因。

    三、JSP语法

      1、JSP模版元素

        模版元素就是HTML中的静态内容,即<body>,<table>,<form>标签。。。

      2、JSP表达式

        1)语法:<%="字符串变量或表达式"%>

        2)结束无分号。

        3)默认输出到浏览器。

      3、JSP脚本片断

        1)语法:<% ...java代码; %>

        2)脚本片断中的注释符号与java代码一致。

          注意:JSP修改后,无需重新部署,直接刷新,Web容器会自动比较新旧二个版本的JSP。

        3)多个JSP脚本片断中定义的变量,本质是_jspService()方法中的局部变量,可以访问。

      4、JSP声明

        1)语法:<%! ...java代码 %>

        2)JSP声明的变量或方法,会成为Servlet的实例变量或实例方法或普通方法。

        3)JSP脚本片断中不能定义局部方法,方法只能定义在JSP声明中。

      5、JSP注释

        1)语法:<%-- 注释的内容 --%>

        2)对于HTML注释来说,JSP引擎会将其翻译成servlet内容,对于JSP注释来说,JSP引擎不会将其翻译成servlet内容。

        3)注释不能嵌套使用。

      6、JSP指令

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

        2)JSP指令有三类:

          a)page

          b)include

          c)tablib

        3)page指令的属性有:

          (1)language="指明JSP支持的语言,默认为java语言"。

          (2)import="当前JSP页面中,需要导入的包,其中import可以写多次"。

          (3)session="true表示需要服务器创建session/false不需要服务器创建session",默认true。

          (4)buffer="none|8kb|sizekb"JSP输出使用的缓存大小,默认8kb。

          (5)autoFlush="true表示当缓存满时,web容器是自动刷新到客户端/false需要手工刷新到客户端",默认true。

          (6)isThreadSafe="true表示web服务器确保线程安全/false不确保线程安全",默认true。

          (7)info="text"表示jsp的相关描述信息,可以通过getServletInfo()取得该jsp的信息。

          (8)errorPage="当前jsp页面出错后,转发到的目标页面"。

          (9)isErrorPage="true"(当某个jsp页面有该属性时,web容器会自动创建exception对象),这种异常处理属于局部异常处理。      

            在web.xml文件:
              <error-page>
                <error-code>500</error-code>
                <location>/s_500.jsp</location>
              </error-page>
              <error-page>
                <exception-type>java.lang.NumberFormatException</exception-type>
                <location>/s1_500.jsp</location>
              </error-page>
            上述异常处理属于全局异常处理。如果全局中有code又有type,此时二者同时显示。当全局和局部异常同时出现时,局部异常优先。

          (10)pageEncoding="UTF-8"。在IDE工具中有三种含义:

            (a)JSP页面的中文采用UTF-8方式编码。

            (b)JSP保存时采用UTF-8方式编码。

            (c)指示浏览器以UTF-8方式查看。

          (11)contentType="text/html;charset=UTF-8"。功能与pageEncoding。

          (12)isELIgnored="false表法JSP引擎不忽略EL表达式语言/true表法JSP引擎忽略EL表达式语言"。

        4)@include指令[静态包含]

          (1)include指令包含多个JSP页面,最后JSP引擎只翻译总JSP页面,即index.jsp页面。

          (2)include指令包含多个JSP页面,那么被包含的JSP页面原封不动的进入总JSP页面,即index.jsp页面,造成HTML结构非常混乱。

          (3)include指令包含多个JSP页面,多个JSP最终会翻译成一个Servlet,即index_jsp.java页面。

    四、JSP九大隐式/内置对象

      1)request:javax.servlet.http.HttpServletRequest的实例,该对象封装了一次请求,客户端的请求参数都被封装在该对象里。

      2)response:javax.servlet.http.HttpServletResponse的实例,代表服务器对客户端的响应。

      3)session:javax.servlet.http.HttpSession的实例,该对象代表访问jsp页面时,默认web服务器创建session。访问servlet时,必须通过request.getSession()才能创建session。在转发和重定向情况下,session域不会销毁。 

      4)application=ServletContext对象

      5)config:取得jsp在web.xml文件中的映射信息

      6)exception:该对象只能在<%@isErroPage="true"%>的情况下,容器才会创建,否则容器不予创建

      7)out:out的类型是JspWriter,它是具体缓存功能的PrintWriter对象

      8)pageContext: 表示Jsp行运过程中的环境对象
        a)能够取得其它8个内置对象
        b)具有转发和包含的功能
        c)域对象:[pageContext/request/session/application]
      9)page:表示当前jsp页面,只能在jsp标签中出现,表示当前域对象,在代码中,表示当前域对象只能用PageContext

  • 相关阅读:
    树莓派4B-安装docker
    树莓派4B-挂载硬盘
    树莓派4B-修改软件源
    树莓派4B-初始化网络-静态ip
    树莓派4B-下载系统
    爬虫之路: 字体反扒升级版
    annotations导入报错
    [转]微信小程序全局分享转发控制实现——从此无需页面单独配置
    ollydbg 条件断点语法格式
    c++ CreateThread传递char*参数乱码解决办法
  • 原文地址:https://www.cnblogs.com/FlySheep/p/3639221.html
Copyright © 2011-2022 走看看