Servlet的book图书表格实现(使用原生js实现)

作业内容:

1 建立一个book.html,实现图书入库提交

整体参考效果如下:

 数据提交后,以窗口弹出数据结果,如:

     

2  使用正则表达式验证ISBN为x-x-x格式,图书名不低于2个字符,作者不能为空,单价在【10-100】之间

3 使用ajax技术(原生js的ajax或jquery的ajax都行)。后台接收url为“bookreg“,接收前端所有数据,并拼凑成一个SQL的insert命令操作串。后端处理完数据后,向前端返回一个“新书注册成功”并在前端一个文本标签中输出。

4 说明:整个过程标准化,模块化,尽量通用化。

  Word作业中要附上完整的代码,并加以适当注释说明,每一步运行结果要截图保存。

解答过程:
HTML部分:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Book.html</title>
    <style>
    table {
    width: 28%;
    margin: 0px auto; /* 让表格水平居中 */
    border-collapse: collapse;
    line-height: 35px;
    }
    th, td {
        border: 1px solid black;
        padding: 8px;
        text-align: left; /* 内容居中 */
    }
    #topic{
        text-align: center;
        font-size: 35px;
        
    }
    #change_web_color{
        font-size: 20px;
    }
    .sub{
        margin: 65% 50% ;
    }
    </style>
    <script src="JS/book.js"></script>
    <script src="JS/jquery-3.2.1.min.js"></script>
</head>
<body>
    <div>
        <form action="BookReg" name="bookForm" id="bookForm1" method="post" enctype="application/x-www-form-urlencoded">
            <h2 id="topic">图书入库</h2>
            <div><button id="change_web_color">改变网页颜色</button></div>
         <table>
        <tr>
            <td>ISBN:</td>
            <td><input type="text" name="ISBN" id="ISBN" required>&nbsp;*必填</td>
        </tr>
        <tr>
            <td>图书名:</td>
            <td><input type="text" name="bookName" id="bookName" required>&nbsp;*必填</td>  
        </tr>
        <tr>
            <td>作者:</td>
            <td><input type="text" name="writer" id="writer"></td>   
        </tr>
        <tr>
            <td>类别:</td>
            <td><select name="type" id="type">
                <option value="理工科">理工科</option>
                <option value="文科">文科</option>
            </select></td>
        </tr>
        <tr>
            <td>是否贷款:</td>
            <td><label for=""><input type="radio" name="loan" id="loan_Y">是</label><label for=""><input type="radio" name="loan" id="loan_N">否</label></td>
        </tr>
        <tr>
            <td>出版社:</td>
            <td><input type="text" name="press" id="press"></td> 
        </tr>
        <tr>
            <td>出版日期:</td>
            <td><input type="date" name="brith" id="brith"></td>
        </tr>
        <tr>
            <td>版次:</td>
            <td><input type="text" name="edNum" id="edNum"><input type="range" id="range" name="range"></td>     
        </tr>
        <tr>
            <td>单价:</td>
            <td><input type="text" name="money" id="money">元</td>
        </tr>
        <tr>
            <td>图书介绍:</td>
            <td><textarea name="introduction" id="introduction" cols="30" rows="10"></textarea></td>     
        </tr>
        <tr>
            <td class="sub" id="submitBtn" onclick="check()"><button>提交</button></td>
            <td class="sub"><button>取消</button></td>
        </tr>
        </table>
        </form>
    </div>
</body>

</html>

JS部分:

function check() {
    // 检验ISBN
    var isbn = document.getElementById('ISBN').value.trim();
    var isbnRegex = /^\d{1}-\d{1}-\d{1}$/;
    if (!isbnRegex.test(isbn)) {
        alert("ISBN格式不正确,请输入x-x-x格式的ISBN");
        document.getElementById('ISBN').value = "";
        document.getElementById('ISBN').focus();
        return false;
        // 如果 ISBN 格式不正确,直接返回,不再执行后续逻辑
    }

    // 检验图书名字
    var bookName = document.getElementById('bookName').value.trim();
    if (bookName.length <= 2) {
        alert("书名不能小于2个字符,书名输入错误!");
        document.getElementById('bookName').value = "";
        document.getElementById('bookName').focus();
        return false;
    }

    // 检验作者名
    var author = document.getElementById('writer').value.trim();
    if (author.length == 0) {
        alert("作者名不能为空!请重新输入!");
        document.getElementById('writer').value = "";
        return false;
    }

    // 判断单价
    var price = parseFloat(document.getElementById('money').value);
    if (price <= 10 || price >= 100) {
        alert("单价要处于【10-100】之间!");
        return false;
    }

    // 获取表单数据
    let formData = {
        ISBN: isbn,
        bookName: bookName,
        // 其他表单数据可以依次添加
        writer: author,
        type: document.getElementById('type').value,
        loan: document.querySelector('input[name="loan"]:checked').value,
        press: document.getElementById('press').value,
        brith: document.getElementById('brith').value,
        edNum: document.getElementById('edNum').value,
        money: price,
        introducation: document.getElementById('introduction').value
    };

    // 转换为 JSON 格式
    let jsonData = JSON.stringify(formData, null, 2);

    // 弹出显示
    alert(jsonData);
}

Servlet部分:

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class BookReg
 */
@WebServlet("/BookReg")
public class BookReg extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public BookReg() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;Charset=UTF-8");
		
		//表的信息
		String ISBN = request.getParameter("ISBN").trim();//ISBN
		String bookName = request.getParameter("bookName").trim();//bookName
		String writer = request.getParameter("writer").trim();//writer
		String type = request.getParameter("type").trim();//type
		//String loan = request.getParameter("loan").trim();//loan
		String loan = "";
		if("on".equals(request.getParameter("loan"))) {
		    loan = "是";
		} else {
		    loan = "否";
		}

		String press = request.getParameter("press").trim();//press
		String brith = request.getParameter("brith").trim();//brith
		String edNum = request.getParameter("edNum").trim();//edNum
		String money = request.getParameter("money").trim();//money
		String introduction = request.getParameter("introduction").trim();//introduction
		
		//这个Java的servlet里的输出
		System.out.println("ISBN:"+ISBN);
		System.out.println("BookName:"+bookName);
		System.out.println("writer:"+writer);
		System.out.println("type:"+type);
		System.out.println("loan:"+loan);
		System.out.println("press:"+press);
		System.out.println("brith:"+brith);
		System.out.println("edNum:"+edNum);
		System.out.println("money:"+money);
		System.out.println("introduction:"+introduction);
		
		
		String sqlString = "insert xxx";
	    PrintWriter out0 = response.getWriter();
	    out0.write("新书注册成功");
	    System.out.println("好:前后端交互成功:sql语句为:" + sqlString);
	    out0.flush();
	    out0.close();
	}

}

其他的记得看哦哦!

关注我!爱吃鸡爪zi!!! 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【解读】区块链和分布式记账技术标准体系建设指南

大家好&#xff0c;这里是苏泽。一个从业Java后端的区块链技术爱好者。 今天带大家来解读这份三部门印发的行业建设指南《区块链和分布式记账技术标准体系建设指南》 原文件可查看P020240112840724196854.pdf (www.gov.cn) 以下是个人解读&#xff0c;如有纰漏请指正&#xff…

无人机手持地面站软件功能详解,无人机手持地面站软件开发人员组成及成本分析

无人机手持地面站软件是专为无人机操控和任务管理设计的移动应用&#xff0c;它通常集成在智能手机、平板电脑或其他便携式设备上&#xff0c;使得用户可以在远离无人机的地方对飞行器进行实时监控与远程控制。 主要功能详解&#xff1a; 1. 飞行控制与姿态显示&#xff1a; …

深度学习:生成模型的创新应用与未来展望,引领科技新潮流!

在人工智能的浪潮中&#xff0c;深度学习正以其强大的学习和表示能力&#xff0c;不断推动着各个领域的进步。其中&#xff0c;深度学习在生成模型中的应用尤为引人注目&#xff0c;它不仅为我们提供了生成全新、类似数据的能力&#xff0c;更为多个领域带来了革命性的变革。 …

经典的神经网络#1 Lenet

经典的神经网络#1 Lenet 关注B站查看更多手把手教学&#xff1a; 肆十二-的个人空间-肆十二-个人主页-哔哩哔哩视频 (bilibili.com) 网络结构介绍 LeNet的论文地址为&#xff1a;http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf。这篇论文名为《Gradient-Based Learnin…

Gitlab CICD 下载artifacts文件并用allure打开,或bat文件打开

allure命令行打开aritfacts报告 首先下载allure.zip&#xff0c;并解压 配置环境变量 使用命令行打开allure文件夹 allure open 2024-03-11-14-54-40 2024-03-11-14-54-40 包含index.html Bat文件打开artifacts There are 2 html reports in the download artifacts.zip S…

SpringMVC | SpringMVC中的 “数据绑定”

目录: “数据绑定” 介绍1.简单数据绑定 :绑定 “默认数据” 类型绑定 “简单数据类型” 类型 &#xff08;绑定Java“基本数据类型”&#xff09;绑定 “POJO类型”绑定 “包装 POJO”“自定义数据” 绑定 :Converter (自定义转换器) 作者简介 &#xff1a;一只大皮卡丘&#…

数组名结合指针的面试题的讲解

笔试题 第一题&#xff1a; 已知条件&#xff1a; 已知p为结构体指针变量&#xff0c;值为0x100000&#xff0c;并且结构体的大小为20字节&#xff0c;并且打印格式均为%p&#xff0c;%p不会在乎正负数&#xff0c;它会以补码的形式直接打印&#xff0c;0x1为16进制的1。 第一问…

java使用anyMatch判断自定义值是否在HashMap数组中

java使用anyMatch判断自定义值是否在HashMap数组中 一、代码 一、代码 Testvoid test() {List<Map<String, Object>> list new ArrayList<>();Map<String, Object> map1 new HashMap<>();map1.put("key1", "value1");map1…

文献阅读笔记:全卷积神经网络

文献阅读笔记&#xff1a;全卷积神经网络 摘要Abstract1. 全卷积神经网络1.1 文献摘要1.2 全卷积神经网络1.2.1 网络结构1.2.0 从分类器到密集 FCN1.2.2 上采样 Upsampling1.2.3 跳级结构1.2.4 FCN训练 1.3 实验1.4 总结 2. 代码实现 摘要 本周学习了全卷积神经网络&#xff0…

嵌入式面经-ARM体系架构-计算机基础

嵌入式系统分层 操作系统的作用&#xff1a;向下管理硬件&#xff0c;向上提供接口&#xff08;API&#xff09; 应用开发&#xff1a;使用操作系统提供的接口&#xff08;API&#xff09;&#xff0c;做上层的应用程序开发&#xff0c;基本不用去关内核操作硬件是怎么实现的 …

数字电子技术笔记——组合逻辑功能

1.Adder&#xff08;加法器&#xff09; Half-Adder&#xff08;半加器&#xff09; Full-Adder&#xff08;全加器&#xff09; 74LS283(4-bit parallel adders) carry look-ahead adder &#xff08;超前进位加法器&#xff09; 2.Comparator&#xff08;比较器&#xff09;…

hadoop报错:HADOOP_HOME and hadoop.home.dir are unset. 解决方法

参考&#xff1a;https://blog.csdn.net/weixin_45735242/article/details/120579387 解决方法 1.下载apache-hadoop-3.1.0-winutils-master 官网下载地址&#xff1a; https://github.com/s911415/apache-hadoop-3.1.0-winutils win配置系统环境&#xff1a; 然后重启idea…

【golang】28、用 httptest 做 web server 的 controller 的单测

文章目录 一、构建 HTTP server1.1 model.go1.2 server.go1.3 curl 验证 server 功能1.3.1 新建1.3.2 查询1.3.3 更新1.3.4 删除 二、httptest 测试2.1 完整示例2.2 实现逻辑2.3 其他示例2.4 用 TestMain 避免重复的测试代码2.5 gin 框架的 httptest 一、构建 HTTP server 1.1…

[密码学]Base64编码

一、相关指令 1. 查看工具版本号 base64 --version2. 对字符串加密 echo 字符串 | base64 echo "Hello base64" | base643. 对字符串解密 echo 字符串 |base64 -d echo "SGVsbG8gTGV0aWFuLVJTQQo" | base64 -d4. 对文件加密 base64 文件名 base64 tex…

Linux Centos系统 磁盘分区和文件系统管理 (深入理解)

CSDN 成就一亿技术人&#xff01; 作者主页&#xff1a;点击&#xff01; Linux专栏&#xff1a;点击&#xff01; CSDN 成就一亿技术人&#xff01; 前言———— 磁盘 在Linux系统中&#xff0c;磁盘是一种用于存储数据的物理设备&#xff0c;可以是传统的硬盘驱动器&am…

个人商城系统开源(配置支付宝支付!)

原文地址&#xff1a;个人商城系统开源&#xff08;配置支付宝支付&#xff01;&#xff09; - Pleasure的博客 下面是正文内容&#xff1a; 前言 由于近期实在没有什么话题可写和一些有趣的项目教程可以分享。所以我只能决定将我自己亲手编写的一个迷你迷你商城系统进行开源…

HYBBS 表白墙网站PHP程序源码,支持封装成APP

PHP表白墙网站源码&#xff0c;适用于校园内或校区间使用&#xff0c;同时支持封装成APP。告别使用QQ空间的表白墙。 简单安装&#xff0c;只需PHP版本5.6以上即可。 通过上传程序进行安装&#xff0c;并设置账号密码&#xff0c;登录后台后切换模板&#xff0c;适配手机和PC…

软考 系统架构设计师之回归及知识点回顾(6)

接前一篇文章&#xff1a;软考 系统架构设计师之回归及知识点回顾&#xff08;5&#xff09; 10. 边缘计算 边云协同 边缘计算与云计算各有所长&#xff0c;云计算擅长全局性、非实时、长周期的大数据处理与分析&#xff0c;能够在长周期维护、业务决策支撑等领域发挥优势&…

【汇编】#4 8086与转移地址有关有关的寻址方式

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、CS与IP功能tips&#xff1a;CS、IP复位值 二、修改CS与IP的指令1. jmp指令 三、与转移地址有关的寻址方式1、段内转移1.1 段内直接寻址1.2 段内间接寻址 2. 段间…

RK3588-PCIe

1. 简介 PCIe&#xff08;Peripheral Component Interconnect Express&#xff09;是一种用于连接主板和外部设备的高速串行接口标准。它是 PCI 技术的后继者&#xff0c;旨在提供更高的带宽和更好的性能。 高速传输&#xff1a; PCIe接口提供了高速的数据传输通道&#xff0…