日期:2014-05-16  浏览次数:20494 次

相关JSP
工作原理:

1.翻译阶段:当容器接受到客户端的请求后,先判断被请求的jsp是否存在,若不存在返回404错误,如存在,将该jsp先翻译成一个servlet

2.编译阶段:将servlet的源文件编译成一个字节码文件,然后有容器将其装载进虚拟机并构造出一个实例对象(单例)。

3.执行阶段:按照servlet生命周期(init(),service(),destory())的过程来运行servlet。

补充:如果被请求的jsp已经有对应的servlet实例对象,那么直接运行该servlet。如果jsp的源文件发生变化,那么要重新将jsp翻译成servlet,再编译,装载和实例化,最后运行。

-----------------------------------------------------

MVC

1.M(Model)--------------->JavaBeans

2.V(view)----------------->jsp

3.C(Controllor)---------->servlet

-----------------------------------------------------

JSP中的元素

1.脚本元素

a.声明(declaration)

语法:<%!declaration%>

作用:为servlet声明一些成员变量,成员方法和内部类

注意:声明的内容处于jspService()方法之外。另外,在声明中不能使用表达式和隐含对象。

b.表达式(expression)

语法:<%=expression%>

作用:将expression写入到输出流中,expression的内容最终显示在页面上。

expression可以是变量、(算术、逻辑、关系表达式)、带返回值的方法、9种隐含对象。

表达式中的输出值都一律被转换成字符串后再写到输出流out(JspWriter)中

注意:expression中不能出现(;)

c.脚本(scriptlet)

语法:<%java code%>

作用:在jsp中嵌入java代码

注意:脚本(java代码)被翻译进servlet的jspservice()方法中。

2.指令元素

a.page指令

语法:<%@ page attribute="attributeValue"....%>

作用:利用page指令中的这些属性可以和容器进行通信,这些属性的设置对整个jsp都有影响。

b.include指令

语法:<%@ include file="url"%>

称为静态导入。比如:页面的logo和版权信息。

作用:在当前jsp中导入另一页面的内容(这些内容一般不变化)。

特点:在jsp翻译成servlet时就将被导入的页面内容嵌入到jspService()中,发生在编译阶段。

优点:执行效率高。

缺点:若被导入的页面的内容一旦发生变化,那么jsp必须要重新被翻译。

c.taglib指令

语法:<%@ taglib url="/web-inf/a.tlb" predix="**"%>

作用:用于在jsp中制定要使用的标签库描述文件的(*.tld)路径.

3.动作元素

a.动态导入

语法:<jsp:include page="url" flush="true/false"/>或者

<jsp:include page="url" flush="true/false">

[<jsp:param.../>]*

.......

</jsp:include>

作用:在一个页面导入另外一个页面的内容

特点:动态导入发生在执行阶段,也就是在运行servlet的时候才动态生成被导入页面的内容,然后嵌入到调用页面,最后两个页面的内容一起返回给客户端

注意:在翻译阶段并没有导入

缺点:执行效率没有静态导入高。

优点:如果被导入的页面内容发生变化,不必重新编译。

b.forward

语法:<jsp:forward page="url"/>

--------------------------------------------------------

jsp注释

1.html/xml注释

语法:<!----content------>

特点:被注释的内容会出现在翻译后的servlet中,也会出现在客户端的页面的源文件中,但是不会显示在浏览器中。

注意:只能注释html,xml,不能注释java代码。

2.隐藏注释

语法:<%----content----%>

特点:被注释的内容不会出现在翻译后的servlet中,在客户端也不会出现。

注意:可以注释jsp中所有的内容。

3.脚本注释

语法:<%

//java code

/**java code*/

%>

特点:被注释的内容出现在翻译后的servlet中,但是不会出现在客户端。

------------------------------------------------------

JSP内置对象

名称                             类型                                                  注释和范围

request                       javax.servlet.http.httpRequest        request                      

response                    javax.servlet.http.httpResponse  &nbs