JSP的技术 JavaBean规范(封装数据) EL的表达式

JSP的技术 JavaBean规范(封装数据) EL的表达式

JSP技术简介

1.JSP -- Java Server Pages (java 服务器端的网页们)

2.JSP编写HTML代码 + Java代码 + JSP的代码 它不用配置

3.JSP的执行原理:JSP编写完代码,第一次访问的时候,把JSP的文件翻译成.java的文件 -- 编译成.class的文件 -- 执行。

4.编写JSP的脚本元素(想编写java代码)

    * <%! %>    成员变量 方法

    * <%= %>    输出内容(常量或者变量),不能加分号

    * <%  %>    定义变量(局部变量),编写语句,不能编写方法。

5.JSP和Servlet程序在开发中的角色

    * JSP  modle1的时代

    * JSP(收集用户输入的数据,显示数据给用户) + Servlet(接收和响应请求)

JSP的注释

1.HTML的注释         

2.Java的注释          // /**/  /***/

3.JSP自己的注释      <%-- JSP的注释  --%>

JSP的指令(3个指令元素)

1.设置JSP的文件的属性。

2.指挥JSP文件怎么来执行。

page指令

1.通过page指令设置JSP文件的属性

2.page语法怎么写:<%@ page 属性名称=属性值 属性名称=属性值 %>  一个页面上,page指令也可以出现。

3.page指令的属性有哪些?

    * language      -- 默认翻译成什么语言?现在只能翻译java。

    * extends      -- 继承。(一个jsp的文件翻译.java的文件,默认继承一个类)

    * session      -- 默认是true,说明可以直接使用session。

    * import        -- 导入包。并且import可以出现多次。其他属性只能出现一次。

    * buffer        -- 设置输出缓冲区的大小默认是8kb

    * autoflush    -- 如果缓冲区满了,是否自动刷新。如果满了不自动刷新,抛出异常了。

    * errorPage    -- 程序抛出了异常,直接把异常抛到页面上。指定错误的处理页面。

    * isErrorPage  -- 需要在错误的页面使用。决定直接可以使用exception

    * isELIgnored  -- 是否忽略EL表达式。默认值是false,代表不忽略。在页面上直接使用EL表达式。

    * pageEncoding  -- 设置当前页面的编码。JSP的文件翻译成.java文件。

    * ContentType  -- 浏览器默认打开文件的编码。

    * 注意:pageEncoding和ContentType关系暧昧。如果一个页面上只设置pageEncoding,ContentType默认情况下和pageEncoding相同。

在web.xml中配置全局错误页面

    404

    /error/404.jsp

    500

    /error/500.jsp

include指令

1.include指令:可以用于页面包含。把几个页面放在一起对外显示。完成页面的布局。

2.指令的语法:<%@ include file="包含文件的地址" %>

3.模拟一个门户网站

4.静态包含:原理

    * 在翻译成.java文件之前,先把所有的页面的内容全部都复制过来,一起翻译成一个.java文件。一起编译.class文件。

JSP的内置对象

1.概念:这些内置对象可以直接使用。exception对象,page指令有一个属性,isErrorPage设置true才能使用exception对象。

2.内置对象

    request                HttpServletRequest                 

    response                HttpServletResponse

    session                HttpSession

    application            ServletContext

    out                    JspWriter

    pageContext            PageContext

    page                    Object(代表当前对象)

    config                  ServletConfig

    exception              Throwable

3.out对象,真实的对象JspWriter,可以向页面输出内容。  PrintWriter response.getWriter();这俩对象之间的联系?

    <%= "HELLO" %>

    <% out.print("AAAA"); %>

    <% response.getWriter().print("BBBB"); %>

    <% out.print("CCCC"); %>

    * 输出的结果是:BBBB HELLO AAAA CCC

pageContext对象

1.这一个对象顶9个。可以获取另外的8个对象。

2.域对象:代表当前的页面的域。

3.向其他的域对象中存取值。

4.pageContext对象的API

    * setAttribute(String name, Object value)

    * setAttribute(String name, Object value, int scope)

    * Object getAttribute(String name) 

    * Object getAttribute(String name, int scope) 

    * Object findAttribute(String name)        全域查找,默认从最小的域中找值,如果找不到,上一个域中找。

5.作用

    * 编写框架的时候

    * 自定义标签

    * 编写通用性较高的代码。

JSP的动作标签

1.        转发的功能

    * page属性:转发到哪个页面上去啊!!

    * 转发的路径:服务器绝对路径(不包含包含项目名称)

2.          转发的时候可以传递参数

    * 在转发中使用属性 放在标签的中间

    * name  :参数的名称

    * value :参数的值

3.        动态包含(和静态包含结果是一样的,原理是不一样的)

    * page属性:包含的页面的路径

    * 在源码的文件下,生成了4个.java和.class的文件。

JavaBean的规范(封装数据) 工具类

1.JavaBean:就是一个普通的java类,但是符合JavaBean规范。

2.JavaBean规范

    * 这个java类必须有无参数的构造方法。

    * 属性私有化。

    * 提供了public get和set方法。get或者set只要有一个就行。

3.JavaBean的作用:封装数据。

4.JavaBean的属性:是由get或者set方法来决定的。

5.JSP文件完成封装数据。

    * 标签:用于在JSP页面中查找或实例化一个JavaBean组件。

    * 标签:用于在JSP页面中设置一个JavaBean组件的属性。

    * 标签:用于在JSP页面中获取一个JavaBean组件的属性

6.Servlet里面使用JavaBean封装数据

内省的技术(了解)

1.通过内省的技术可以来操作JavaBean的属性的读写方法。

2.Introspector 

BeanUtils(学会)

1.如果使用BeanUtils工具类,需要先导入两个jar包。  commons-beanutils-1.8.3.jar    commons-logging-1.1.1.jar

2.编写代码。(字符串转换日期类型的代码)

    * 第一步:需要编写类,实现Converter接口,重写一个方法(字符串转换成日期)。

    * 第二步:使用ConvertUtils.register()注册的操作。

        *  static void  register(Converter converter, Class clazz)

        *  converter    传入自己编写实现类

        *  clazz        转换的数据的类型    Date.class

        *  注意:注册的方法放在封装数据之前。

3.会封装数据(BeanUtils工具的使用)   

4.会转换(日期类型的数据的转换)

EL表达式(重点)

1.JSP内置的一种表达语言。

2.作用:

    * 从域对象中获取属性的值。(request.setAttribute("xx","yy")  )

    * 执行运算

    * 提供了一些常用WEB对象(例子:cookie)

    * 调用Java的方法

3.语法:${ 表达式内容 }

4.注意事项:

    * page指令:是否忽略EL表达式。如果忽略了,JSP上就不能使用EL表达式。(isELIgnored)

EL表达式获取域对象中的属性值

1.如果域对象中属性的名称有相同的,使用EL表达式默认从最小的域中取值。

2.list和数组使用下标值取值    ${ list[0] }

3.如果是map集合或者对象 ${ map.aaa }

    * 如果Map集合的key是特殊字符的话,使用${map["ccc.ddd"]}

EL支持运算

EL的常用的对象

1.pageScope                page域

2.requestScope              request域

3.sessionScope              session域

4.applicationScope          application域

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

推荐阅读更多精彩内容