【JavaWeb】JSP学习笔记

news/2024/7/7 18:44:58

文章目录

  • 1 JSP
    • 1.1 什么是JSP
      • 1.1.1 JSP的发展历程
    • 1.2 JSP的快速入门
      • 1.2.1 引入依赖
      • 1.2.2 创建jsp文件
      • 1.2.3 编写JSP代码
    • 1.3 JSP脚本(很少用)
      • 1.3.1 JSP脚本的作用
      • 1.3.2 JSP脚本的分类
      • 1.3.3 JSP脚本的截断
    • 1.4 JSP的缺点
  • 2 EL和JSTL
    • 2.1 EL
      • 2.1.1 什么是EL
      • 2.1.2 Java Web 四大域对象
    • 2.2 JSTL
      • 2.2.1 什么是JSTL
      • 2.2.2 JSTL的常用标签
      • 2.2.3 JSTL的使用
        • 2.2.3.1 引入JSTL的依赖 JSTL和Standard
        • 2.2.3.2 在jsp中引入jstl标签库
        • 2.2.3.3 例子

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

image-20220913210031359

1.1.1 JSP的发展历程

image-20220913214156054

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下

image-20220913212043296

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>

image-20220913212238242

image-20220913212249287

1.3 JSP脚本(很少用)

1.3.1 JSP脚本的作用

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

1.3.2 JSP脚本的分类

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

样式作用
<% 代码 %>定义的java代码,在service方法中,service方法中可以定义什么,该脚本就可定义什么。
<%! 代码 %>定义的java代码,在jsp转换后的java类的成员位置。
<%=代码 %>定义的java代码,会输出到页面上,输出语句中可以定义什么,该脚本就可定义什么。

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的缺点

image-20220913213800184

基于上,所以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表达式获取数据,会依次用这四个域中寻找,直到找到为止,找到之后就不再寻找了,常用的是requestsession

image-20220913214648967

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

image-20220913215048129

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>


http://lihuaxi.xjx100.cn/news/3627.html

相关文章

Java筑基32-IO流02-节点流处理流

目录 节点流和处理流 1.处理流设计模式 2. IO流设计模式-装饰器模式模拟 3. BufferedReader & BufferedWriter 4. Buffered拷贝&#xff08;字符文件&#xff09; 5. Buffered字节处理流 6.Buffered拷贝&#xff08;字节文件&#xff09; 7.对象处理流 8.标准输入输…

ELK8.4安装配置错误记录

1. kibana启动报错&#xff0c;kibana_system用户认证 [2022-09-06T19:47:01.491-04:00][ERROR][elasticsearch-service] Unable to retrieve version information from Elasticsearch nodes. security_exception: [security_exception] Reason: unable to authenticate user …

9.13服务器技术第一次课记录

文章目录1.了解知识结构2. 认识服务器&#xff0c;什么是 服务器——高性能计算机3. 硬件构成和软件系统4. Linux操作系统优势5. 服务器与普通电脑的区别&#xff1f;6.服务器的分类&#xff08;功能 架构 外形&#xff09;架构分类&#xff1a;X86 架构 RISC 架构 EPIC架构外形…

golang操作zookeeper

文章目录golang操作zookeeper官方文档下载包连接到Server创建节点修改节点删除节点watch机制全局监听部分监听golang操作zookeeper 官方文档 https://pkg.go.dev/github.com/samuel/go-zookeeperv0.0.0-20201211165307-7117e9ea2414/zk下载包 go get github.com/samuel/go-z…

Flash Cache 过渡方案

Flash Cache的新特性就早已经被释放出来&#xff0c;该特性允许使用SSD硬盘作为Buffer Cache的二级缓存&#xff0c;以在磁盘和内存之间增加一级缓冲&#xff0c;提升数据访问性能。 以下是文档中的一些描述&#xff1a; A transparent extension of the database buffer cac…

研究:从网络估值看以太坊为何处于增长态势

世界上最大的可编程区块链以太坊将经历一场巨大的变革。以太坊网络将从能源密集型的工作量证明共识机制过渡到可持续的权益证明(PoS)共识机制。 此次升级被称为合并(The Merge)&#xff0c;是以太坊路线图中的第一项升级&#xff0c;将使该网络的基础设施经得起未来考验。对于…

Anaconda常用命令

文章目录文章链接管理Anaconda检查anaconda版本升级anaconda版本管理conda环境查看conda环境清单进入某个conda环境退出某个conda环境全新创建conda环境指定存放路径创建conda环境克隆创建conda环境删除某个conda环境导出环境的库信息到配置文件通过导入的方式创建conda环境管理…

可能是最全的:虚拟机使用失败解决方案汇总

目录 前言 简单说说 1、安装时报错/安装后无法启用虚拟机 如何解决 方法一&#xff1a;移除Hype-V,成功率&#xff1a;40% 方法二&#xff1a;安装WHP&#xff0c;成功率&#xff1a;99% 方法三&#xff1a;恢复出厂设置&#xff0c;成功率&#xff1a;100% VBX&#xff…