JSP

  1. 概念:Java Server Pages Java服务器端页面

    • 一个特殊的页面,其中既可以定义html标签,又可以定义Java代码。
    • 作用:简化书写
    • jsp本质上就是一个Servlet
    • 简介:JSP(Java Server Pages,即:Java服务器页面),是一种跨平台的动态网页技术标准,由Sun Microsystems公司倡导、多家公司参与建立。它在HTML文件中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
  2. 原理

    1. 服务器解析请求消息,获取index.jsp资源
    2. 将index.jsp转换为.java文件(本质就是Servlet)
    3. 编译.java文件,生成.class字节码文件
    4. 由字节码文件提供访问

    详细过程:

    1. Web服务器识别出这是一个对JSP网页的请求,并且将该请求传递给JSP引擎。通过使用URL或者.jsp文件来完成。
    2. JSP引擎从磁盘中载入JSP文件,然后将它们转化为servlet。这种转化只是简单地将所有模板文本改用println()语句,并且将所有的JSP元素转化成Java代码。
    3. JSP引擎将servlet编译成可执行类,生成.class字节码文件,并且将原始请求传递给servlet引擎。
    4. Web服务器的某组件将会调用servlet引擎,然后载入并执行servlet类。在执行过程中,servlet产生HTML格式的输出并将其内嵌于HTTP response中上交给Web服务器。
    5. Web服务器以静态HTML网页的形式将HTTP response返回到您的浏览器中。
      最终,Web浏览器处理HTTP response中动态产生的HTML网页,就好像在处理静态网页一样。
  3. JSP的脚本:JSP定义Java代码的方式

    1. <% 代码 %>:定义的Java代码的位置:在 service方法中,service方法中可以定义什么,该脚本中就可以定义什么
    2. <%! 代码 %>:定义的Java代码的位置:在jsp转换后的Java类的成员位置。【用的较少】
    3. <%= 代码 %>:定义的Java代码,会输出到页面上。输出语句中可以定义什么,该脚本中就可以定义什么
  4. 指令

    • 作用:用户配置jsp页面,导入资源文件
    • 格式:
      • <%@ 指令名称 属性名1=属性值1 属性名2=属性名2 %>
    • 分类
      1. page:用户配置jsp页面
        • 可以配置哪些属性
          1. contentType:等同于 response.setContentType()。比如:contentType=“text/html;charset=UTF-8”
            1. 设置响应体的MIME类型以及字符集
            2. 设置当前jsp页面的编码(只能是高级IDE才能生效。如果使用低级工具,如记事本,则需要设置pageEncoding属性设置当前页面的字符集)
          2. buffer:设置页面out输出对象的缓冲区大小,默认是8kb。比如:buffer=“16kb”
          3. import:导包。比如:<%@ page import=“java.util.List” %>
          4. errorPage:当前页面发生异常后,会跳转到指定的错误页面。比如:errorPage=“500.jsp”
          5. isErrorPage:标识当前页面是否是错误页面。
            • false:默认值,不可以使用exception对象
            • true:可以使用内置对象exception。 比如:<% out.print(exception.getMessage()); %> 输出错误信息到页面
          6. isELIgnored:是否忽略EL表达式
            • false:默认是,不忽略EL表达式,jsp引擎会解析表达式
            • true:忽略EL表达式,原样展示EL表达式内容
      2. include:完成页面包含的。导入页面的资源文件。
        • 比如:<%@include file=“top.jsp”%>
      3. taglib:导入资源
  5. jsp页面的注释

    1. :只能用来注释html代码片段
    2. <%-- 注释 --%>:可以用来注释所有代码。【推荐使用】
  6. JSP的隐式对象(内置对象)

    • JSP隐式对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明。JSP隐式对象也被称为预定义变量。
    • jsp有9个内置对象。其中有4个为域对象:request、session、pageContext、application
      • request:HttpServletRequest类的实例
        • 作用:一次请求访问的多个资源(转发)
      • session:HttpSession类的实例
        • 一次会话的多个请求间
      • pageContext:PageContext类的实例,代表整个JSP页面。可以获取其他8个内置对象.
        • 作用:当前页面共享数据。
      • application:ServletContext类的实例,与应用上下文有关
        • 所有用户间共享数据。
      • response:HttpServletResponse类的实例,相应对象
      • out:PrintWriter类的实例,用于把结果输出至网页上,字符输出流对象。可以将数据输出到页面上。和 response.getWriter() 类似
        • response.getWriter()和out.print()的区别
          • 在tomcat服务器真正给客户端做出响应之前,会先找response缓冲区数据,再找out缓冲区数据。response.getWriter()数据输出永远在out.print()之前。
          • 不推荐在jsp中使用response.getWriter()输出,容易影响布局。
      • config:ServletConfig类的实例
      • page:类似于Java类中的this关键字
        • 当前Servlet对象
      • Exception:Exception类的对象,代表发生错误的JSP页面中对应的异常对象
  7. MVC:软件设计架构

    1. Model 模型。JavaBean
      • 封装数据,操作数据库,处理业务逻辑
    2. View 视图。jsp/html
      • 展示数据
    3. Controller 控制器。Servlet
      1. 获取客户端输入
      2. 调用模型
      3. 将数据交给视图展示
    • 优点:耦合性低,重用性高,生命周期成本低,部署快,可维护性高
    • 缺点:项目架构变得复杂,对开发人员要求高
  8. EL表达式 https://blog.csdn.net/qwerasdf123/article/details/4189889

    1. 概念:Expression Language 表达式语言
    2. 作用:替换和简化jsp页面中Java代码的编写
    3. 语法 ${表达式}
    4. 注意
      • jsp默认支持EL表达式
        • 忽略EL表达式
          1. 忽略当前jsp页面所有表达式:设置page指令中的属性isELIgnored=true
          2. 忽略某个EL表达式,EL表达式前添加反斜杠\:${表达式}
    5. 功能
      1. 运算
        • 运算符
          1. 算数运算符: 加+ 减- 乘* 除/或者div 取余%或者mod
          2. 比较运算符: > < >= <= == != 。返回值就是true、false
          3. 逻辑运算符:&&(and) ||(or) !(not)
          4. 空运算符:empty
            • ${empty 值}:判断字符串、集合、数组对象是否为null或者长度是否为0
            • ${not empty 值}:判断字符串、集合、数组对象不为null并且长度不为0
      2. 获取值,【常用】
        1. EL表达式只能从域对象中获取值。域对象:request、session、pageContext、application
        2. 语法
          1. 域 名 . 键 名 : 从 指 定 域 中 获 取 指 定 键 的 值 。 如 果 {域名.键名}:从指定域中获取指定键的值。如果 .{域名.键名}获取值为空,页面不会展示null,不展示任何异常字符。
            • 域名,域的范围从小到大,如下:
              1. pageScope --> pageContext
              2. requestScope --> request
              3. sessionScope --> session
              4. applicationScope --> application(ServletContext)
            • 比如:在request域中存储了key=value。
            • 获取:${requestScope.key}
          2. ${键名}:表示从依次从最小的域中查找是否有该键对应的值,直到找到为止。
          3. 若域对象存储的数据对应的是对象、List集合、Map集合的值,如何获取?
            1. 对象:
              • 语法:${域名.键名.属性名}
              • 本质上会去调用对象的getter方法
            2. List集合
              • 语法:${域名.键名[索引]}
            3. Map集合
              • 语法1:${域名.键名.key名称}
              • 语法2:${域名.键名[“key名称”]}
      3. 隐式对象
        • EL表达式中有11个隐式对象
          • pageContext:获取jsp其他8个内置对象
            • ${pageContext.request}
            • ${pageContext.request.contextPath} 动态获取虚拟目录。
              • 比如: code…
  9. JSTL标签

    1. 概念:JSTL(JavaServer Pages Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由Apache的来维护的。
    2. 作用:用户简化和替换jsp页面上的java代码。
    3. 使用步骤
      1. 导入JSTL相关的jar包
      2. 引入标签库
    4. 常用的JSTL标签
      1. if :相当于Java代码if语句c:if标签。比如:<c:if test=“boolean表达式”></c:if>

        1. 属性

          • test:接收boolean表达式(必须的属性)
            • 表达式为true,则显示if标签体内容
            • 表达式为false,则不显示if标签体内容
            • test表达式,一般结合EL表达式一起使用
        2. c:if标签没有else情况。若需要else,则再定义一个c:if标签
          <c:if test="${number % 2 != 0}">
          ${number}为奇数
          </c:if>

          <c:if test="${number %2 == 0}">
          ${number}为偶数
          </c:if>

      2. choose :相当于switch

        • choose 相当于switch声明
        • when 相当于case
        • otherwise 相当于default

        比如:
        <c:choose>
        <c:when test=“表达式”></c:when>
        <c:otherwise></c:otherwise>
        </c:choose>

      3. foreach:相当于Java中的for循环【重要,常用】

        • 普通for循环:for (int i = 0; i <= 10; i++) {}
          • 属性
          • begin:开始值(包含)
          • end:结束值(包含)
          • var:临时变量(相当于i)
          • step:步长(每次循环增加的数量)
          • varStatus:循环状态对象
            • count:循环的次数,从1开始
        • 增强for循环:foreach
          • 属性
            • item:容器对象。 相当于list
            • var:容器中元素的临时变量 相当于user
            • varStatus:循环状态对象
              • index:容器中元素的索引,从0开始
              • count:循环的次数,从1开始
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值