一、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 类型的异常对象。(局部异常处理方式)

异常全局处理方式:

    <!-- 全局配置 异常处理类 -->
    <error-page>
        <exception-type>java.lang.ArithmeticException</exception-type>
        <location>/temple.jsp</location>
    </error-page> -->
    <error-page>
        <error-code>500</error-code>
        <location>/temple.jsp</location>
    </error-page>

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

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

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

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

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

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个内置对象
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容

  • 1.学习内容 JSP技术入门和常用指令 JSP的内置对象&标签介绍 EL表达式&EL的内置对象 2.JSP技术入门...
    WendyVIV阅读 2,136评论 1 18
  • JSP总结(经典) day1 JSP 定义: 1)Java Server Page, Java EE 组件,本...
    java日记阅读 3,442评论 0 13
  • Jsp技术总结 1. 什么是JSP JSP即Java Server Pages,它和servlet技术一样...
    java日记阅读 1,654评论 0 18
  • 前面讲了servlet入门实践现在开始介绍jsp入门实践,开发环境的搭建请参考我前面的tomcat的文章,jsp入...
    伊豚wall阅读 3,369评论 2 56
  • 原文链接:blog.ouyangsihai.cn >> jsp看这篇文章就够了 一、JSP基础语法 1、JSP模板...
    程序员欧阳阅读 1,978评论 0 33