一、JSP 入门

JAVAEE 13 种计算规范之一,JSP (Java Server Page) 是一种模板技术。

JSP有如下特点:

  • 和 SERVLET 技术一样,都是 SUN 公司定义的一种用于开发动态web资源的技术
  • JSP 内容可以写 HTML 代码, HTML 文件资源是属于静态资源数据,而jsp允许在页面中嵌套 JAVA 代码,为用户提供动态数据
  • JSP = HTML + JAVA
  • JSP 就是 SERVLET

1.请求 JSP 执行流程

图片.png

2.JSP 生命周期方法

  • 默认情况下 JSP 会在第一次请求的时候才会做翻译(JAVA 源代码)和编译(CLASS 字节码),如果再次请求 JSP ,不会重新翻译 和 编译,但是 JSP 内容发生改变,服务器就会重新翻译和编译。
  • 生命周期方法:

1.void _jspService(HttpServletRequest request, HttpServletResponse response) : 该方法类似 Servlet 中的 Service方法
2.void jspInit() :该方法类似 Servlet 中的 init 方法
3.void jspDestroy() : 该方法类似 Servlet 中的 desctory 方法

3.JSP 基本语法入门

3.1 JSP 模板元素

指的就是 JSP 中的 HTML 代码,模板元素 用于 页面的排版。

3.2 JSP 中的脚本表达式

  • 语法
    <%= 表达式 %>
  • 作用
    向页面输出数据
  • 注意: JSP 脚本表达式中的结果会使用到 JSP 中的 out 对象的 writer方法来进行输出,所有方法里面不能带分号,换句好说,脚本表达式中的内容会直接拷贝到 writer 方法中。
    错误的例子: <%= 1 + 1 ;%> ----翻译成--- out.writer(1 + 1 ;);

3.3 JSP 中的脚本片段

  • 语法
    <% JAVA 代码(片段) %>
  • 作用
    编写 Java 逻辑代码片段
  • 注意
    不能再 JSP 脚本片段中 嵌套 JSP 表示式等。
    JSP 脚本片段内容 会直接拷贝到_jspService 方法中

3.4 JSP 中的申明

  • 语法
    <%! 定义可能是 成员变量或者成员方法%>
  • 作用
    定义成员变量和成员方法
  • 注意
    一般不使用

3.5 JSP 中的注释

  • 语法
    <%-- 注释内容 --%>
    注意: 如果使用JSP 的注释,注释内容不会进行翻译。必须使用JSP 注释

4. JSP 中的三大指令

  • 语法
    <%@ %>

  • 作用
    指令就是告诉服务器如何来翻译 JSP 生成 JAVA 源代码

  • 指令分类
    <%@ page %> ----- page 指令
    <%@ include%> ----- include 指令
    <%@ taglib%> ----- taglib指令

  • 注意:一个 JSP 必须带上一个 PAGE 指令,每个指令都有相应的属性,通过属性的配置,达到一个 翻译的 效果

4.1 PAGE 指令:

autoFlush 属性 : 设置 JSP 中的 out 对象,out 流对象中缓存满了是否自动刷出。 不要去设置
buffer 属性 : 设置 JSP 中的 out 对象,缓存大小。不能设置 0 ,默认的大小为8KB。不要去设置
contentType 属性:设置response 输出属性的类型以及码表
import 属性:导包
isELIgnored 属性:设置 JSP 是否支持 EL 表达式,默认的值为false表示支持,不要去设置。
session 属性 : 设置 JSP 是否可以使用 HttpSession 对象,默认是支持的。
pageEncoding 属性:有两个特点,一个特点具有contentType 属性设置charset 的值,还有一个特点可以翻译过程中使用什么码表来保存 翻译后的源代码文件
isErrorPage 属性 :默认的值是false,如果设置成true,表示当前的 JSP是一个处理异常的JSP ,开启了 Throwable 类型的异常对象。(局部异常处理方式)

异常全局处理方式:

    
    
        java.lang.ArithmeticException
        /temple.jsp
     -->
    
        500
        /temple.jsp
    

errorPage 属性:设置异常处理的JSP

4.2 include 指令 (静态包含,在翻译的时候完成包含内容的工作)

该指令只有一个属性 file:用于指定当前JSP 引入的JSP 片段

在JSP 一个动作标签:可以是实现内容的包含,只不过这种包含方式属性动态包含。

建议:能用静不用动,效率高

4.3 taglib 指令

该指令,用于引入第三方的标签库
日后再说

5.JSP 中的九大内置对象(面试题,请你说出常用的至少5个)

九大内置对象,不需要手工创建,自动的准备好九个对象。直接使用

对象的引用名称 对象的实际类型 说明
request HttpServletRequest Servlet讲过,不啰嗦了
response HttpServletResponse Servlet讲过,不啰嗦了
session HttpSession Servlet讲过,不啰嗦了
application ServletContext Servlet讲过,不啰嗦了
exception Throwable JavaSe讲过,不啰嗦了
config ServletConfig Servlet讲过,不啰嗦了
out javax.servlet.jsp.JspWriter 该对象跟response 对象获取的 writer 对象作用一样,但是不是一个类型的对象,response获得的对象是PrintWriter类型。out 对象类型是带有8kb缓存的流对象,out 对象保存的数据要响应到页面上,它要先把数据刷到resonse 对象中的writer中,作出响应动作还是response
page this JSP 翻译后的类对象实例 Object
pageContext javax.servlet.jsp.PageContext 大家一定记住这个对象,该对象可以获得其他8个对象

PageContext对象总结

  • findAttribute(String key):该方法会从 page 、 request 、 session 、 application域从小到大来检索是否 有对应key 的值,有就返回。
  • setAttribute(String key,Object value):把数据保存到 page域
  • setAttribute(String key,Object value,指定域):把数据保存到指定域
    中 (PageContext.REQUEST_SCOPE、PageContext.SESSION_SCOPE、
    PageContext.APPLICATION_SCOE、
    PageContext.PAGE_SCOE、)
  • getAttribute(String key):默认从page 域中取数据。
  • getAttribute(String key,指定域):指定域中取数据 (PageContext.REQUEST_SCOPE、PageContext.SESSION_SCOPE、
    PageContext.APPLICATION_SCOE、
    PageContext.PAGE_SCOE、)
  • 使用该对象可以拿到其他8个内置对象

你可能感兴趣的:(一、JSP 入门)