写点什么

【JavaWeb】JSP 学习笔记

作者:游坦之
  • 2022-11-27
    山东
  • 本文字数:1844 字

    阅读完需:约 6 分钟

1 JSP

1.1 什么是 JSP

  • JSP:Java Server Pages,Java 服务端页面

  • JSP 是一种动态的网页技术,其中既可以定义 HTML、CSS、JS 等静态内容,还可以定义 Java 代码的动态内容

  • JSP = HTML + Java,用于简化开发的

  • JSP 本质上就是一个 Servlet

  • JSP 在被访问的时候,又 JSP 容器(Tomcat)将其转换为 Java 文件(Servlet,.java 文件),再由 JSP 容器将其编译(.class 文件),最终对外提供服务的其实就是这个字节码文件。

  • JSP 已经逐渐退出历史舞台,取而代之的是 Html+AJAX,或者 Vue



1.1.1 JSP 的发展历程

1.2 JSP 的快速入门

1.2.1 引入依赖

还是要使用 provided,和 Servlet 一样


    <dependency>      <groupId>javax.servlet.jsp</groupId>      <artifactId>jsp-api</artifactId>      <version>2.2</version>      <scope>provided</scope>    </dependency>
复制代码

1.2.2 创建 jsp 文件

放在 Webapp 下


1.2.3 编写 JSP 代码

效果是 java 控制台输出 你好啊,页面上展示 好什么好都穷的快要饭了


<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head>    <title>Title</title></head><body>    <%        System.out.println("你好啊!");    %>    <h1>        好什么好,都快穷的要饭了    </h1></body></html>
复制代码



1.3 JSP 脚本(很少用)

1.3.1 JSP 脚本的作用

在 Jsp 页面定义 Java 代码,其实 JSP 本身就是一个 Servlet,其中的 HTML 代码都是通过 write 展示出来的

1.3.2 JSP 脚本的分类

因为写起来太麻烦了,就不写了


1.3.3 JSP 脚本的截断

写一段代码就明白了,作用就是在一些 java 代码中嵌入 html 代码,其实和原理就是通过 write 把 html 代码渲染到页面上。


<%  for(int i=0;i<brands.size();i++)    {        Brand brand = brands.get(i);     //截断%>     //在这里写html代码    <tr>      <td><%=brand.getId()%></td>            <td><%=brand.getBrandName()%></td>    </tr><%    }%>
复制代码

1.4 JSP 的缺点


基于上,所以 JSP 已经逐渐退出历史舞台,只有部分老公司还在用。

2 EL 和 JSTL

2.1 EL

2.1.1 什么是 EL

  • El:Expression Language,表达式语言,用于简化 JSP 页面内的 Java 代码。

  • 主要功能:获取数据

  • 语法:${expression} : 获取域中存储的 key 为 expression 的数据

2.1.2 Java Web 四大域对象

  1. page : 当前页有效

  2. request:当前请求有效

  3. session:当前会话有效

  4. application:当前应用有效


el 表达式获取数据,会依次用这四个域中寻找,直到找到为止,找到之后就不再寻找了,常用的是 request session


2.2 JSTL

2.2.1 什么是 JSTL

JSP 标准标签库(JSP Standarded Tag Library),使用标签取代 JSP 页面上的代码。

2.2.2 JSTL 的常用标签

https://www.runoob.com/jsp/jsp-jstl.html


2.2.3 JSTL 的使用

2.2.3.1 引入 JSTL 的依赖 JSTL 和 Standard

 <dependcies>  <dependency>      <groupId>jstl</groupId>      <artifactId>jstl</artifactId>      <version>1.2</version>    </dependency>    <!--standard-->    <dependency>      <groupId>taglibs</groupId>      <artifactId>standard</artifactId>      <version>1.1.2</version>    </dependency>  </dependencies>
复制代码

2.2.3.2 在 jsp 中引入 jstl 标签库

即在第二行加入改代码,其中 prefix 代表前缀,一般为 c


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

2.2.3.3 例子

<%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><html><head>    <title>Title</title></head><body>    <%--if的使用--%>    <c:if test="${brands == 1}">        启动    </c:if>    <c:if test="${brands != 1}">        禁止    </c:if>    <%--forEach的使用:和for一样--%>    <c:forEach items="brands" var="brand">        <tr>            <%--此处的id和brandName 应该指的是get方法 后缀                会把id 变成 Id然后加上 get去找到这个方法                也就是其实是调用的get方法,这也符合封装的特性            --%>            <td>${brand.id}</td>            <td>${brand.brandName}</td>        </tr>    </c:forEach>    <%--forEach的第二种方式--%>    <%--        类似于        for(int i=1;i<5;i++)        {
} begin:开始 end:结束 step:步长 --%> <c:forEach begin="1" end="5" step="1" var="i"> <a>${i}</a> </c:forEach></body></html>
复制代码


用户头像

游坦之

关注

还未添加个人签名 2022-10-14 加入

还未添加个人简介

评论

发布
暂无评论
【JavaWeb】JSP学习笔记_javaWeb_游坦之_InfoQ写作社区