Java web(四):JSP

news2024/11/27 7:36:35

文章目录

  • 一、JSP
    • 1.1 概述
    • 1.2 JSP入门
    • 1.3 JSP脚本
    • 1.4 缺点
  • 二、EI表达式
  • 三、JSTL
    • 3.1 标签
    • 3.2 JSTL使用
    • 3.3 代码演示
  • 四、MVC模式和三层架构
  • 五、项目实战【完成增删改查】


一、JSP

1.1 概述

JSP(全称:Java Server Pages):Java 服务端页面。是一种动态的网页技术,其中既可以定义 HTML、JS、CSS等静态内
容,还可以定义 Java代码的动态内容,也就是 JSP = HTML + Java 。

1.2 JSP入门

第一步:导入依赖

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

第二步:在项目的 webapp 下创建jsp页面
第三步:创建编写JSP

1.3 JSP脚本

JSP 脚本有如下三个分类:
<%…%>:内容会直接放到_jspService()方法之中【Java代码】
<%=…%>:内容会放到out.print()中,作为out.print()的参数【变量】
<%!…%>:内容会放到_jspService()方法之外,被类直接包含【全局变量、函数】

1.4 缺点

由于 JSP页面内,既可以定义 HTML 标签,又可以定义 Java代码,造成了以下问题:

  1. 书写麻烦:特别是复杂的页面
  2. 既要写 HTML 标签,还要写 Java 代码
  3. 阅读麻烦
  4. 复杂度高:运行需要依赖于各种环境,JRE,JSP容器,JavaEE…
  5. 占内存和磁盘:JSP会自动生成.java和.class文件占磁盘,运行的是.class文件占内存
  6. 调试困难:出错后,需要找到自动生成的.java文件进行调试
  7. 不利于团队协作:前端人员不会 Java,后端人员不精 HTML
  8. 如果页面布局发生变化,前端工程师对静态页面进行修改,然后再交给后端工程师,由后端工程师再将该页面改为 JSP
    页面

由于上述的问题, JSP 已逐渐退出历史舞台,以后开发更多的是使用 HTML + Ajax 来替代。Ajax 是我们后续会重点学习的
技术。有个这个技术后,前端工程师负责前端页面开发,而后端工程师只负责前端代码开发。

二、EI表达式

EL(全称Expression Language )表达式语言,用于简化 JSP 页面内的 Java 代码。
EL 表达式的主要作用是 获取数据。其实就是从域对象中获取数据,然后将数据展示在页面上。
而 EL 表达式的语法也比较简单, e x p r e s s i o n 。例如: {expression} 。例如: expression。例如:{brands} 就是获取域中存储的 key 为 brands 的数据。
在这里插入图片描述
注意:.jsp文件 第一行要有isELIgnored=“false”,否则无法解析EI表达式
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false"%>

三、JSTL

3.1 标签

我们只对两个最常用的标签进行讲解, <c:forEach> 标签和 <c:if> 标签。
在这里插入图片描述

3.2 JSTL使用

JSTL 使用也是比较简单的,分为如下步骤:

  1. 导入坐标
<dependency>
	<groupId>jstl</groupId>
	<artifactId>jstl</artifactId>
	<version>1.2</version>
</dependency>
<dependency>
	<groupId>taglibs</groupId>
	<artifactId>standard</artifactId>
	<version>1.1.2</version>
</dependency>

  1. 在JSP页面上引入JSTL标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  1. 使用标签

3.3 代码演示

<c:if>标签

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<html>
<head>
    <title>Title</title>
</head>
<body>
    <c:if test="${status ==1}">
        启用
    </c:if>

    <c:if test="${status ==0}">
        禁用
    </c:if>
</body>
</html>

<c:forEach> 标签的两种使用方式

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="button" value="新增"><br>
<hr>
<table border="1" cellspacing="0" width="800">
    <tr>
        <th>序号</th>
        <th>品牌名称</th>
        <th>企业名称</th>
        <th>排序</th>
        <th>品牌介绍</th>
        <th>状态</th>
        <th>操作</th>

    </tr>


    <c:forEach items="${brands}" var="brand" varStatus="status">
        <tr align="center">
            <%--<td>${brand.id}</td>--%>
            <%--<td>${status.index}</td>--%><!--0开始-->
            <td>${status.count}</td><!--1开始-->
            <td>${brand.brandName}</td>
            <td>${brand.companyName}</td>
            <td>${brand.ordered}</td>
            <td>${brand.description}</td>
            <c:if test="${brand.status == 1}">
                <td>启用</td>
            </c:if>
            <c:if test="${brand.status != 1}">
                <td>禁用</td>
            </c:if>

            <td><a href="#">修改</a> <a href="#">删除</a></td>
        </tr>

    </c:forEach>




</table>


<hr>

<c:forEach begin="1" end="10" step="1" var="i">
    <a href="#">${i}</a>
</c:forEach>


</body>
</html>

四、MVC模式和三层架构

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

五、项目实战【完成增删改查】

注意点:

  1. 创建mapper.xml的目录时要用com/ss/mapper,而不能用com.ss.mapper
  2. 编写jsp文件时,第一行要加上isELIgnored=“false”,例如<%@ page contentType=“text/html;charset=UTF-8” language=“java” isELIgnored=“false” %>
  3. 复制别人代码时,注意修改import路径

项目目录结构
在这里插入图片描述
代码:
资源在文章顶部展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1166952.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【UE 材质】简单的闪闪发光材质

效果 节点 参考视频&#xff1a; https://www.bilibili.com/video/BV1uK411y737/?vd_source36a3e35639c44bb339f59760641390a8

自动化测试--验证邮件内容

场景 业务上有许多发送邮件的场景&#xff0c;发送的邮件基本上都是自动发送的&#xff0c;而且邮件内容是很重要的&#xff0c;对于邮件发没发送&#xff0c;发送的时间点对不对每次回归测试工作量太大了&#xff0c;所以考虑把这部分内容加入到自动化测试中 工具 python g…

精选8款UML图工具,闭眼入!

在现代软件开发领域&#xff0c;UML&#xff08;统一建模语言&#xff09;图是不可或缺的工具之一&#xff0c;用于可视化和通信复杂系统的结构和设计。然而&#xff0c;在选择合适的UML图工具时&#xff0c;你需要考虑多个因素&#xff0c;如项目规模、团队协作需求、功能复杂…

【Unity实战】最全面的库存系统(四)

文章目录 先来看看最终效果前言问题新增数据库,自动添加物品唯一ID物品配置唯一的ID替换原来的instanceID丢弃物品每次只丢弃一个物品问题完结先来看看最终效果 前言 本期紧跟着上期,继续来完善我们的库存系统,实现存储物品唯一ID和加载功能,丢弃物品功能 问题 instance…

【方法】如何解压ZIP格式压缩文件?

ZIP是一种常见的压缩文件格式&#xff0c;可以将一个或多个文件和文件夹打包成单个文件&#xff0c;以减少存储空间和传输时间。那想要读取压缩包里的文件&#xff0c;要如何解压呢&#xff1f; 压缩和解压压缩包&#xff0c;都需要用到解压缩软件&#xff0c;下面来分享一下3…

一键翻译,批量重命名,让文件夹名更贴心!

在日常生活和工作中&#xff0c;我们经常需要处理大量的文件夹。有时候&#xff0c;我们需要根据特定的需求对这些文件夹进行重命名。但是&#xff0c;手动重命名每个文件夹不仅耗时且容易出错。现在&#xff0c;我们的文件改名工具为你提供了一键翻译、批量重命名的便捷服务&a…

C语言调试技巧(debug)及程序运行时出现的问题

目录 一、什么是调试 1.介绍调试 2.Debug与Release 3.Debug与Release的对比 二、怎么调试 1.介绍几个调试快捷键 2.调试的时候查看程序当前信息 三、常见编程错误 1.编译型错误&#xff08;最简单&#xff09; 2.链接型错误 3.运行时错误&#xff08;最难&#xff0…

stm32F407系列控制板用户手册

stm32F407系列控制板用户手册 文章目录 stm32F407系列控制板用户手册1.外观和接口标注2.功能3.参数4.应用场景 1.外观和接口标注 2.功能 智能配网远程控制多路舵机接口多路电机接口姿态实时采集ps 接口oled屏OTA固件一键升级语音控制-需借助app语音识别功能预留can接口预留多个…

IPMI接口配置

1.IPMI接口和RJ45的网口外观上一样&#xff0c;一般主板上带有的IPMI接口会和网卡分开放置&#xff0c;具体区分还要看主板的Specification&#xff0c;下面红色部分的即为IPMI接口 2.找到IPMI接口后&#xff0c;我们要接上一根网线。然后开机进入BIOS&#xff0c;具体按那个…

请一个折腾了5个月AI绘画的人来讲讲GPU选择的经验,没入坑的看他这一篇就足够了

一个折腾了5个月AI绘画的人来讲讲经验&#xff0c;基本上入坑只需要看这一篇就可以了。 不说废话&#xff0c;首先&#xff0c;将显卡分成专业级和家用级。然后两个级别里面再各分高中低一共6档&#xff0c;我一档一档说&#xff0c;包括大家关心的移动版显卡以及显存升级问题…

备忘录在电脑里叫什么?Win10系统自带的备忘录在哪打开?

对于每天都需要使用电脑来办公的职场人士来说&#xff0c;能够随手在电脑桌面上记录工作笔记、常用工作资料、工作注意事项等内容是非常有必要的。但是如果想要实现在电脑上随手记录事情&#xff0c;就需要先找到一款类似于备忘录或便签软件那样的记事软件。 那么备忘录在电脑…

datagrip出现 java.net.ConnectException: Connection refused: connect.

出现这样的情况要看一下hadoop有没有启动 start-all.sh nohup /export/server/apache-hive-3.1.2-bin/bin/hive --service hiveserver2 & scp -r /export/server/apache-hive-3.1.2-bin/ node3:/export/server/ /export/server/apache-hive-3.1.2-bin/bin/hive show databa…

Linux - 安装Ubuntu虚拟机

1&#xff0c;安装VMware Workstation 16 Player&#xff0c;然后运行。 2&#xff0c;选择安装一个新的虚拟机和之后安装操作系统。 3&#xff0c;选择Linux Ubuntu 64-bit 4&#xff0c;填写虚拟机名字和存放的路径。 5&#xff0c;选择硬盘大小。 6&#xff0c;可以定制硬…

Appium 结合 TestNG 并行执行测试

Appium 测试框架可以让我们使用不同的编程语言&#xff08;Java、Python、Ruby、JavaScript&#xff09;测试不同移动端平台的应用&#xff08;Android、iOS&#xff09;&#xff0c;目前也是最火的移动端测试框架。这篇文章会带着大家学习到如何在不同设备中并行执行测试。 并…

Oracle数据库两表关联更新

先放结论 UPDATE 需要更新的表名 BSET B.更新字段1 更新内容1, B.更新字段2 更新内容2WHERE EXISTS (SELECT 1FROM 关联表名 AWHERE A.关联字段 B.关联字段AND A.筛选字段1 筛选字段1 AND A.筛选字段2 筛选字段2 AND B.筛选字段3 筛选字段3 );问题分析 需要写一个更新语…

凝聚伙伴力量,共赢产业未来—— 麒麟信安云展信创重庆站活动圆满召开

志合越山海&#xff0c;聚力共前行&#xff01;11月1日下午&#xff0c;麒麟信安云展信创重庆站圆满召开。 本次活动邀请业内专家、权威机构、行业客户、合作伙伴齐聚一堂&#xff0c;围绕产业新机遇、新挑战&#xff0c;产业政策及趋势等内容展开研讨交流&#xff0c;同时分享…

【SFM】《Structure-from-Motion Revisited》

论文 论文代码 资料 cvpr2017 COLMAP 文章目录 2. 本文贡献2.1 Scene Graph Augmentation 场景图增强2.2 Next Best View Selection下一个最佳视图选择2.3 鲁棒高效的三角化 2.4 BA&#xff08;Bundle Adjustment&#xff09;2.4.1 参数化求解方法2.4.2 过滤2.4.3 再三角化&…

企业大数据挖掘平台推荐

大数据挖掘平台适合哪些应用场景呢&#xff1f; 1、适合大型企业 分布式云计算&#xff0c;线性扩展&#xff0c;保证性能&#xff0c;与BI平台无缝整合&#xff0c;一键发布挖掘模型&#xff0c;模型库提高知识复用&#xff0c;减少重复投入&#xff0c;支持跨库…

当科技遇上神器:用Streamlit定制AI可视化问答界面

Streamlit是一个开源的Python库&#xff0c;利用Streamlit可以快速构建机器学习应用的用户界面。 本文主要探讨如何使用Streamlit构建大模型外部知识检索的AI问答可视化界面。 我们先构建了外部知识检索接口&#xff0c;然后让大模型根据检索返回的结果作为上下文来回答问题。…

UPS设备还只知道人工巡检?这个神器你一定要试试!

随着电子设备在我们的生活和工作中扮演越来越重要的角色&#xff0c;电力的可靠性变得至关重要。不间断电源系统作为一种关键设备&#xff0c;可以提供电力备份&#xff0c;以保障设备在电力中断或波动的情况下能够正常运行。然而&#xff0c;UPS设备的有效监控和管理对于确保其…