• JSP深入


    JSP深入
    之前了解了JSP的基本原理。现在开始更深入的学习
    JSP的注释
    支持三种注释
    1,JSP注释<%-- --%>只存在JSP代码源码中,当被翻译成Servlet时,这类注释会消失,不会在编译成的文件中存在
    2,java注释,/** */文档注释,生成javadoc,主要用来注释包,类,成员变量成员方法
    /* */多行注释和单行注释//,注释代码实现逻辑。
    该类注释在被翻译成Servlet时,注释存在,但是执行时会忽略注释,不会在生成的HTML代码中存在
    3.HTML注释<!-- -->
    在JSP翻译为Servlet时,会被翻译out.print打印出的语句,在HTML页面源代码该类注释是存在的。

    JSP指令元素
    用于指示JSP执行某些步骤和特定行为
    语法格式
    <%@ directive[attribute="value"]*%>
    指令的分类
    page指令标记
    语法格式<%@ page[attribute="value"]*%>用来定义JSP文件的全局属性
    常用属性
    1,language;声明脚本的种类,暂时只能支持java
    2,extends;表名JSP编译时需要加入的java全类名,内部的类都会继承自该类,所以一般不设置,如果设置的话改类必须是Servlet的一个实现类
    3,session;指定JSP中是否可以直接使用Session对象,默认为true,编译成serlvet时会自动提供session的空引用
    HttpSession session=null;
    session=PageContext.getSession();
    这样就可以直接在JSP文件中操作session对象
    4,import属性;完成JSP翻译后Servlet的导包工作
    jsp在翻译为Servlet时会默认导包
    import javax.servlet.*;
    import javax.servlet.http.*;
    import javax.servlet.jsp.*;
    5,buffer autoFlush属性设置out隐含对象属性
    buffer设置缓冲区大小,autoFlush设置当前缓冲区满后,自动刷出。
    6,isELIgnored设置是否执行EL表达式是否解析,默认为false
    7,contentType和pageEncoding设置JSP页面编码,pageEncoding是JSP文件保存在硬盘上的编码格式。contentType传递的是jsp文件编译成Servlet时所采用的编码格式
    8,errorpage和isErrorpage用来设置错误页面之后的跳转,errorpage用于指定发生错误时跳转的页面
    错误页面处理的方式一般不通过设置属性这种方法来完成,而是在web.xml进行配置,这种配置可以全局处理错误页面。
    <error-page>
    <error-code></error-code>
    <location></location>
    </error-page>

    include指令标记
    用来静态的包含页面,将页面公共部分提取出来,通过include完成页面布局
    语法格式<%@ include file="url"%>
    要注意include包含被包含页面的整个内容,被包含页面可以不是一个完整的HTML文件,可以只是一个HTML片段。
    静态包含不管包含几个jsp页面,最终生成的目标servlet文件都是只有一个,将被包含的jsp页面翻译成的servlet语句进行了合并。

    taglib指令标记
    用来在jsp页面引用标签库文件
    定义标签的作用是为了简化jsp页面的开发,常用标签库jstl
    <%taglib uri="" prefix=""%>
    uri定义标签唯一命名空间
    prefix命名空间的前缀


    JSP的九大内置对象
    JSP文件翻译成Servlet时这些对象是默认已经创建好的
    request HttpServletRequest -----请求对象
    response HttpServletResponse -----响应对象
    session HttpSession -----会话对象
    application ServletContext -----Web应用全局唯一对象
    out JSPWriter
    pageContext PageContext
    page this(HttpServlet) -----由当前jsp文件生成的Servlet类文件对象Object类型,一般不使用
    config ServletConfig
    exception Throwable

    pageContext对象
    JSP在Servlet的基础上又多了一种page数据范围pageContext页面上下文对象
    pageContext.findAttribute("name");
    该方法按照page-request-session-application的顺序根据名称就近查找数据范围
    pageContext对象中封装了其他八个隐含对象,可以通过方法获得其他对象,得到了pageContext对象就相当于获得了其他对象,常应用于框架的编写

    out对象
    向浏览器输出信息本身是一个JSPWriter类型,内部使用PriterWriter来实现,拥有独立的缓冲区
    可以通过page指令设定缓冲区大小以及是否自动刷新
    与response.getWriter()的区别,response.getWriter的缓冲区与out的缓冲区是相互独立的,out缓冲区刷新数据会输出到response.getWriter的缓冲区内,所以out是必须要经过resonse对象进行回写的

    JSP常用标签action元素
    <jsp:useBean>
    使用一个ID和一个给定作用范围和同一ID的JavaBean相关联
    <jsp:setProperty>
    设置JavaBean的属性值
    <jsp:getProperty>
    获取JavaBean的属性值
    <jsp:include>
    请求时文件包含,等价于request.getRequestDispatcher().include(),是动态包含,在运行时执行包含动作,编译时生成多个servlet程序
    <jsp:forward>
    接收用户输入并将请求分派给另一页面,等价于request.getRequestDispatcher().forward();
    <jsp:param>
    转发时可以传递的参数,一般嵌套于forward标签内部

    EL表达式
    功能
    1,可以或得JSP四个数据范围内保存的数据(访问JavaBean属性)
    ${pageScope.属性名称}${requestScope.属性名称}${sessionScope.属性名称}${applicationScope.属性名称}
    如果不指定查找范围直接${属性名称}会直接调用pageContext.findAttribute(name)在四个数据范围内一次查找,如果没有找到会返回一个空字符串而不是null
    对于存放在数据域范围内的复杂对象例如JavaBean属性,也可以通过EL标签进行获取,此时是将JavaBean作为属性,对象作为属性值,访问对象中的成员直接${pageScope.person.name}获取,对于集合数组对象的获取${pageScope.list[i]}对于map结合${pageScope.map["key"]}

    2,EL表达式支持运算
    保留关键字and,true,instanceof,empty,div,false等,变量的命名应该避开关键字

    3,EL内置11个web开发常用对象
    pageScope,requestScope,sessionScope,applicationScope等十一个内置map对象
    4,EL可以调用java方法
    EL函数库,存在于jstl标签库中,主要是对字符串的处理函数

    JSTL标签库
    对于要求比较严格的时候,是不允许JSP内部定义脚本元素的,需要使用jstl标签库来实现功能,类似一种书写规范。
    JSTL标签库中共分为五个方向
    核心标签库(core)
    国际化标签库(fmt)
    数据库标签sql
    XML标签xml
    EL函数库fn
    每个标签库在jar包中的meta-inf文件夹下都有一个对应的tld文件
    通过taglib标签导入标签库
    <%@taglib uri="",prefix=""%>具体的uri与prefix值在tld文件中都可以找到,对应着<uri>与<short-name>标签

  • 相关阅读:
    PAT 字符串-02 删除字符串中的子串
    带滚动条的文本文件
    PAT IO-04 混合类型数据格式化输入(5)
    PAT IO-03 整数均值
    PAT IO-02 整数四则运算
    linux 之shell
    linux 软件包安装-脚本安装
    Linux 关闭防火墙命令
    linux RPM包管理-yum在线管理
    linux 软件包管理
  • 原文地址:https://www.cnblogs.com/ss561/p/4637703.html
Copyright © 2020-2023  润新知