GDPU JavaWeb EL与JSTL

标签化,可以简化百分号的繁忙。

标签库配置 

先下载好jstl标签库,然后放到lib。接着,要让编译器识别到,因此要在模块配置依赖,这里导jar包都得注意一下模块依赖。

 

也可以在libraries项目库设置。 

EL与JSTL查询图书

在数据库Book中建立表Tbook,包含图书ID,图书名称,图书价格。实现在bookQuery.jsp页面中模糊查询图书,如果图书的价格在50元以上,则以黄色字体显示书名。相应的模糊查询放在Servlet中实现,bookQuery.jsp页面中图书的显示代码注意使用JSTL。

这里主要用了mvc框架、数据库访问与模糊查询、EL与JSTL标签的使用。

package Beans;public class Book {private int bookId;private String bookName;private double bookPrice;public Book(int bookId, String bookName, double bookPrice) {this.bookId = bookId;this.bookName = bookName;this.bookPrice = bookPrice;}public int getBookId() {return bookId;}public void setBookId(int bookId) {this.bookId = bookId;}public String getBookName() {return bookName;}public void setBookName(String bookName) {this.bookName = bookName;}public double getBookPrice() {return bookPrice;}public void setBookPrice(double bookPrice) {this.bookPrice = bookPrice;}}
package Dao;import Beans.Book;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;public class BookDao {private static final String URL = "jdbc:mysql://localhost:3306/dbjsp?serverTimezone=UTC";private static final String USERNAME = "root";private static final String PASSWORD = "123456";public List<Book> searchBooks(String s) {List<Book> books = new ArrayList<>();//查询的书可能有多个,用arraylist集try {Class.forName("com.mysql.cj.jdbc.Driver");} catch (ClassNotFoundException e) {e.printStackTrace();}Connection conn = null;PreparedStatement statement = null;ResultSet rs = null;try {conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);String sql = "SELECT * FROM book WHERE Name LIKE ?";statement = conn.prepareStatement(sql);statement.setString(1, "%" + s + "%");rs = statement.executeQuery();while (rs.next()) {int bookId = rs.getInt("Id");String bookName = rs.getString("Name");double bookPrice = rs.getDouble("Price");books.add(new Book(bookId, bookName, bookPrice));}} catch (SQLException e) {e.printStackTrace();} finally {try {if (rs != null) {rs.close();}if (statement != null) {statement.close();}if (conn != null) {conn.close();}} catch (SQLException e) {e.printStackTrace();}}return books;}
}
package Servlet;import Beans.Book;
import Dao.BookDao;import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@WebServlet("/BookQuery")
public class BookQuery extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String searchKeyword = request.getParameter("keyword");BookDao bookDAO = new BookDao();List<Book> books = bookDAO.searchBooks(searchKeyword);//实现模糊查询request.setAttribute("books", books);request.getRequestDispatcher("bookQuery.jsp").forward(request, response);}
}
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>Book Query</title>
</head>
<style>table {width: 230px;}th, td,tr{border: none; /* 清除内部表格的边框 */}caption {font-weight: bold;}
</style>
<body><form action="BookQuery" method="post"><label for="keyword">请输入图书信息的模糊图书名称:</label><input type="text" id="keyword" name="keyword"><input type="submit" value="查询">
</form>
<br>
<table border="3px"><caption >图书列表</caption><tr><th>图书名称</th><th>图书价格</th></tr><c:forEach items="${books}" var="book"><tr><td <c:if test="${book.bookPrice > 50}">style="color: yellow"</c:if>>${book.bookName}</td><td>${book.bookPrice}</td></tr></c:forEach></table>
</body>
</html>

 

实验心得

过不去的是回想与停留。 

 

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

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

相关文章

2024华为OD机试真题-攀登者1-C++(C卷D卷)

题目描述 攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。 地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。 其中数组元素0代表地面。 例如: [0,1,2,4,3,1,0,0,1,2,3,1,2,1,0],代表如下图所示的地图, 地图中有两个山脉位置分别为1,2,3,4,5 …

设计模式(十)结构型模式---享元模式

文章目录 享元模式简介结构UML图具体实现UML图代码实现 享元模式简介 享元模式&#xff08;fly weight pattern&#xff09;主要是通过共享对象来减少系统中对象的数量&#xff0c;其本质就是缓存共享对象&#xff0c;降低内存消耗。享元模式将需要重复使用的对象分为两个状态…

大学生Python自救课程总结

因为一些事情的缘故&#xff0c;我已经几乎没有更新很久了&#xff0c;然后现在快到期末了&#xff0c;不知道各位学习python的同志们慌不慌【坏笑】。 本学期&#xff0c;我只是简单的讲了讲python的基础用法。当然&#xff0c;可能有些地方总结的并不全面&#xff0c;很多知…

面试高频问题----2

一、进程、线程、协程有什么区别&#xff1f; 1.进程&#xff1a;进程是操作系统中独立运行的程序实例&#xff0c;每个进程都有自己的内存空间和系统资源&#xff1b;进程之间相互独立&#xff0c;每个进程有自己的内存地址空间&#xff0c;一个进程无法直接访问另一个进程的…

MyBatis中的接口代理机制及其使用

1. MyBatis中的接口代理机制及其使用 文章目录 1. MyBatis中的接口代理机制及其使用2. 实操2.1 准备工作2.2 insert 增加操作2.3 delete 删除操作2.4 update 修改操作2.5 select 查询一条记录操作2.6 select 查询多条记录操作 3. 总结&#xff1a;4. 最后&#xff1a; MyBatis …

基于状态空间模型的预测控制

1、状态空间模型 线性离散时间系统的状态空间模型如下&#xff1a; x ( k 1 ) A x ( k ) B u u ( k ) B d d ( k ) y c ( k ) C c x ( k ) (1) \begin{aligned} &x(k1)Ax(k)B_uu(k)B_dd(k)\\[1ex] &y_c(k)C_cx(k)\tag{1} \end{aligned} ​x(k1)Ax(k)Bu​u(k)Bd​…

HackTheBox-Machines--Nineveh

Nineveh测试过程 1 信息收集 NMAP 端口扫描 80 端口 80端口是服务器的默认页面&#xff0c;无可利用功能点&#xff0c;源代码没有可利用的敏感信息 目录扫描 1.http://10.129.25.123/department 访问/department目录跳转到登录页面&#xff0c;尝试暴力破解&#xff0c;获取…

Java——标识符

一、标识符介绍 1、什么是标识符 标识符&#xff08;Identifier&#xff09;是Java编程语言中用于命名变量、方法、类、包、常量及其他用户定义项目的名称。简单的说就是只要是可以自定义命名的地方就是标识符。 2、标识符的命名规则 在Java中&#xff0c;标识符的命名必须…

嵌入式期末复习

一、选择题&#xff08;20&#xff09; 二、判断题&#xff08;10&#xff09; 三、填空题&#xff08;10&#xff09; 主机-目标机的文件传输方式主要有串口传输方式、网络传输方式、USB接口传输方式、JTAG接口传输方式、移动存储设备方式。常用的远程调试技术主要有 插桩/st…

NVIDIA NeMo - 训练本地化多语种 LLM

本文转载自&#xff1a;使用 NVIDIA NeMo 训练本地化多语种 LLM &#xff08;2024年 5月 17日 By Nicole Luo and Amit Bleiweiss 第 1 部分 https://developer.nvidia.com/zh-cn/blog/training-localized-multilingual-llms-with-nvidia-nemo-part-1/ 第 2 部分 https://deve…

SourceTree配置

SourceTree跳过注册方法跳过注册页 2.SourceTree分体暂存视图 配置(暂存才会生效) 3.SourceTree提交信息描述模版配置 备注&#xff1a; SourceTree核心GUI操作直观 Atlassian 提交信息描述模版配置&#xff1a; #应集团要求&#xff1a;所有需要发布的应用都需要按照以下的…

cocos入门1:简介

Cocos是一款由厦门雅基软件有限公司推出的数字内容开发一站式解决方案&#xff0c;它具备开源、免费、轻量、高性能等特点&#xff0c;为全球范围内的开发者提供服务。以下是对Cocos的详细介绍及教程概括&#xff1a; Cocos的基本介绍 产品背景&#xff1a;Cocos成立于2010年…

Cocos入门2:软件安装

Cocos Creator的安装教程如下&#xff0c;按照步骤进行&#xff0c;可以帮助您顺利安装Cocos Creator&#xff1a; 一、下载Cocos Dashboard 访问Cocos官网&#xff1a;前往Cocos Creator的官方网站&#xff08;https://www.cocos.com/creator/&#xff09;。 下载Cocos Dash…

【架构艺术】代码架构治理之四层境界

最近逐渐开始写一些简单且稍微务虚的文章。原因有挺多&#xff0c;其一是&#xff0c;自己的工作内容和企业的内部情况绑定的更加深入了&#xff0c;许多信息如果要在互联网上分享&#xff0c;需要考虑在很多地方做加工&#xff1b;其二是&#xff0c;过分拘泥于非常深度的技术…

重生之 SpringBoot3 入门保姆级学习(14、内容协商基础简介)

重生之 SpringBoot3 入门保姆级学习&#xff08;14、内容协商基础简介&#xff09; 3.3 内容协商3.3.1 基础简介3.3.2 演示效果 3.3 内容协商 3.3.1 基础简介 默认规则 基于请求头的内容协商&#xff08;默认开启&#xff09; 客户端向服务器发送请求&#xff0c;携带 HTTP 标…

GraphQL(1):GraphQL简介

1 GraphQL介绍 GraphQL是Facebook开发的一种数据查询语言&#xff0c;并于2015年公开发布。它是RESTAPI的替代品。 GraphQL 既是一种用于 API的查询语言也是一个满足你数据查询的运行时。 GraphQL对你的 API中的数据提供了一套易于理解的完整描述&#xff0c;使得客户端能够准…

20240601使用iperf3在Toybrick的TB-RK3588开发板上跑预编译的Android12测网速

20240601使用iperf3在Toybrick的TB-RK3588开发板上跑预编译的Android12测网速 2024/6/1 20:39 【常见问题】给TB-RK3588开发板刷机Androidd12之后&#xff0c;如果刷机线type-C不拔掉。可能起不来&#xff01; 搞得我都以为板子坏了呢&#xff01; rootrootrootroot-ThinkBook-…

Linux|Linux系统的exec函数族浅浅解析

exec 函数族是 Linux 和其他类 Unix 操作系统中的一组系统调用&#xff0c;用于在当前进程的上下文中执行新的程序。这些函数包括 execl, execle, execlp, execv, execve, execvp 和 execvpe 等。使用这些函数可以替换当前进程的地址空间&#xff0c;使其执行一个新的程序。 基…

Linux[高级管理]——使用源码包编译安装Apache网站

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f468;‍&#x1f4bb;Linux高级管理专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年5月31日14点20分 &#x1f004;️文章质量&#xff1a;96分 在Linux系统上编译和安装Apache HTTP Server是…

Kubernetes 安全指南:从审计到备份的全面防护

▲ 点击上方"DevOps和k8s全栈技术"关注公众号 Kubernetes&#xff08;K8s&#xff09;作为现代容器编排的领先平台&#xff0c;其在提升应用部署和管理效率方面表现出色。然而&#xff0c;随着其应用的广泛普及&#xff0c;Kubernetes的安全性也成为了大家关注的重点…