首页 > 代码库 > jsp基础知识(1)

jsp基础知识(1)

1.JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。

2.JSP技术也是一种动态web资源的开发技术
    因为JSP技术允许在页面中嵌套java代码,以产生动态数据,并且web服务器在执行jsp时,web服务器会传递web开发相关的对象给jsp,jsp通过这些对象,可以与浏览器进行交互,所以jsp当然也是一种动态web资源开发技术。

3.JSP和Servlet的比较

      本人是先学Servlet的,Servlet感觉就是在写纯粹的java代码,而jsp中既可以写java代码又可以写 脚本语言。很大程度上jsp和servlet是很相似的,只不过jsp站的更高,将很多servlet的操作给封装起来了。不管是JSP还是Servlet,虽然都可以用于开发动态web资源。但由于这2门技术各自的特点,在长期的软件实践中,人们逐渐把servlet作为web应用中的控制器组件来使用,而把JSP技术作为数据显示模板来使用。

4.JSP的原理图:


原理解释: 

 (1)Web容器根据客户端访问的资源类别(Web容器会根据资源的第一行代码确定),如果你访问的是JSP资源,就交由JSP引擎处理如果访问的是Servlet资源,就交由Servlet引擎处理
  (2)如果是JSP资源,JSP引擎会将其翻译成Servlet资源,传入相关的对象,如果是静态资源,以out.write()形式输出,如果是动态资源,以out.print()形式输出。(这个查看C:\apache-tomcat-7.0.22-windows-x86\apache-tomcat-7.0.22\work\Catalina\localhost下的对应工程文件的源代码就可以看出来)
  (3)当JSP引擎在翻译正确后,将其输出给Servlet引擎,当作Servlet处理。
  (4)如果再次访问同一个jspname.jsp文件,翻译工作依然进行,Servlet引擎工作可以减化,所以这是为会么第N次较第1次快的原因

5. JSP语法 
  (1)JSP模版元素 
模版元素就是HTML中的静态内容,即<body>,<table>,<form>等在html中用到的标签

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


  (3)JSP脚本片断 
a>语法:<% ...java代码; %>
        b>脚本片断中的注释符号与java代码一致
c>多个JSP脚本片断中定义的变量,本质是_jspService()方法中的局部变量,可以访问

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


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

  5)JSP注释
a>语法:<%-- 注释的内容 --%>
        b>对于HTML注释来说,JSP引擎会将其翻译成servlet内容,
 对于JSP注释来说,JSP引擎不会将其翻译成servlet内容

          所以综合上述,对于注释应该优先考虑用jsp的注释方式。

        c>注释不能嵌套使用
   
  6)JSP指令
a>指令是程序员控制JSP引擎做什么的依据
b>有三类:
page
include
tablib
       c>page指令的属性有
language="指明JSP支持的语言,默认为java语言"
       import="当前JSP页面中,需要导入的包,其中import可以写多次"
                session="true表示需要服务器创建session/false不需要服务器创建session",默认true
buffer="none|8kb|sizekb"JSP输出使用的缓存大小,默认8kb
autoFlush="true表示当缓存满时,web容器是自动刷新到客户端/false需要手工刷新到客户端",默认true
                isThreadSafe="true表示web服务器确保线程安全/false不确保线程安全",默认true
info="text"表示jsp的相关描述信息,可以通过getServletInfo()取得该jsp的信息
       errorPage="当前jsp页面出错后,转发到的目标页面"
       isErrorPage="true"(当某个jsp页面有该属性时,web容器会自动创建exception对象
                上述异常处理属于局部异常处理
在web.xml文件:
    <error-page>
  <error-code>500</error-code>
  <location>/error_500.jsp</location>
      </error-page>
           <error-page>
  <exception-type>java.lang.NumberFormatException</exception-type>
             <location>/error_500.jsp</location>
     </error-page>

     这个配置文件代码说明了,当出现了代号为500的浏览器异常时, 此时页面会跳转到error_500.jsp的页面中,如果出现NumberFormatException异常时,页面也会跳转到error_500.jsp上,至于具体跳转到那个页面上可以随意的修改<location>的参数值就可,这种体现了在配置文件中处理异常的的方式,算是一种全局的异常处理。

                如果全局中有code又有type,此时二者同时显示
                当全局和局部异常同时出现时,局部异常优先

a)JSP页面的中文采用UTF-8方式编码
b)JSP保存时采用UTF-8方式编码
c)指示浏览器以UTF-8方式查看

              contentType="text/html;charset=UTF-8"
      isELIgnored="false表法JSP引擎不忽略EL表达式语言/true表法JSP引擎忽略EL表达式语言"