zoukankan      html  css  js  c++  java
  • 初识JSP

    JSP运行原理

    1.第一次向JSP页面发送请求时JSP引擎会将jsp页面翻译成java文件
    2.java虚拟机将java文件编译成class文件
    3.Servlet容器根据对应的类创建对象处理用户的请求

    JSP脚本片段

    作用:在里面写java代码
    格式:<% java代码 %>

    JSP表达式

    作用:用来向浏览器输出对象
    格式:<%= %>

    JSP注释

    格式:<%-- --%>
    jsp中允许有html、java、jsp3种注释,在生成的java文件中,不显示JSP注释,但是可以看到另外两种注释;java虚拟机在编译文件的时候会忽略java的注释,通过out.write写到浏览器页面的时候,浏览器会忽略html注释。

    JSP的隐含对象

    JSP的隐含对象又成为JSP内置对象,也就是在JSP脚本片段中不用再声明了,可以直接用的对象。JSP中共有9个隐含对象。

    ①out(JspWriter):相当于response.getWriter()获取的对象,用于在页面中显示信息。

    ②config(ServletConfig):对应Servlet中的ServletConfig对象。用来获取配置信息

    ③page(Object):对应当前Servlet对象,实际上就是this。

    pageContext(PageContext):当前页面的上下文,也是一个域对象。

    ⑤exception(Throwable):错误页面中异常对象

    request(HttpServletRequest):HttpServletRequest对象

    ⑦response(HttpServletResponse):HttpServletResponse对象

    application(ServletContext):ServletContext对象

    session(HttpSession):HttpSession对象

    其中pageContext(PageContext)可以通过方法来获得其他8个对象。

    其中JSP的4个域对象

    1. page域,范围:当前页面。对应的域对象:pageContext(PageContext),域对象类型:PageContext
    2. request域:范围:当前请求(一次请求)。对应的域对象:request(HttpServletRequest),域对象类型:HttpServletRequest
    3. session域。范围:当前会话(一次会话)。对应的域对象:session(HttpSession),域对象类型:HttpSession
    4. application域,范围:当前Web应用。对应的域对象:application(ServletContext),域对象类型:ServletContext
    四个域对象都有以下三个方法:

    void setAttribute(String key , Object value);
    Object getAttribute(String key);
    void removeAttribute(String key);

    四个域对象的使用规则:

    能用小的就不用大的

    EL表达式

    作用:用来输出域对象中的属性值。所以,要想让EL表达式可以取到值,必须得先把值放到域中。
    EL表达式的查询规则:

    ①EL是JSP内置的表达式语言,用以访问页面的上下文以及不同作用域中的对象 ,取得对象属性的值,或执行简单的运算或判断操作。EL在得到某个数据时,会自动进行数据类型的转换。

    ②EL表达式用于代替JSP表达式(<%= %>)在页面中做输出操作。

    ③EL表达式仅仅用来读取数据,而不能对数据进行修改。

    ④使用EL表达式输出数据时,如果有则输出数据,如果为null则什么也不输出。

    ⑤EL表达式的语法:
    ${ EL表达式(可完成取值、简单的判断、简单的运算等)}

    EL表达式的查询规则:
    默认进行全域查找,先从page域中开始查找,找到后直接返回,不再去其他域中查找,如果在page域中找不到再去request域中查找,在requet域中找到后也是直接返回,以此类推...如果在application域中也找不到则什么也不输出

    ⑥EL取值的四个域:
    EL给我们提供了四个Scope对象,用来精确获取指定域中的属性值,可以在EL表达式中直接使用:

    1. pageScope
      -获取page域中的属性值

    2. requestScope
      -获取request域中的属性值

    3. sessionScope
      -获取session域中的属性值

    4. applicationScope
      -获取application域中的属性值

    特别说明:

    • 通过EL表达式获取JavaBean的属性值
      通过 对象.属性名 的方式获取,注意!!!!这里虽然是通过对象.属性名获取JavaBean的属性值,底层实际调用的是对应的getXxx方法,比如:${student.name},实际是调用Student对象的getName()方法,而属性名可以为name2,只要getName()方法名称不变,就依然可以取到值。只不过一般我们的get方法后面的内容就是我们的属性值,所以看形式像是对象.属性名的方式获取的值。
    • 其中,pageContext既是JSP的隐含对象,也是EL的隐含对象
      比如,在EL表达式中获取项目虚拟路径和JSP表达式获取虚拟路径的对比:
      在JSP表达式中:
      <%=request.getContextPath() %>
      在EL表达式中:
      ${pageContext.request.contextPath} 原理也很好理解,即通过pageContext对象来获取request,通过request.contextPath来调用etContextPath()进而获得虚拟路径。

    注意:一般情况在,在后台的Servlet中放置信息,然后在前端同过EL表达式来取值,比如在Servlet中,request.SetAttribute("msg","用户名密码错误!");

    在前端通过EL表达式获取msg:${requsetScope.msg}

  • 相关阅读:
    NYOJ 260
    NYOJ 271
    [转载]《博客园精华集》Winform筛选结果(共105篇)
    在DataGridView控件中加入ComboBox下拉列表框的实现
    给SQL补充一个查看表结构的存储过程
    编写自定义控件之下拉式属性
    PropertyGrid中的枚举显示为中文(转)
    DataGridView 中合并单元格
    树TreeView控件与DataTable交互添加节点(最高效的方法)
    通过键盘方向键控制TreeView节点的移动
  • 原文地址:https://www.cnblogs.com/zhqin/p/11710629.html
Copyright © 2011-2022 走看看