暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

JSP简介

Hello 帅帅 2021-02-05
618
  • Java Server Pages:java服务器端页面

  • 一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码

  • JSP本质上就是一个Servlet


基础语法

定义代码块

  1. <% 代码 %>
    :定义的java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么

  2. <%! 代码 %>
    :定义的java代码,在jsp转换后的java类的成员位置。

  3. <%= 代码 %>
    :定义的java代码,会输出到页面上。输出语句中可以定义什么,该脚本中就可以定义什么。

JSP的内置对象:

在jsp页面中不需要获取和创建,可以直接使用的对象(共九个)

  • request

  • response

  • out:字符输出流对象。可以将数据输出到页面上。和response.getWriter()类似

response.getWriter()和out.write()的区别:

   在tomcat服务器真正给客户端做出响应之前,会先找response缓冲区数据,再找out缓冲区数据。

response.getWriter()数据输出永远在out.write()之前

JSP指令

page

配置JSP页面的

  • contentType:等同于response.setContentType()

    • 设置响应体的mime类型以及字符集

    • 设置当前jsp页面的编码(只能是高级的IDE才能生效,如果使用低级工具,则需要设置pageEncoding属性设置当前页面的字符集)

  • import:导包

  • errorPage:当前页面发生异常后,会自动跳转到指定的错误页面

  • isErrorPage:标识当前也是是否是错误页面。

    • true:是,可以使用内置对象exception

    • false:否。默认值。不可以使用内置对象exception

include

页面包含的。导入页面的资源文件

 <%@include file="hello.jsp"%>

taglib

导入资源

 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

prefix:前缀,自定义的

页面显示顺序

  1. response.getWriter().write("写入的内容")

  2. <%@ include file="要导入的内容.jsp"%>

  3. <h1>html标签</h1>

  4. <%= 输出内容 %>

案例

index.jsp

     <%@ page contentType="text/html;charset=UTF-8"
    pageEncoding="utf-8"
    import="java.util.List"
    errorPage="error.jsp"
    language="java" %>
    <%@ include file="hello.jsp"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%--注释--%>
    <html>
    <head>
    <title>Title</title>
    </head>
    <body>

    <h1>hell1o</h1>
    <% System.out.println("Hello World" + a); %>
    <% response.getWriter().write("<h6>heeeello</h6>");
    %>
    <%= "<h6>hello</h6>"%>
    <%! int a = 10; %>
    <c:forEach></c:forEach>

    </body>
    </html>



      error.jsp
      <%@ page contentType="text/html;charset=UTF-8"
      pageEncoding="utf-8"
      isErrorPage="true"
      errorPage="error.jsp"
      language="java" %>
      <html>
      <head>
      <title>Title</title>
      </head>
      <body>

      <h1>页面错误</h1>

      <%= exception.getMessage() %>
      </body>
      </html>


      hello.jsp

         <%@ page contentType="text/html;charset=UTF-8" language="java" %>
        <h1>xxxxxxxxxxxx</h1>

        内置对象

        一共有9个:

        变量名真实类型真实类型
        pageContextPageContext当前页面共享数据,还可以获取其他八个内置对象
        requestHttpServletRequest一次请求访问的多个资源(转发)
        sessionHttpSession一次会话的多个请求间
        applicationServletContext所有用户间共享数据
        responseHttpServletResponse响应对象
        pageObject当前页面(Servlet)的对象 this
        outJspWriter输出对象,数据输出到页面上
        configServletConfigServlet的配置对象
        exceptionThrowable异常对象

        EL表达式

        语法:${表达式}

        运算表达式

        1. 算数运算符:+ - * (div) %(mod)

        2. 比较运算符:> < >= <= == !=

        3. 逻辑运算符:&&(and) ||(or) !(not)

        4. 空运算符:empty

          • 功能:用于判断字符串、集合、数组对象是否为null或者长度是否为0

          • ${empty list}
            :判断字符串、集合、数组对象是否为null或者长度为0

          • ${not empty str}
            :表示判断字符串、集合、数组对象是否不为null 并且 长度>0

        获取值

        域名称:

        1. pageScope --> pageContext

        2. requestScope --> request

        3. sessionScope --> session

        4. applicationScope --> application(ServletContext)

        举例:在request域中存储了name=张三

        获取:${requestScope.name}

        获取对象

        1. 对象:${域名称.键名.属性名}

          1. 本质上会去调用对象的getter方法

        2. List集合:${域名称.键名[索引]}

        3. Map集合:

          1. ${域名称.键名.key名称}

          2. ${域名称.键名["key名称"]}

        JSTL

        JavaServer Pages Tag Library JSP标准标签库

        if

           <c:if test="true">
          <h1>我是真...</h1>
          </c:if>

          choose

             <c:choose>
            <c:when test="${number == 1}">星期一</c:when>
            <c:when test="${number == 2}">星期二</c:when>
            <c:when test="${number == 3}">星期三</c:when>
            <c:when test="${number == 4}">星期四</c:when>
            <c:when test="${number == 5}">星期五</c:when>
            <c:when test="${number == 6}">星期六</c:when>
            <c:when test="${number == 7}">星期天</c:when>
            <c:otherwise>数字输入有误</c:otherwise>
            </c:choose>

            foreach

               <c:forEach begin="1" end="10" var="i" step="2" varStatus="s">
              ${i} <h3>${s.index}<h3> <h4> ${s.count} </h4><br>
              </c:forEach>
              <c:forEach items="${list}" var="str" varStatus="s">
              ${s.index} ${s.count} ${str}<br>
              </c:forEach>




              最后修改时间:2021-02-05 15:14:49
              文章转载自Hello 帅帅,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

              评论