您的位置:首页 > 编程语言 > Java开发

轻量级JavaEE企业应用实战(三)

2015-12-15 16:10 267 查看

JSP的基本原理

JSP的本质是Servlet,用户向指定的Servlet发送请求时,Servlet利用输出流动态生成和TML界面,包括每一个HTML标签和所有在其中显式的内容

JSP通过在标准的和TML页面中潜入JAVA代码,其静态部分无需Java程序控制,只有那些需要从数据库读取或需要动态生成的界面内容,才使用Java脚本控制

组成:

静态部分:标准的和TML标签、静态的界面内容

动态部分:受Java程序控制的内容,由Java程序来动态生成

每个JSP页面就是Servlet一个实例,JSP界面由系统编译成Servlet,Servlet再相应用户的请求。

证据:在Tomcat启动后,可以在work\Catalina\localhost\应用名\org\apache\jsp目录下找到,test_jsp.java和test_jsp.class

进入源代码

可以看到其中包含了init初始化方法、destory销毁方法和_jspService响应方法

其中定义了PageContext pagecontext、HttpSession session、ServletContext application、ServletConfig config、JspWriter out、Object page等JSP内置对象

当然还有参数中的HttpServletRequest request和HttpServletResponse对象, 除此对象exception有被throw,IOException、ServletException;

从客户端访问到返回结果流程:

Client访问JSP---》如果是第一次,则JSP编译为Servlet;如果JSP界面对应的Servlet已经存在,则根据请求动态生成HTML界面---》返回标准的HTML界面

根据JSP的工作原理,可以得出结论

1.JSP文件必须在JSP服务器内部运行

2.JSP必须生成Servlet才能执行

3.每个JSP页面的第一个访问者速度会很慢,因为需要等待JSP编译成Sevlet

4.JSP界面的访问者无需安装任何客户端,甚至不需要可以运行Java的运行环境,因为JSP页面输送到客户端的是标准HTML界面

JSP声明

语法:<%声明部分%>

从JSP对应Servlet源文件可以看出:声明部分的代码被转换成对应Servlet的成员变量或方法

由此可知:JSP声明部分定义的变量和方法可以使用private、public等控制符修饰,也可以用static,将其变成属性和李诶方法。但不可使用abstract修饰

声明部分的方法,因为还凑饷方法导致JSP对应的Servlet变成抽象类,无法实例化

JSP脚本中可以防止任何可执行的语句,所以可以充分利用Java语言的功能,例如连接数据库和执行数据库操作

JSP的三个编译指令

page:针对当前界面的指令

include:指定包含另一个界面

taglib:定义和访问自定义标签

page指令属性

language:当前JSP界面使用的脚本语言的种类,该属性通常是JAVA,默认也是JAVA,所以无需设置

extends:在JSP界面编译所产生的JAVA类所集成的弗雷,或所实现的接口

import:导入包;默认导入包:java.lang.*、javax.servlet.*、javax.servlet.jsp.*、javax.servlet.http.*

session:设定这个JSP页面是否需要HTTP Session

buffer:指定输出缓冲区的大小。输出缓冲区的JSP内部对象:

out用于缓存JSP页面对客户浏览器的输出,默认值是8KB,可以设置为none,也可以设置为其他值,单位是KB

autoFlush:当输出缓冲区即将溢出时,是否需要强制输出缓冲区内容。为true,则正常输出;false,则抛出异常

info:设置该JSP程序的信息,也可以看作说明,可以通过Servlet.getServletInfo()方法获取该值;在JSP中,直接调用getServletInfo();

errorPage:指定错误处理页面。如果页面产生了异常或错误,没有对应处理码,则跳转到指定JSP

isErrorPage:设置本JSP界面是否为错误处理程序。如果本身是错误处理界面,无需指定errorPage属性

contentType:用于设定生成网页的文件格式和编码字符集

pageEncoding:指定网页的编码字符集

errorPage实际上是JSP的异常处理机制,JSP脚本不要求强制处理异常,即使该异常是checked异常

体外话:开发者都应该取消Internet选项---》高级---》显式友好HTTP错误信息

include指令

include指令可以将一个外部文件潜入到当前JSP文件,同时解析这个界面的JSP语句

静态的include指令,会把目标页面的其他编译指令也包含进来,融合成一个页面,因此被包含的页面甚至不需要是一个完整页面

静态指令:<%include file="scriptlet.jsp" %>

动态include指令则不会,如果被潜入的JSP经常改变,则使用<jsp:include>指令,这是动态的

注意:静态include命令将目标页面的其他编译指令包含进来时,如果指令冲突,那么页面会报错
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: