JSP其他主题

JSP九大内置对象

内置对象指的是服务器已经创建好的对象,可以直接使用;

Request/Response

  • JSP翻译生成的Java文件中,提供服务的方法是_jspService,JSP中的内容都将被翻译到该方法中;
  • 其中request,response就是两个内置对象,分别是HttpServletRequest和HttpServletResponse类型,可以在JSP中直接使用这两个接口中的方法;
  • Request代表的是四大作用域中的请求

out/page

  • 在JSP的_jspService方法中,有out,page对象;
  • out的类型是JspWriter,page即当前类对象this;

pageContext/session/application

  • pageContext的类型是PageContext 代表四大作用域中的页面作用域
  • 有setAttribute/getAttribute/removeAttribute方法
  • session的类型是HttpSession 代表四大作用中的会话
  • application的类型是servletContext 代表四大作用域中的上下文
  • pageContext对象封装了所有其他的内置对象
  • session默认存在

exception

  • 内置对象exception比较特殊,默认情况下不存在;只有当JSP中使用指令指定该页面作为错误页面使用时才会翻译生成该内置对象。
  • <%@page isErrorPage=“true” %>
  • exception的类型是Throwable

config

  • config的类型是ServletConfig

指令与动作

JSP可以通过指令元素而影响容器翻译生成Java类的整体结构

常用的指令有3个 : page、include、taglib

page指令

  • import属性:用来引用JSP文件需要使用的类
    • eg: <%@ page import=”java.util.List”%>
    • 可以使用【逗号】同时引入多个包,在一个JSP文件中多次使用import;
    • import是page指令中唯一一个可以在一个JSP文件中多次出现的属性,其他属性在一个JSP文件中只能出现一次;
  • pageEncoding属性:用来设置JSP文件的页面编码格式;
    • eg: <%@page pageEncoding=“utf-8”%>
  • session属性:用来设置JSP页面是否生成session对象;
    • 该属性默认值为true,可以设置成false。
    • eg: <%@page session=”false”%>
    • session属性值设置为false后,该JSP翻译生成的类中将没有内置对象session,该JSP不参与会话。
  • errorPage属性:设置JSP页面的错误页面。当JSP中发生异常或错误却没有被处理时,容器将请求转发到错误页面;
    • eg: <%@page errorPage=”error.jsp”%>
    • 访问该页面将发生数学异常,而且并没有对异常进行处理,那么将跳转到错误页面error.jsp
  • isErrorPage属性:
    • 默认值是false,可以设置为true。在JSP的错误页面中,将isErrorPage设置为true,则该页面翻译生成的Java类中,将生成exception内置对象。在error.jsp中加入代码;
    • eg: <%@page isErrorPage=”true”%>
    • 上述代码将error.jsp页面设置为错误页面,所以,在error.jsp翻译生成的Java类中的_jspService方法中将生成exception内置对象
    • 即使一个页面没有设置isErrorPage=“true”,也可以作为错误页面使用,区别在是否有内置对象exception内置对象产生。

include指令

  • 用来【静态包含】其他页面

    include指令的属性是【file】,实现【静态】包含,发生在【翻译】阶段

  • 在main.jsp中编写如下代码: <%@ include file=”coppyright.jsp” %>

  • 翻译main.jsp时,会把copyright.jsp文件翻译后插入到main.jsp翻译生成的.java文件中的相应位置;

include动作

  • 在JSP页面中,进行动态包含,如以下代码所示:\\
  • \是动态包含,即在运行期访问被包含的页面,并将响应结果同包含页面的响应结果合并,生成最终响应。类似在Servlet中调用RequestDispatcher的include方法进行包含
  • 【include标准动作与include指令都是实现包含其他页面的功能;】
  • include标准动作的属性是【page】,实现【动态包含】,发生在【请求】阶段;

猜你喜欢

转载自blog.csdn.net/Qiao_Hai/article/details/76216338