1、  JSP工作原理

JSP是一种servlet,但工作方式不一样。HttpServlet是先由源代码编译为class文件后部署到服务器下的,先编译后部署。而JSP则是先部署源代码后编译为class文件的,现部署后编译。

JSP在客户端第一次请求的时候JSP文件会被编译为HttpJspPage类(接口Servlet的一个子类)。该类会被服务器临时存放在服务器工作目录里面。(tomcat\work\Catalina\localhost\jsp\org\apache\jsp)。

 

2、  JSP生命周期

servlet的生命周期一样,但还有自己的初始化方法_jspInit()和销毁方法jspDestory()

 

3、  JSP语法

jsp脚本:<%  %>

jsp输出:<%=  %>

jsp注释://  /* */ <%-- --%>

条件语句与java一样,if else,while,for,return,break

 

4、  JSP指令

page指令

http://www.cnblogs.com/elleniou/archive/2012/09/09/2678101.html

<% page trimDeiectiveWhitespaces=”true|false”%>取消输出指令的前后的空白字符

include指令

<%@ include file=”relativeRUL”%>,先包含后编译

另一种包含文件的行为

,先运行后包含

taglib指令

指明JSP页面内使用的JSP标签库,有两个属性,uri为类库地址,prefix为标签前缀。

<%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core" %> 

5、  JSP行为

标准的JSP行为格式

行为

使用request.getRequestDispatcher(“relativeURI”).forwaard(request,response)来执行被包含的文件。

使用Java BeanPOJO

useBeanJSP页面中定义一个JavaBean

行为

对应servlet中的request.getRequestDispatcher(“relativeURI”).forwaard(request,response),对其方法的一种封装

        

        

行为

相当于jsp指令

==<%@page%>

==<%@include%>

==<%@taglib%>

 

6、  JSP隐藏对象

out输出流对象

request请求对象

response响应对象

config配置对象:配置在web.xml中初始化JSP的参数

session会话对象

application应用程序对象

page页面对象,代表当前JSP页面,是当前JSP编译后的Servlet类的对象。相当于普通Java类的this

pageContext页面上下文对象,代表当前JSP页面编译后的内容,通过pageContext能够获取到JSP中的资源。

exception异常对象

要使用exception隐藏对象,需要设置<%@page isErrorPage=”true” %>,经常失败,不推荐使用。

7、  JSP配置

       demo

       /WEB-INF/hello.jsp   //WEB-INF前必须有/ ,表示从根目录开始

        

                   message

                   messagevalue

        

                   encoding

                   utf-8

        

      demo

      /hello.lxh         //此文件名可任意起,后缀名也可任意

标签,在web.xml中支持对jsp的批量配置。

来自:http://janwer.iteye.com/blog/150217/

 包括    两个子元素。其中 元素在JSP 1.2 时就已经存在;而 JSP 2.0 新增的元素。 元素主要有八个子元素,它们分别为: 
1.
:设定的说明 
2.
:设定名称 
3.
:设定值所影响的范围,如: /CH2  /*.jsp
4.
:若为 true,表示不支持 EL 语法 
5.
:若为 true,表示不支持 <% scripting %>语法 
6.
:设定 JSP 网页的编码 
7.
:设置 JSP 网页的抬头,扩展名为 .jspf
8.
:设置 JSP 网页的结尾,扩展名为 .jspf

 

一个简单的 元素完整配置: 

 

Xml代码                              

1.     

2.       

3.    Taglib     

4.    /WEB-INF/tlds/MyTaglib.tld     

5.       

6.       

7.    Special property group for JSP Configuration JSP example.     

8.    JSPConfiguration     

9.    /jsp/*      

10.    true     

11.    GB2312     

12.    true     

13.    /include/prelude.jspf     

14.    /include/coda.jspf     

15.       

16.  

 

对于Web 应用程式来说,Scriptlet 是个不乐意被见到的东西,因为它会使得HTML Java 程式码交相混杂,对于程式的维护来说相当的麻烦,必要的时候,您可以在web.xml 中加上 标签,设定所有的JSP 网页都不可以使用Scriptlet ,例如:

Xml代码  

1. ..>  

2.    ....  

3.      

4.          

5.            *.jsp  

6.            true  

7.          

8.      

9.....  

10.  

 

8、  EL表达式

${},用来方便的读取对象,是写在html代码中的,不能写在jsp的脚本中<%%>

EL表达式能方便的操作JavaBean,甚至集合等,并支持简单的运算,但是不能直接访问普通的方法,以及静态属性。

 类别              隐含对象              描述

  JSP                pageContext           当前jspjavax.servlet.jsp.PageContext对象

  作用域           pageScope             页面范围内所有对象的集合

               requestScope          所有请求范围内的对象集合

               sessionScope          所有会话范围内的对象集合

               applicationScope    应用程序范围内的对象变量组成的集合

请求参数           param                   所有请求参数字符串组成的集合

                 paramValues          所有作为字符串集合的请求参数

请求头              header                   http请求头部,字符串

                headerValues          http请求头部,字符串集合

cookie               cookie                   所有cookie组成的集合

初始化参数       initParam                     全部引用程序参数名组成的集合