jsp

    技术2022-07-10  139

    jsp_学习笔记

    什么是jsp

    sun公司制订的一种服务器端的动态页面技术规范。

    注: 虽然使用servlet也可以生成动态页面,但是过于繁琐(需要使用out.print语句),并且利于页面的维护(如果修改页面,就需要修改java代码), 所以,sun才推出了jsp规范。 jsp是一种以 .jsp为后缀的文件,主要内容是html和少量的java代码. 容器会将jsp转换成一个servlet然后执行.

    如何写一个jsp文件?

    step1.写一个以.jsp为后缀的文件

    step2.可以添加如下内容:

    a.html(css,js): 直接写。

    b.java代码:

    第一种:java代码片断 <% java代码 %> 第二种: jsp表达式 <%= java表达式 %> 第三种: jsp声明 (a1.jsp) <%! 声明一个变量或者方法 %>

    c.隐含对象:

    什么隐含对象? 直接可以使用的对象。 为什么可以使用这些隐含对象? 容器会自动添加获得这些对象的代码。 有哪些隐含对象? out,request,response session    application pageContext: 容器会为每一个jsp实例创建唯一的 一个符合PageContext接口要求的对象, 该对象会一直存在,除非jsp实例被删除。 作用1:绑订数据。(a2.jsp,a3.jsp) 注:绑订到pageContext上的数据, 只有对应的jsp实例能够访问,类似于“钱包”。 作用2:提供了一些方法,用于获得其它 所有隐含对象。 config: ServletConfig (a4.jsp) exception: 获得异常的描述性信息。(a5.jsp,a6.jsp) 注:只有当page指令的isErrorPage 属性值为true时,才能使用。 page (了解) jsp实例本身。 注:jsp实例是jsp对应的servlet对象。

    d.指令

    什么是指令? 告诉容器将jsp转换成一个servlet时,做一些额外的处理,比如导包。 指令的语法: <%@ 指令名 属性=值 %> page指令 import属性:导包。 pageEncoding属性:设置jsp页面的编码。 contentType属性:设置 response.setContentType的内容。 errorPage属性:指定一个异常处理页面。当jsp 运行时发生了异常,容器会调用异常处理页面。 isErrorPage属性:缺省值是false,如果为true, 就可以使用exception隐含对象。 session属性: (a7.jsp)缺省值是true,如果为false,则不能够使用session隐含对象了。 include指令 告诉容器,在将jsp转换成servlet时,将file 属性指定的文件的内容插入到该指令所在的位置。 file属性:指定被包含的文件名。 注: 被包含的jsp并没有真正执行,只是负责提供 内容。所以,被包含的文件也可以是其它类型 的文件,比如html文件。 taglib指令 导入jsp标签。

    e.注释 (a8.jsp)

    <!-- 注释的内容 --> 注: 如果被注释的内容是java代码,java 代码会执行,但是执行结果并不会在浏览 器端显示出来。 <%-- 注释的内容 --%> 注:如果被注释的内容是java代码,不会执行。

    jsp是如何执行的?

    容器会将jsp转换成servlet

    html(css,js) ----> 在service方法里面,使用 out.write输出。 <% %> ----> 在service方法里面,照搬。 <%= %> ----> 在service方法里面,使用 out.print输出。 <%! %> ----> 添加新的属性或者方法。

    jsp标签

    什么是jsp标签

    是sun公司为了替换jsp中的java代码而推出的一种技术, 语法类似于html标签(有开始标记、属性、结束标签、标签体)

    什么是EL表达式

    是一套简单的运算规则,用于给jsp标签的属性赋值。

    注: el表达式也可以脱离jsp标签直接使用。

    EL表达式的使用

    因为jsp默认是忽略el表达式的,所以应该在jsp页面顶部将isELIgnored 属性设置为false

    1)读取JavaBean

    方式一:${user.username}
    注: a.执行过程: 容器依次从pageContext-->request-->session-->application中找绑订名为 "user"的对象(即调用getAttribute方法), 接下来,调用该对象的"getUsername"方法, 然后输出。 b.优点: el表达式比java代码更简洁。 会将null转换成""输出。 如果依据绑订名找不到对应的对象, 不会发生空指针异常。 c.可以使用pageScope,requestScope,sessionScope, applicationScope来指定查找范围
    方式二 ${user[‘username’]}

    注: a. []里面还可以使用绑订名。 b. []里面还可以使用从零开始的下标,用于 读取数组中指定下标的某个元素的值。

    2)使用el表达式做一些简单的运算

    a.算术运算

    +,-,*,/,% 注: + 只能求和。

    b.关系运算

    >,<,==,!=,>=,<=

    c.逻辑运算

    &&, ||,!

    d.empty运算

    判断集合是否为空或者是否为一个空字符串,如果是, 返回true。

    3)读取请求参数值

    a.${param.username}

    等价于request.getParameter("username");

    b.${paramValues.interest}

    等价于request.getParameterValues("interest");

    Processed: 0.017, SQL: 9