JSP 的一点笔记

JSP 总结


  • JSP 和 Servlet 的分工

    • JSP
      • 作为请求的发起页面,例如显示表单、超链接。
      • 作为请求的结束页面,例如显示数据。
    • Servlet
      • 作为请求中处理的环节。
  • JSP 的原理

    • 原理
      1. ** JSP页面第一次被访问时,服务器会把JSP编译成java文件(Servlet类)。**
      2. ** java文件编译成.class文件。**
      3. ** 创建改类的对象。 **
      4. ** 调用service()方法。 **
      5. ** 下一次请求JSP时,直接调用service()方法。 **
    • 在tomcat的work目录下可以找到JSP对应的.java文件。

  • JSP 的注释

    • <%-- ... -->:当JSP编译成java文件时这种注释就已经被忽略。
  • JSP 中的 3 种 Java 脚本

    • <% ... %>(Scriptlet):Java代码片段,0-n条Java语句。
    • <%= ... %>:Java表达式,用于输出一条表达式或变量(变量也是表达式)的结果。
    • <%! ... %>:声明,用来创建类的成员变量或成员方法。
    • ** 最好不要用上面三种方式写程序。 **
  • JSP 中的 3 大指令

    • page 指令
      • 定义页面的特定属性。
      • <%@ page import="foo.*" seesion="false" %>
      • 属性(13 个属性,4个重要)
        • import 属性:增加的 import 语句,多个用逗号隔开。
        • isThreadSafe 属性 : 是否实现 SingleThreadModel。
          • 属性值
            • true:默认,不实现 SingleThreadModel。
            • false:实现 SingleThreadModel,最好不要这么做。
        • contentType 属性:定义 JSP 相应的 MIME 内容(和可先的的字符编码)。 ???
        • isELIgnored 属性:是否忽略 EL 表达式(两种办法中的一种)。
        • isErrorPage 属性:是否是另一个 JSP 的错误页面。
          • 属性值
            • false:默认,不能使用隐式exception对象。
            • true:能访问隐式exception对象。
        • errorPage 属性:URL,如果有未捕获的Throwable。如果这个属性指定一个 JSP,该 JSP 的 page 指令中有 isErrorPage="true" 属性。
    • include 指令
      • <%@ include file="wickedHeader.html" %>
      • 将文件内容添加到当前位置。
    • taglib 指令
      • <%@ taglib tagdir="/WEB-INF/tags/cool" prefix="cool" %>
  • JSP 中的 9 个内置对象(隐式对象)

    1. out 对象
      • JspWriter 类型.
      • JspWriter 不在PrintWriter类层次体系中,但是它的大多数打印方法都与PrintWriter相同,只是增加了一些缓冲功能。
    2. page 对象
      • Object 类型。
      • 在Java代码中直接指向jsp文件对应的类。
    3. pageContext 对象 (页面,Servlet 中不存在)
      • PageContext 类型。
      • 封装了其他隐式对象。
      • 函数
        • setAttribute(String, Object) 和 getAttribute(String):设置和获得一个页面作用域的属性
        • setAttribute(String, Object, int) 和 getAttribute(String, int):设置和获得一个其他作用域的属性(会话、应用、请求)
        • findAttribute(String):依次从页面、请求、会话、应用作用域中查找属性。
    4. request 对象 (请求)
      • HttpServletRequest 类型。
    5. response 对象
      • HttpServletResponse 类型。
    6. seesion 对象 (会话)
      • HttpSeesion 类型。
    7. application 对象 (应用)
      • ServletContext 类型。
    8. exception 对象
      • Throwable 类型。
      • 只用特定的“错误页面”才能用这个隐式对象。
    9. config 对象
      • ServletConfig 类型。
  • JSP 中的动作标签

    • forward
    • include
    • param
    • useBean
      • <jsp:useBean id="person" class="foo.Person" scope="request" />
      • 属性
        • id:声明 bean 对象的标识符,来源:request.setAttribute("peron", p)
        • class:bean 对象的类型(完全限制名)。
        • scope:bean 对象的属性作用域。不指定默认为 “page”。
      • 如果找不到对象会自动创建一个。
      • 建立多态的 bean 引用
        • <jsp:useBean id="person" type="foo.Person" class="foo.Employee" scope="page" />
        • type 可以是 class 类型、抽象类或接口,class 必须是 type 的一个子类或具体实现。
      • 使用 type,但没有 class
        • <jsp:useBean id="person" type="foo.Person" scope="page" />
        • 如果 page 作用域已经存在 person 属性,能正常工作。
        • 如果 page 作用域不存在 person 属性,不能工作
    • setProperty
      • <jsp:setProperty name="person" property="name" value="Fred" />
      • setProperty 标签可以放在 useBean 标签体中。
        <jsp:useBean id="person" class="foo.Person" scope="page" >
            <jsp:setProperty name="person" property="name" value="Fred" />
        </jsp:useBean>
        
    • getProperty
      • <jsp:getProperty name="person" property="name" />
      • 属性
        • name:标识具体的 bean 对象,与 <jsp:useBean> 标记的“id”匹配。
        • property:标识属性中的属性名。(Person 类中有 name 属性)。

  • 初始化 JSP

    • 为 JSP 配置初始化参数
      • 代码
        <web-app ...>
        <servlet>
            <servlet-name>MyTestInit</servlet-name>
            <jsp-file>/TestInit.jsp</jsp-file>
            <init-param>
                <param-name>email</param-name>
                <param-value>abe@abc.com</param-value>
            </init-param>
        </servlet>
        <servlet-mapping>
            <servlet-name>MyTestInit</servlet-name>
            <url-pattern>/TestInit.jsp</url-pattern>
        </servlet-mapping>
        </web-app>
        
    • 覆盖 jspInit() 方法
      • 代码
        <%!
            public void jspInit() {
                ServletConfig config = getServletConfig();
                String emailAddress = config.setInitParameter("email");
                ServletContext servletContext = getServletContext();
                servletContext.setAttribute("mail", emailAddress);
            }
        %>
        

posted on 2018-01-27 02:20  coopoopoo  阅读(162)  评论(0)    收藏  举报

导航