JSP隐式对象/标签/映射/错误

来源:互联网 发布:淘宝商品背景素材 编辑:程序博客网 时间:2024/05/21 22:43

JSP运行原理和九大隐式对象

JSP页面第一次被访问时,WEB容器会把请求交给JSP引擎(一个java程序)去处理
JSP引擎先将JSP翻译成一个_jspServlet(实质就是一个servlet)然后按照servlet的调用方式调用

翻译会导致第一次访问较慢,后面JSP无变化会直接调用

JSP引擎调用JSP对应的_jspServlet时,会传递或创建9个与web开发相关的对象供_jspServlet使用

定义了对应的9个变量来快速获得这9大对象的引用

request
response
session
application
config
page
exception

out隐式对象用于向客户端发送文本数据
        out对象通过调用pageContext对象的getOut方法返回的
        类似于ServletResponse.getWriter方法返回的PrintWriter对象
        JSP页面out隐式对象类型为JspWriter 相当于带缓存功能的PrintWriter
        JSP-page指令-buffer属性 可以调整缓存大小或关闭
        向out对象写入内容且(JSP-page指令-buffer属性缓存关闭/out对象缓冲区已满/整个JSP页面结束)才会写到浏览器(servlet引擎提供的缓冲区)
        因为缓存 JSP页面推荐一致用out不要ServletResponse.getWriter输出(会导致输出顺序混乱)

pageContext JSP技术中最重要的对象 代表JSP页面的运行环境
                      封装了其他8大隐式对象的引用 
                      getException()/getPage()/getRequest()/getResponse()/getServletConfig()/getServletContext()/getSession()/getOut()
                      封装其他8大隐式对象的意义 自定义标签开发技术
                      自身是一个域对象可以用来保存数据(page域作用于本页面)
                      setAttribute() getAttribute() removeAttribute()还封装了访问其他域的方法和代表各个域的常量
                      findAttribute() 查找各个域中的属性page-request-session-application(el表达式${...}的后台实现)
                      还封装了web开发中一些常用操作(引入include/跳转forward其他资源,检索其他域对象属性)

JSP标签

也称为JSP Action(JSP动作)元素 提供业务逻辑功能 避免JSP页面直接编写java代码难以维护
<jsp:include page="/aaa.jsp"></jsp:include> 动态包含
<jsp:forward page="/bbb"></jsp:forward> 首页跳到对应servlet
<jsp:param name="ccc" value="ddd"/> 带数据

JSP映射和常见错误处理

映射JSP

<servlet>    <servlet-name>xxx</servlet-name>    <jsp-file>/jsp/aaa.jsp</jsp-file>    <load-on-startup>1</load-on-startup></servlet>...<servlet-mapping>    <servlet-name>xxx</servlet-name>    <url-pattern>/bbb/ccc.jsp</url-pattern></servlet-mapping>

查找JSP页面中的错误

1.JSP页面中的JSP语法格式有问题--不能翻译成servlet源文件
2.JSP语法格式没问题翻译成的servlet源文件有java语法问题--翻译的servlet源文件不能通过编译

3.翻译成的servlet程序运行时异常--与普通java程序运行时错误一样