zoukankan      html  css  js  c++  java
  • JSP九个内置对象及指令、动作标签

    一、JSP九大内置对象

    (一)JSP中无需创建就可以使用的9个对象

    输入输出对象

    1.response(HttpServletResponse):处理JSP生成的响应,然后将响应结果发送给客户端.是service方法的esponse参数。
    2.out(JspWriter):表示输出流,将作为请求的响应发送给客户端.是PrintWriter的一个实例。

    作用域对象

    3.request(HttpServletRequest):表示客户端的请求,包含了所有的请求信息,是service方法的resquest参数。
    4.session(HttpSession):表示用户的会话状况,用此机制可以轻易的识别每一个用户,能保存和  跟踪用户的会话状态.是HttpSession的一个实例。
    5.pageContext(PageContext):作用于此页面,可以访问页面作用域中定义的所有隐式对象是PageContext的一个实例。
    6.application(ServletContext):作用于整个应用程序.是ServletContext的一个实例。

    Servlet对象

    7.page:提供对网页上定义的所有对象的访问.是一个Object对象.是此Servlet的 一个引用。如Object page = this;
    8.config(ServletConfig):存储Servlet的一些初始信息是ServletConfig的一个实例。

    异常对象
    9.exception(Throwable):此对象负责处理程序执行过程中引发的异常.

    (二)pageContext

    • 一个顶9个,
    • servlet中有三大域,而JSP中有四大域,它是最后一个域对象。
      • ServletContext:整个应用程序。
      • session:整个会话(一个会话中只有一个用户)。
      • request:一个请求链。
      • pageContext:一个jsp页面,这个域是当前jsp页面和当前jsp页面中使用的标签之间共享数据。
        • 域对象。
        • 代理其他域:pageContext.setAttribute("xxx","XXX",PageContext.SESSION_SCOPE);
        • 全域查找:pageContext.findAttribute(“xxx”);从小到大,依赖查找。为了避免重名现象,命名时可采用如request_xxx;
        • 获取其他8个内置对象:
          • JspWriter getOut(): 获取out内置对象;
          • ServletConfig getServletConfig():获取config内置对象
          • Object getPage():获取page内置对象
          • ServletRequest getRequest():获取request内置对象
          • ServletResponse getResponse():获取response内置对象
          • HttpSession getSession():获取session内置对象
          • ServletContext getServletContext():获取application内置对象
          • Exception getException():获取exception内置对象

    二、JSP三大指令

      一个jsp页面中,可以有0~N个指令的定义。

    1、page:最复杂:<%@page language="java" info="xxx"......%>

    • pageEncoding和contentType:
      • pageEncoding:它指定当前jsp页面的编码,只要不说谎,就不会有乱码。在服务器要把jsp编译成.java时需要使用pageEncoding;
      • contentType:它表示添加一个响应头:Content-Type;等同于response.setContentType("text/html;charset=utf-8");
      • 如果两个属性只提供一个,那么另一个默认值为设置那一个。
      • 如果两个属性都没有设置,那么默认为iso
    • import:导包,可以出现多次
    • errorPage和isErrorPage
      • errorPage:当前页面如果抛出异常,那么要转发到哪一个页面,由errorPage来指定。
      • isErrorPage:它指定当前页面是否为处理错误的页面,但该属性为true时,这个页面会设置状态码为500,而且这个页面可以使用9大内置对象中的exception。

    在web.xml文件配置通用的错误页面

     1     <error-page>
     2         <error-code>404</error-code>
     3         <location>/error/404.jsp</location>
     4     </error-page>
     5     <error-page>
     6         <error-code>500</error-code>
     7         <location>/error/500.jsp</location>
     8     </error-page>
     9     <error-page>
    10         <exception-type>java.lang.RuntimeException</exception-type>
    11         <location>/index.jsp</location>
    12     </error-page> 
    • autoFlush和buffer
      • autoFlush:指定jsp的输出流缓冲区满时,是否自动刷新!默认为true,如果为false,那么在缓冲区满时抛出异常!
      • buffer:指定缓冲区大小,默认为8kb,通常不需要修改。
    • isELIgnored:是否忽略el表达式,默认值为false,不忽略,即支持。
    • 基本属性:
      • language:指定当前jsp编译后的语言类型,默认为java。
      • info:信息。
      • isThreadSafe:当前的jsp是否支持并发访问。
      • session:当前页面是否支持session,如果为false,那么当前页面就没有session这个内置对象。
      • extends:让jsp生成的servlet去继承该属性指定的类。

    2、include:静态包含

    • 与RequestDispatcher的include()方法的功能相似。
    • <%@include%>它是在jsp编译成java文件时完成的,他们共同生成一个Java(就是一个servlet)文件,然后再生成一个class。
    • RequestDispatcher的include()的include()是一个方法,包含和被包含的是两个servlet,即两个.class。他们只是把响应的内容在运行时合并了。
    • 作用:把页面分解了,使包含的方式中组合在一起,这样一个页面中不变的部分,就是一个独立jsp,而我们只需要处理变化的页面。

    3、taglib:导入标签库

    • 两个属性
      • prefix:指定标签库在本页面中的前缀,由我们自己来起名称。
      • uri:指定标签库的位置。
      • <%@taglib prefix="pre" uri="/struts-tags"%>前缀的用法<s:text>

    三、JSP动作标签

      这些jsp的动作标签,与html提供的标签有本质的区别。

    • 动作标签是由Tomcat(服务器)来解释执行,它与Java代码一样,都在服务器端执行的
    • html由浏览器来执行。
    • <jsp:forward>:转发,它与RequestDispatcher的forward方法是一个样的,一个是在Servlet中使用,一个是在jsp中使用。
    • <jsp:include>:包含,它与RequestDispatcher的include方法是一个样的,一个是在Servlet中使用,一个是在jsp中使用。

     

    •  <jsp:param>:它用作为forward和include的子标签,用来给转发或包含的页面传递参数。
    1 <body>
    2 <h1>a.jsp</h1>
    3 <%-- 动态转发 --%>
    4 <jsp:forward page="b.jsp">
    5 <jsp:param value="zhangsan" name="username"/>
    6 <jsp:param value="zhangsan" name="password"/>
    7 </jsp:forward>
    8 </body>
    1 <h1>b.jsp</h1>
    2 <%
    3     String username = request.getParameter("username");
    4     String password = request.getParameter("password");
    5     out.print(username+":"+password);
    6 %>
  • 相关阅读:
    [BZOJ 3270] 博物馆
    [BZOJ 3551] Peaks加强版
    [HNOI 2009] 梦幻布丁
    [NOI 2018] 归程
    [YNOI 2016] 掉进兔子洞
    [SCOI 2014] 方伯伯的玉米田
    Codeforces Round #545 (Div. 2)
    初涉Min-Max容斥【在更】
    【费用流】bzoj1834: [ZJOI2010]network 网络扩容
    【最大权闭合子图】bzoj4873: [Shoi2017]寿司餐厅
  • 原文地址:https://www.cnblogs.com/gdwkong/p/7628063.html
Copyright © 2011-2022 走看看